Работа с машиночитаемыми доверенностями (МЧД)
Основные объекты для работы с МЧД:
Регистрация МЧД
Для регистрации МЧД существуют два метода:
Первый из этих методов может быть использован, если МЧД уже зарегистрирована в ФНС через какой-либо другой сервис (не Диадок).
Второй - если МЧД выпущена, или же как альтернатива первому методу.
МЧД привязанные к сотруднику организации
Для получения МЧД, привязанных к текущему авторизованному сотруднику, предназначен метод 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 - для подписания отправляемых документов
ReplySendTask2 - для любого из ответных действий по документам
Для отправки черновиков и документов с отложенной отправкой используется 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()