From 45e79d5401a6337b9b500e0f36358bb1e0ce92c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A2=D0=B8=D0=BC=D1=83=D1=80=20=D0=93=D0=BE=D1=80=D0=BE?= =?UTF-8?q?=D0=B4=D0=B5=D1=86=D0=BA=D0=B8=D0=B9?= Date: Fri, 25 Sep 2026 17:08:29 +0500 Subject: [PATCH] =?UTF-8?q?fix:=20=D0=B2=20=D0=BF=D1=80=D0=B8=D1=91=D0=BC?= =?UTF-8?q?=D0=B5=20=D0=BC=D0=BE=D0=B6=D0=BD=D0=BE=20=D0=B2=D1=8B=D0=B1?= =?UTF-8?q?=D1=80=D0=B0=D1=82=D1=8C=20=D0=BF=D0=BE=D0=B4=D0=B1=D0=BE=D1=80?= =?UTF-8?q?=20=D0=B2=20=D1=81=D1=82=D0=B0=D1=82=D1=83=D1=81=D0=B5=20=C2=AB?= =?UTF-8?q?=D0=92=D1=8B=D0=BF=D0=BE=D0=BB=D0=BD=D0=B5=D0=BD=D0=B8=D0=B5?= =?UTF-8?q?=C2=BB=20=D0=B8=20=C2=AB=D0=97=D0=B0=D0=BA=D1=80=D1=8B=D1=82?= =?UTF-8?q?=D0=B0=C2=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit После согласования подбор сразу уходит в «Выполнение», поэтому фильтр только по «Согласовано» почти всегда давал пустой список. Теперь берутся все утверждённые статусы, как в isApprovedStatus. Co-Authored-By: Claude Opus 5.5 (1M context) --- .../requestPortal/forms/RecruitingHire/README.md | 2 +- .../RecruitingHire/sections/SelectionRequestField.tsx | 2 +- .../forms/RecruitingHire/selectionLookup.ts | 9 ++++++--- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/webparts/requestPortal/forms/RecruitingHire/README.md b/src/webparts/requestPortal/forms/RecruitingHire/README.md index b87e505..11336a2 100644 --- a/src/webparts/requestPortal/forms/RecruitingHire/README.md +++ b/src/webparts/requestPortal/forms/RecruitingHire/README.md @@ -28,7 +28,7 @@ заявки кнопка «Организация рабочего места на основе этой» открывает форму it-workplace-setup с префиллом (rpsource = id этой заявки). - **Связь с «Заявкой на подбор» (SelectionRequest\*)** — необязательное поле в - секции «Заявка»: поиск-выбор согласованной заявки на подбор (`SelectionRequestField` + секции «Заявка»: поиск-выбор утверждённой (Согласовано / Выполнение / Закрыта) заявки на подбор (`SelectionRequestField` + `selectionLookup.ts`, только статус «Согласовано», ищет по всем партициям серии). Связь хранится тройкой полей `SelectionRequestId` / `SelectionRequestListId` / `SelectionRequestCode`, а НЕ нативным Lookup — списки партиционированы. В форме diff --git a/src/webparts/requestPortal/forms/RecruitingHire/sections/SelectionRequestField.tsx b/src/webparts/requestPortal/forms/RecruitingHire/sections/SelectionRequestField.tsx index 3f94329..1c3ac1b 100644 --- a/src/webparts/requestPortal/forms/RecruitingHire/sections/SelectionRequestField.tsx +++ b/src/webparts/requestPortal/forms/RecruitingHire/sections/SelectionRequestField.tsx @@ -210,7 +210,7 @@ export const SelectionRequestField: React.FC = ({ d )) ) : (
- {loaded ? 'Нет согласованных заявок на подбор.' : 'Загрузка…'} + {loaded ? 'Нет утверждённых заявок на подбор.' : 'Загрузка…'}
)} diff --git a/src/webparts/requestPortal/forms/RecruitingHire/selectionLookup.ts b/src/webparts/requestPortal/forms/RecruitingHire/selectionLookup.ts index 87bcda1..2b2389e 100644 --- a/src/webparts/requestPortal/forms/RecruitingHire/selectionLookup.ts +++ b/src/webparts/requestPortal/forms/RecruitingHire/selectionLookup.ts @@ -28,8 +28,11 @@ export interface ISelectionRequestOption { title: string; } -// Только согласованные заявки на подбор: приём оформляют по уже утверждённому подбору. -const APPROVED_FILTER = `RequestStatus eq '${REQUEST_STATUS.approved}'`; +// Только утверждённые заявки на подбор: приём оформляют по уже утверждённому подбору. +// После согласования подбор уходит исполнителю («Выполнение»), затем «Закрыта» — +// это тот же утверждённый подбор, поэтому берём все три статуса (как isApprovedStatus). +const APPROVED_STATUSES: string[] = [REQUEST_STATUS.approved, REQUEST_STATUS.execution, REQUEST_STATUS.closed]; +const APPROVED_FILTER = APPROVED_STATUSES.map((s) => `RequestStatus eq '${s}'`).join(' or '); // Предохранитель: партиция всё равно ограничена порогом элементов, но берём // разумный потолок, чтобы одиночный запрос не тянул весь список целиком. @@ -64,7 +67,7 @@ async function queryPartition(list: IListLike, listId: string): Promise