Аннулирование

Для аннулирования документов используйте действие 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();
КонецФункции