feat: исполнение не печатается ни в одной форме

Исполнение — внутренняя работа после согласования, к печатному документу
заявки оно не относится: на печати остаётся только маршрут согласования.
Раньше так было лишь в отпусках, через ручную обёртку. Теперь у
ApprovalMatrix есть признак printable, ExecutorsMatrix всегда выключает
печать (и для будущих форм), а блоки «Исполнение», выведенные через
ApprovalMatrix напрямую, помечены явно. На экране ничего не меняется.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Тимур Городецкий
2026-10-29 12:51:50 +05:00
parent 0005bf0cbd
commit b77261079b
13 changed files with 26 additions and 12 deletions
@@ -156,6 +156,7 @@ const BusinessTripView: React.FC<IBusinessTripViewProps> = ({ context, itemId, f
{!executors.loading && executors.rows.length > 0 && (
<ApprovalMatrix
editor={executors}
printable={false}
search={searchUsers}
title="Исполнение"
roleLabel="Исполнитель"
@@ -315,6 +315,7 @@ const ClearanceView: React.FC<IClearanceViewProps> = ({ context, itemId, formKey
{!executors.loading && executors.rows.length > 0 && (
<ApprovalMatrix
editor={executors}
printable={false}
search={(q) => approval.searchUsers(q)}
title="Исполнение"
roleLabel="Исполнитель"
@@ -452,6 +452,7 @@ const RecruitingHireView: React.FC<IRecruitingHireViewProps> = ({ context, itemI
{!executors.loading && (executors.rows.length > 0 || canAddExecutor) && (
<ApprovalMatrix
editor={executors}
printable={false}
search={(q) => approval.searchUsers(q)}
title="Исполнение"
roleLabel="Исполнитель"
@@ -438,6 +438,7 @@ const RecruitingSelectionView: React.FC<IRecruitingSelectionViewProps> = ({ cont
{!executors.loading && (executors.rows.length > 0 || canAddExecutor) && (
<ApprovalMatrix
editor={executors}
printable={false}
search={(q) => approval.searchUsers(q)}
title="Исполнение"
roleLabel="Исполнитель"
@@ -234,6 +234,7 @@ const ReferralView: React.FC<IReferralViewProps> = ({ context, itemId, formKey,
{!executors.loading && executors.rows.length > 0 && (
<ApprovalMatrix
editor={executors}
printable={false}
search={(q) => approval.searchUsers(q)}
title="Исполнение"
roleLabel="Исполнитель"
@@ -11,7 +11,8 @@ interface ISkudRouteTablesProps {
/**
* Маршрут согласования + исполнение (если исполнители есть). Рисуется дважды:
* на экране под карточкой и внутри печатного блока под запиской — на печати
* таблица маршрута заменяет подпись сотрудника.
* таблица маршрута заменяет подпись сотрудника. Исполнение на печать не идёт
* (printable={false}), как во всех формах, — только согласование.
*/
export const SkudRouteTables: React.FC<ISkudRouteTablesProps> = ({ approvers, executors, search }) => {
const hasExecutors = !executors.loading && executors.rows.length > 0;
@@ -26,6 +27,7 @@ export const SkudRouteTables: React.FC<ISkudRouteTablesProps> = ({ approvers, ex
title="Исполнение"
roleLabel="Исполнитель"
emptyText="Исполнители не назначены."
printable={false}
/>
)}
</>
@@ -224,6 +224,7 @@ const Ticket1CView: React.FC<ITicket1CViewProps> = ({ context, itemId, formKey,
{!executors.loading && executors.rows.length > 0 && (
<ApprovalMatrix
editor={executors}
printable={false}
search={(q) => approval.searchUsers(q)}
title="Исполнение"
roleLabel="Исполнитель"
@@ -204,6 +204,7 @@ const TmcTransferView: React.FC<ITmcTransferViewProps> = ({ context, itemId, for
{!executors.loading && executors.rows.length > 0 && (
<ApprovalMatrix
editor={executors}
printable={false}
search={(q) => approval.searchUsers(q)}
title="Исполнение"
roleLabel="Исполнитель"
@@ -178,11 +178,8 @@ const UnpaidLeaveView: React.FC<IUnpaidLeaveViewProps> = ({ context, itemId, for
<ApprovalMatrix editor={approvers} search={(q) => approval.searchUsers(q)} />
{/* Исполнение — внутренняя работа кадров после согласования, к заявлению
сотрудника не относится: на печати только маршрут согласования. */}
<div className="rp-no-print">
<ExecutorsMatrix editor={executors} search={(q) => approval.searchUsers(q)} />
</div>
{/* Исполнение на печать не идёт — это делает сам ExecutorsMatrix (printable={false}). */}
<ExecutorsMatrix editor={executors} search={(q) => approval.searchUsers(q)} />
</div>
{/* Панель решения — ВНЕ печати и FormModeProvider (комментарий редактируемый). */}
@@ -236,11 +236,8 @@ const VacationView: React.FC<IVacationViewProps> = ({ context, itemId, formKey,
</FormCard>
<ApprovalMatrix editor={approvers} search={(q) => approval.searchUsers(q)} />
{/* Исполнение — внутренняя работа кадров после согласования, к заявлению
сотрудника не относится: на печати только маршрут согласования. */}
<div className="rp-no-print">
<ExecutorsMatrix editor={executors} search={(q) => approval.searchUsers(q)} />
</div>
{/* Исполнение на печать не идёт — это делает сам ExecutorsMatrix (printable={false}). */}
<ExecutorsMatrix editor={executors} search={(q) => approval.searchUsers(q)} />
</div>
{/* Панель решения — ВНЕ печати и FormModeProvider (комментарий редактируемый). */}
@@ -296,6 +296,7 @@ const WorkplaceSetupView: React.FC<IWorkplaceSetupViewProps> = ({ context, itemI
{!executors.loading && executors.rows.length > 0 && (
<ApprovalMatrix
editor={executors}
printable={false}
search={(q) => approval.searchUsers(q)}
title="Исполнение"
roleLabel="Исполнитель"