fix: даты «только дата» больше не сдвигаются на день назад
Tests / frontend-test (push) Successful in 2m1s

SharePoint хранит поле «только дата» как полночь по поясу сайта (UTC+5)
в UTC: «05.10» приходит из REST как 2026-10-04T19:00:00Z. Формы брали
первые 10 символов и показывали 04.10, а каждое пересохранение (полное
право, исполнитель, повторная отправка) записывало дату ещё на день раньше.

Чтение всех дат идёт через spDateOnlyToIso (округление до ближайшей
полуночи UTC), «сегодня» — через todayIsoDate вместо toISOString, который
до 05:00 давал вчерашнее число. Уже сдвинутые записи в SP не исправляются.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Тимур Городецкий
2026-10-05 12:41:18 +05:00
parent 9400f8546e
commit f8ab2a1d71
21 changed files with 114 additions and 22 deletions
@@ -16,6 +16,7 @@ import {
dataListTitleForListId
} from '../../shared/listTitles';
import { requestLinkUrl } from '../../shared/routing';
import { spDateOnlyToIso } from '../../shared/dateUtils';
import { FORM_ID as CLEARANCE_FORM_ID, EMPTY_DATA as CLEARANCE_EMPTY, IFormData as IClearanceData } from '../Clearance/model';
import { clearanceApprovalService, saveClearanceRequest } from '../Clearance/submit';
import { FORM_ID, primaryPosition, zipOrganization } from './model';
@@ -136,7 +137,7 @@ export async function ensureClearanceForDismissal(
Position: position,
Department: department,
// Последний рабочий день заявления = дата расторжения договора в обходном листе.
TerminationDate: ((item.LastWorkingDay as string) || '').slice(0, 10),
TerminationDate: spDateOnlyToIso(item.LastWorkingDay),
Organization: organizationText
};
@@ -1,5 +1,6 @@
import { getSP } from '../../shared/pnp/pnpjs';
import { dataListTitle } from '../../shared/listTitles';
import { spDateOnlyToIso } from '../../shared/dateUtils';
import { FORM_ID, IFormData, EMPTY_DATA, zipOrganization } from './model';
export interface ILoadedRequest {
@@ -47,7 +48,7 @@ export async function loadDismissalRequest(itemId: number, listId?: string): Pro
const data: IFormData = {
...EMPTY_DATA,
Employee: employee?.EMail || '',
LastWorkingDay: lastDay.slice(0, 10), // ISO → YYYY-MM-DD для input type=date
LastWorkingDay: spDateOnlyToIso(lastDay),
Phone: (item.Phone as string) || '',
Comment: (item.Comment as string) || '',
Organization: zipOrganization(item.Organization, item.Department, item.Position),