Аннулирование
Для аннулирования документов используйте действие Revoke в качестве аргумента метода PatchTask.AddToPatch().
Предложение аннулирования может быть исходящим или у документа может уже быть предложение аннулирования со стороны контрагента. Из-за этого может отличаться тип объекта, который нужно заполнить.
Процедура ЗаполнитьОбычнуюПодпись(dd_DocumentBase, dd_AcceptanceToSend, dd_PowerOfAttorney)
// Здесь может быть какая-то ещё логика по обработке dd_DocumentBase
dd_AcceptanceToSend.PowerOfAttorneyToAttach.PowerOfAttorney = dd_PowerOfAttorney;
КонецПроцедуры
Процедура ЗаполнитьПредложениеОбАннулировании(dd_DocumentBase, dd_RevocationRequestToSend, dd_PowerOfAttorney)
dd_RevocationRequestContent = dd_RevocationRequestToSend.Content;
dd_RevocationRequestContent.AddComment("Комментарий предложения аннулирования");
dd_Signer = dd_RevocationRequestContent.Signer;
dd_Signer.Surname = "Фамилия";
dd_Signer.FirstName = "Имя";
dd_Signer.Patronymic = "Отчество";
dd_Signer.JobTitle = "Должность";
dd_Signer.Inn = "966785367420";
RejectionToSend.PowerOfAttorneyToAttach.PowerOfAttorney = dd_PowerOfAttorney;
КонецПроцедуры
Функция АннулироватьДокумент(dd_DocumentBase, dd_PowerOfAttorney)
dd_Box = dd_DocumentBase.Organization;
dd_PatchTask = dd_Box.CreatePatchTask();
dd_PatchItem_ValueCollection = dd_PatchTask.AddToPatch(dd_DocumentBase, "Revoke");
Для Каждого dd_PatchItem Из dd_PatchItem_ValueCollection Цикл
// см. https://developer.kontur.ru/Docs/Diadoc/COM/HowTo/start/object_reflection.html
ИмяИнтерфейса = ПолучитьИмяИнтерфейса(dd_PatchItem.PatchContent);
Если "IAcceptanceToSend" = ИмяИнтерфейса Тогда
ЗаполнитьОбычнуюПодпись(dd_PatchItem.Document, dd_PatchItem.PatchContent, dd_PowerOfAttorney);
ИначеЕсли "IRevocationRequestToSend" = ИмяИнтерфейса Тогда
ЗаполнитьПредложениеОбАннулировании(dd_PatchItem.Document, dd_PatchItem.PatchContent, dd_PowerOfAttorney);
Иначе
ВызватьИсключение("Неизвестный тип патча");
КонецЕсли;
КонецЦикла;
Возврат dd_PatchTask.Send();
КонецФункции