fix: редактор маршрута может удалять исполнителей в Обходном листе, Командировке и заявке в 1С

В этих формах матрице исполнителей (а в Командировке и 1С — и согласующих)
не передавалось право удаления, хотя в остальных формах оно есть через
composeRemoveRowRule.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
gorbenko.pavel
2026-10-14 14:12:46 +05:00
parent e38156fd1c
commit fd3750a769
3 changed files with 14 additions and 3 deletions
@@ -27,8 +27,10 @@ import {
IApproverToWrite,
IUseMatrixEditor,
unassignedStepMessage,
resolveWriteListId
resolveWriteListId,
composeRemoveRowRule
} from '../../shared/approval';
import { effectiveUserEmail } from '../../shared/impersonation';
import { IRequestFormProps } from '../../models/types';
import { friendlyErrorMessage } from '../../shared/diagnostics';
import {
@@ -244,7 +246,11 @@ const BusinessTripForm: React.FC<IRequestFormProps> = ({
<ObligationSection {...sectionProps} />
</FormModeProvider>
<ApprovalMatrix editor={matrix} search={(q) => approval.searchUsers(q)} />
<ApprovalMatrix
editor={matrix}
search={(q) => approval.searchUsers(q)}
canRemoveRow={composeRemoveRowRule(effectiveUserEmail(context))}
/>
{!executors.loading && executors.rows.length > 0 && (
<ApprovalMatrix
@@ -253,6 +259,7 @@ const BusinessTripForm: React.FC<IRequestFormProps> = ({
title="Исполнение (после согласования)"
roleLabel="Исполнитель"
emptyText="Исполнители не заданы по маршруту."
canRemoveRow={composeRemoveRowRule(effectiveUserEmail(context))}
/>
)}
@@ -342,6 +342,7 @@ const ClearanceForm: React.FC<IRequestFormProps> = ({
title="Исполнение (после согласования)"
roleLabel="Исполнитель"
emptyText="Исполнители не заданы по маршруту."
canRemoveRow={composeRemoveRowRule(effectiveUserEmail(context))}
/>
)}
@@ -31,7 +31,8 @@ import {
isEditableStatus,
IApproverToWrite,
unassignedStepMessage,
executorsToWrite
executorsToWrite,
composeRemoveRowRule
} from '../../shared/approval';
import {
uploadAttachments,
@@ -444,6 +445,7 @@ const Ticket1CForm: React.FC<IRequestFormProps> = ({
<ApprovalMatrix
editor={matrixEditor}
search={(q) => approval.searchUsers(q)}
canRemoveRow={composeRemoveRowRule(effectiveUserEmail(context))}
// Пустой маршрут — штатная ситуация: для части видов работ согласование
// не нужно, заявка сразу уходит в Planner. Сбой загрузки маршрута
// показывается отдельно (matrix.error) и блокирует отправку.
@@ -457,6 +459,7 @@ const Ticket1CForm: React.FC<IRequestFormProps> = ({
title="Исполнение"
roleLabel="Исполнитель"
emptyText="Исполнители не назначены."
canRemoveRow={composeRemoveRowRule(effectiveUserEmail(context))}
/>
)}