Работа с машиночитаемыми доверенностями (МЧД)
Основные объекты для работы с МЧД:
Регистрация МЧД
Для регистрации МЧД существуют два метода:
Box.RegisterPowerOfAttorneyById()
, если МЧД уже зарегистрирована в ФНС через какой-либо другой сервис (не Диадок).
Box.RegisterPowerOfAttorneyByContent()
, если МЧД выпущена, или же как альтернатива первому методу.
МЧД, привязанные к сотруднику организации
Для получения МЧД, привязанных к текущему авторизованному сотруднику, используйте метод MyEmployee.GetPowersOfAttorney()
.
Если какую-то МЧД требуется установить по умолчанию, то используйте MyEmployee.SetDefaultPowerOfAttorney()
.
Процедура УстановитьМЧДПоУмолчанию()
dd_MyEmployee = dd_Organization.MyEmployee;
dd_EmployeePowerOfAttorney_Collection = MyEmployee.GetPowersOfAttorney(Истина);
dd_EmployeePowerOfAttorney = dd_EmployeePowerOfAttorney_Collection.getItem(0);
dd_PowerOfAttorney = dd_EmployeePowerOfAttorney.PowerOfAttorney;
dd_MyEmployee.SetDefaultPowerOfAttorney(dd_PowerOfAttorney);
КонецПроцедуры
Как использовать МЧД
МЧД необходимо прикладывать при подписании каких-либо сущностей. В Task’ах, в которых может произойти подписание каких-либо сущностей, добавлено поле PowerOfAttorneyToAttach. К таким Task’ам относятся:
AcquireCounteragentTask — для подписания документа-вложения, если он указан.
ReceiptGenerationProcess — для подписания ИоПов.
PackageSendTask2 — для подписания отправляемых документов.
Для отправки черновиков и документов с отложенной отправкой используйте PatchTask. В нём МЧД указывайте для каждой подписываемой сущности:
Процедура УказаниеМЧД_НаПримере_PackageSendTask2()
dd_PST2 = dd_Organization.CreatePackageSendTask2();
dd_MyEmployee = dd_Organization.MyEmployee;
Если dd_MyEmployee.NeedToAttachPowerOfAttorney Тогда
dd_PowerOfAttorneyToAttach = dd_PST2.PowerOfAttorneyToAttach;
Если ХочуИспользоватьМЧДПоУмолчанию Тогда
dd_PowerOfAttorneyToAttach.UseDefault = Истина;
Иначе
dd_EmployeePowerOfAttorney_Collection = dd_MyEmployee.GetPowersOfAttorney(Истина);
dd_EmployeePowerOfAttorney = dd_EmployeePowerOfAttorney_Collection.getItem(0);
dd_PowerOfAttorney = dd_EmployeePowerOfAttorney.PowerOfAttorney;
dd_PowerOfAttorneyToAttach.PowerOfAttorney = dd_PowerOfAttorney;
КонецЕсли;
КонецЕсли;
// Код добавления и отправки документов не приведён
КонецПроцедуры
Кроме того, МЧД можно указать для подписания ИоПов по конкретного документу:
Процедура ПодписатьИоПыИспользуяМЧД(ИдентификаторДокумента)
dd_DocumentBase = dd_Organization.GetDocumentById(ИдентификаторДокумента);
dd_MyEmployee = dd_Organization.MyEmployee;
Если dd_MyEmployee.NeedToAttachPowerOfAttorney Тогда
Если ХочуИспользоватьМЧДПоУмолчанию Тогда
dd_AsyncResult = dd_DocumentBase.SendReceiptsWithPowerOfAttorney(Неопределено);
Иначе
dd_EmployeePowerOfAttorney_Collection = dd_MyEmployee.GetPowersOfAttorney(Истина);
dd_EmployeePowerOfAttorney = dd_EmployeePowerOfAttorney_Collection.getItem(0);
dd_PowerOfAttorney = dd_EmployeePowerOfAttorney.PowerOfAttorney;
dd_AsyncResult = dd_DocumentBase.SendReceiptsWithPowerOfAttorney(dd_PowerOfAttorney);
КонецЕсли;
Иначе
dd_AsyncResult = dd_DocumentBase.SendReceiptsAsync();
КонецЕсли;
// Код обработки dd_AsyncResult не приведён
КонецПроцедуры
Получение данных об МЧД
Для получения данных об МЧД, которые использовались для подписания сущностей документа, используйте метод DocumentBase.GetPowersOfAttorney()
.