diff --git a/src/webparts/ctFormsPortal/forms/kps/services/KpsCtFormService.ts b/src/webparts/ctFormsPortal/forms/kps/services/KpsCtFormService.ts index 2e2ef43..514c5bb 100644 --- a/src/webparts/ctFormsPortal/forms/kps/services/KpsCtFormService.ts +++ b/src/webparts/ctFormsPortal/forms/kps/services/KpsCtFormService.ts @@ -256,8 +256,14 @@ export class KpsCtFormService { // Мягкое удаление (то же, что кнопка «Удалить» в UI). Работает на «защищённых» списках, // где DELETE/MERGE падают с E_FAIL (§6). Для «обновления» такой записи: recycle() + повторный POST. public async recycleListItem(listName: string, id: number): Promise { + // Content-Type обязателен даже без тела: у POST с пустым odata-version SPFx иначе сам бросает + // «jsonRequest is enabled, which requires the OData-Version header…». const options: ISPHttpClientOptions = { - headers: { Accept: 'application/json;odata=nometadata', 'odata-version': '' } + headers: { + Accept: 'application/json;odata=nometadata', + 'Content-Type': 'application/json;odata=nometadata', + 'odata-version': '' + } }; const res = await this.spHttpClient.post( `${this._liById(listName, id)}/recycle()`, diff --git a/src/webparts/ctFormsPortal/shared/approval/approvalList.service.ts b/src/webparts/ctFormsPortal/shared/approval/approvalList.service.ts index d032fe9..4f9d314 100644 --- a/src/webparts/ctFormsPortal/shared/approval/approvalList.service.ts +++ b/src/webparts/ctFormsPortal/shared/approval/approvalList.service.ts @@ -108,8 +108,14 @@ export class ApprovalListService { } private async recycleListItem(id: number): Promise { + // Content-Type обязателен даже без тела: у POST с пустым odata-version SPFx иначе сам бросает + // «jsonRequest is enabled, which requires the OData-Version header…» — повторная отправка падала. const options: ISPHttpClientOptions = { - headers: { Accept: 'application/json;odata=nometadata', 'odata-version': '' } + headers: { + Accept: 'application/json;odata=nometadata', + 'Content-Type': 'application/json;odata=nometadata', + 'odata-version': '' + } }; const res = await this.spHttpClient.post( `${this._liById(this.listTitle, id)}/recycle()`,