From 50bb3e230724012e329af0bb2ad0efa5613dc3d8 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: Wed, 7 Oct 2026 12:20:05 +0500 Subject: [PATCH] =?UTF-8?q?fix:=20=D0=BE=D1=80=D0=B3=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D0=B7=D0=B0=D1=86=D0=B8=D1=8F=20=D0=B2=20=D0=B7=D0=B0=D1=8F?= =?UTF-8?q?=D0=B2=D0=BA=D0=B5=20=D0=BD=D0=B0=20=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=87=D0=B5=D0=B5=20=D0=BC=D0=B5=D1=81=D1=82=D0=BE=20=D0=B1?= =?UTF-8?q?=D0=BE=D0=BB=D1=8C=D1=88=D0=B5=20=D0=BD=D0=B5=20=D0=BF=D1=80?= =?UTF-8?q?=D0=B5=D0=B4=D0=B7=D0=B0=D0=BF=D0=BE=D0=BB=D0=BD=D1=8F=D0=B5?= =?UTF-8?q?=D1=82=D1=81=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Подставлялась организация инициатора, а не нового сотрудника — её приходилось исправлять. Теперь поле пустое и выбирается вручную, обязательность сохранена. Co-Authored-By: Claude Opus 5.5 (1M context) --- .../WorkplaceSetup/WorkplaceSetupForm.tsx | 31 +------------------ .../forms/WorkplaceSetup/model.ts | 4 +-- 2 files changed, 3 insertions(+), 32 deletions(-) diff --git a/src/webparts/requestPortal/forms/WorkplaceSetup/WorkplaceSetupForm.tsx b/src/webparts/requestPortal/forms/WorkplaceSetup/WorkplaceSetupForm.tsx index 766497c..9e9003e 100644 --- a/src/webparts/requestPortal/forms/WorkplaceSetup/WorkplaceSetupForm.tsx +++ b/src/webparts/requestPortal/forms/WorkplaceSetup/WorkplaceSetupForm.tsx @@ -43,7 +43,6 @@ import { IAttachmentInfo } from '../../shared/attachments/attachments.service'; import { effectiveUserEmail } from '../../shared/impersonation'; -import { getEmployeeOrganizations, employeeCompanies } from '../../shared/dictionary'; import { friendlyErrorMessage } from '../../shared/diagnostics'; import { IRequestFormProps } from '../../models/types'; import { @@ -141,8 +140,7 @@ const WorkplaceSetupForm: React.FC = ({ loadHirePrefill(sourceId) .then((prefilled) => { if (alive) { - // Merge, а не replace: организация заявителя (ниже) резолвится отдельным - // эффектом и могла успеть записаться раньше — не затираем её. + // Merge, а не replace: пользователь мог успеть что-то ввести до ответа. setData((prev) => ({ ...prev, ...prefilled })); setSourceHire((prev) => (prev ? { ...prev, candidateName: prefilled.FullName } : prev)); } @@ -163,33 +161,6 @@ const WorkplaceSetupForm: React.FC = ({ const approval = useMemo(() => workplaceApprovalService(editListId), [editListId]); const userEmail = effectiveUserEmail(context); - // Организации заявителя (Employee/ByEmail) — форма не о самом заявителе, а о - // новом сотруднике (FullName — обычный текст, предзаполняется из «Заявки на - // прием», и его чаще всего ещё нет в системе кадров), поэтому организация - // тянется по ТЕКУЩЕМУ пользователю. Это только предложение: поле дальше - // редактируется вручную. На редактировании уже сохранённое значение не перезатираем. - useEffect(() => { - if (editId || !userEmail) { - return; - } - let alive = true; - getEmployeeOrganizations(context, userEmail) - .then((records) => { - if (alive) { - setData((prev) => ({ - ...prev, - Companies: prev.Companies.length > 0 ? prev.Companies : employeeCompanies(records) - })); - } - }) - .catch(() => undefined); - return () => { - alive = false; - }; - // context — единственный экземпляр WebPartContext на всё время жизни - // веб-части, так что перезапуска эффекта эта зависимость не добавляет. - }, [editId, userEmail, context]); - // pageUrl формы (requestType.id совпадает с ним по конвенции портала, см. // data/requests.ts) → числовой RequestTypeId, нужный approval-route API. const requestTypeIdState = useRequestTypeId(context, requestType.id); diff --git a/src/webparts/requestPortal/forms/WorkplaceSetup/model.ts b/src/webparts/requestPortal/forms/WorkplaceSetup/model.ts index b083014..644bfd7 100644 --- a/src/webparts/requestPortal/forms/WorkplaceSetup/model.ts +++ b/src/webparts/requestPortal/forms/WorkplaceSetup/model.ts @@ -41,8 +41,8 @@ export interface IFormData { StartDate: string; /** * Организации заявителя — мультивыбор из справочника (CompanyPickerMulti). - * Предзаполняется из Employee/ByEmail по e-mail заявителя (не нового - * сотрудника — его ещё нет в системе кадров), дальше редактируется вручную. + * Не предзаполняется (решение Тимура 2026-10-07: организация инициатора + * подставлялась не та) — выбирается вручную. * В SP хранится JSON-ом в колонке WorkplaceCompaniesJson (см. submit.ts). */ Companies: ICompany[];