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[];