Работа с машиночитаемой доверенностью

Данный пример, расположенный в репозитории Docsvision на GitHub, содержит методы работы с МЧД для Web-клиента и для Windows-клиента.

Ссылка на пример на GitHub: PowersOfAttorney.

Пример рассчитан на версию Web-клиента 6.1 или выше.

Перечень необходимых инструментов:
  • NodeJS v18.12.1 и выше

  • Модуль Базовые объекты версии 6.1, сборка 176 и выше.

  • Модуль Web-клиент версии 6.1, сборка 651 и выше.

Ограничения примера

  1. Виды передоверия в примере предназначены только для ознакомления. Для их использования необходима доработка под ситуации, не требующие нотариального удостоверения. По умолчанию создание карточек данных видов запрещено.

  2. Формат 5.01 не реализован.

  3. Для формата 002 не реализованы следующие сценарии:

    1. Основная доверенность

      Доверитель Лицо, действующее без доверенности от имени доверителя Представитель

      Российское юридическое лицо

      Юридическое лицо

      Организация / Индивидуальный предприниматель

      Иностранное юридическое лицо

      Все типы

      Все типы

      Индивидуальный предприниматель

      Все типы

      Все типы

      Физическое лицо

      Все типы

      Все типы

    2. Передоверие

      Лицо, передавшее полномочия Лицо, получившее полномочия

      Российское юридическое лицо

      Все типы

      Индивидуальный предприниматель

      Все типы

      Физическое лицо

      Организация/ Индивидуальный предприниматель

    3. Нотариальное удостоверение доверенностей.

  4. Для формата EMCHD_1 (003) не реализованы следующие сценарии:

    1. Основная доверенность

      Доверитель Единоличный исполнительный орган Представитель

      Российское юридическое лицо

      Управляющая компания/ Индивидуальный предприниматель

      Юридическое лицо/ Индивидуальный предприниматель/ Филиал (обособленное подразделение) российского юридического лица/ Филиал (аккредитованное представительство) иностранного юридического лица

      Иностранное юридическое лицо

      Все типы

      Все типы

      Индивидуальный предприниматель

      Все типы

      Все типы

      Физическое лицо

      Все типы

      Все типы

    2. Передоверие

      Лицо, передавшее полномочия Лицо, получившее полномочия

      Российское юридическое лицо

      Все типы

      Индивидуальный предприниматель

      Все типы

      Физическое лицо

      Юридическое лицо/ Индивидуальный предприниматель/ Филиал (обособленное подразделение) российского юридического лица/ Филиал (аккредитованное представительство) иностранного юридического лица

      Филиал (обособленное подразделение) российского юридического лица

      Все типы

      Филиал (аккредитованное представительство) иностранного юридического лица

      Все типы

    3. Нотариальное удостоверение доверенностей.

Описание примера

Пример включает компоненты:
  • PowersOfAttorney  PowersOfAttorneyServerExtension — папка с серверным расширением Web-клиента, в котором реализованы функции создания СКД из демонстрационной карточки доверенностей.

  • PowersOfAttorney  PowersOfAttorneyWebExtension — папка с клиентским расширением, в котором реализованы обработчики смены состояния ПКД и управления МЧД, видимостью и обязательностью полей.

  • PowersOfAttorney  PowersOfAttorney.UserCard.Common — папка с проектом PowersOfAttorney.UserCard.Common, который используется и для Web-клиента и для Windows-клиента.

  • PowersOfAttorney  PowersOfAttorney.Scripts — содержит файл скрипта для Windows клиента.

  • PowersOfAttorney  Data  PowersOfAttorneySolution — папка с решением, включающим разметки тестовой карточки доверенности.

  • PowersOfAttorney  Data  SolutionOfPOA.sol — решение, добавляющее в систему Docsvision новые виды карточки Документ (Доверенность и Передоверие) и необходимые расширенные метаданные.

Сборка проекта

  1. Сборка серверной части.

    1. Откройте решение PowersOfAttorney  PowersOfAttorneyServerExtension.sln.

    2. Соберите проект PowersOfAttorneyServerExtension.

  2. Сборка клиентской части.

    1. Откройте в командной строке папку PowersOfAttorney  PowersOfAttorneyWebExtension.

    2. Выполните команды:

      $ npm install $ npm update $ npm run build:prod

  3. Публикация компонентов на сервере Web-клиент.

    1. Скопируйте папку PowersOfAttorney\SamplesOutput\Content\Modules\PowersOfAttorneyWebExtension в Каталог-установки-Web-клиента\Content\Modules.

    2. Скопируйте файл PowersOfAttorney\SamplesOutput\Extensions\PowersOfAttorneyServerExtension\PowersOfAttorneyServerExtension.dll в Каталог-установки-Web-клиента\Extensions.

    3. Скопируйте файл PowersOfAttorney\SamplesOutput\Extensions\PowersOfAttorneyServerExtension\PowersOfAttorneyServerExtension.resources.dll в Каталог-установки-Web-клиента\Extensions\ru.

    4. Скопируйте файл PowersOfAttorney\SamplesOutput\Extensions\PowersOfAttorney.UserCard.Common\PowersOfAttorney.UserCard.Common.dll в Каталог-установки-Web-клиента\Extensions.

    5. Скопируйте файл PowersOfAttorney\SamplesOutput\Extensions\PowersOfAttorney.UserCard.Common\PowersOfAttorney.UserCard.Common.resources.dll в Каталог-установки-Web-клиента\Extensions\ru.

  4. Перезапустите dvappserver.

Проверка примера

Для проверки примера требуется установить версию Backoffice и Web-клиент с поддержкой СКД.

  1. В Менеджере решений импортируйте решение Машиночитаемая доверенность — PowersOfAttorney\Data\SolutionOfPOA.sol. Рекомендуется использовать версию Менеджера решений версии 6.1 и выше.

    Компоненты данного решения:
    • Справочник видов:

      • Документ — МЧД Доверенность (версия 002), Передоверие (версия 002), Доверенность (версия EMHCD_1), Передоверие (версия EMHCD_1).

      • Задание — Задание КС — На подписание МЧД, На согласование МЧД.

    • Метаданные: Полномочия, МЧД формат единой формы, Текстовые полномочия (а также все подчиненные).

    • Конструктор правил нумерации: МЧД.

    • Поиск: МЧД (МЧД все, МЧД действующие, МЧД — я автор, МЧД  — я подписант, МЧД отозванные, МЧД мои, Поиск МЧД)

    • Представление: МЧД → МЧД единого формата — представление

    • Папка Доверенность для хранения маршрутов согласования и подчиненные папки для работы с доверенностями.

    • Согласование: маршрут "согласование и подписание МЧД единого формата" — согласование настроено на группу юридического отдела (справочник сотрудников), подписание настроено на группу генеральные директора (справочник сотрудников). Согласование параллельное, без ограничений по времени. Можно убрать участников при отправке на согласование.

  2. В справочнике видов (тип: Согласование, вид: Усовершенствованное согласование) настройте согласование для видов карточек МЧД. В окне Настройка способа создания карточки выберите шаблон Согласование и подписание МЧД единый формат.

  3. В программе Конструктор Web-разметок импортируйте решение Машиночитаемая доверенность. Для этого выберите файл Solution.xml в папке решения PowersOfAttorney\Data\PowersOfAttorneySolution\.

  4. Проверьте, что в Справочнике сотрудников заполнены поля для участников МЧД как описано в пользовательской документации.

  5. В Web-клиенте создайте карточку документ вида Доверенность (версия 002). Заполните обязательные поля.
    Если заполнены не все обязательные поля, при сохранении будет выдано предупреждение.

    Чтобы создать свою разметку, необходимо:
    • Добавить скрипт для отображения в модальном окне незаполненных обязательных полей showRequiredFields в качестве обработчика события Перед началом сохранения карточки root для разметок создания и/или редактирования в конструкторе разметок.

    • Добавить скрипт customizePowerOfAttorneyCardForEditLayout в качестве обработчика события После загрузки всех ЭУ для root во всех разметках создания и редактирования карточки доверенности.

    • Добавить скрипт customizePowerOfAttorneyCardForViewCard в качестве обработчика события После загрузки всех ЭУ для root во всех разметках просмотра карточки доверенности.

    • Добавить скрипт customizeSubstitutionPowerOfAttorneyCardForEditLayout После загрузки всех ЭУ для root во всех разметках просмотра карточки передоверия.

    • Добавить скрипт customizeSubstitutionPowerOfAttorneyCardForViewLayout в качестве обработчика события После загрузки всех ЭУ для root во всех разметках просмотра карточки передоверия.

  6. В Web-клиенте создайте карточку документ вида Доверенность (версия EMCHD_1). Заполните обязательные поля. Если заполнены не все обязательные поля, при сохранении будет выдано предупреждение.

    Чтобы создать свою разметку, необходимо:
    • Добавить скрипт для отображения в модальном окне незаполненных обязательных полей showRequiredFields в качестве обработчика события Перед началом сохранения карточки root для разметок создания и/или редактирования в конструкторе разметок.

    • Добавить скрипт customizeSingleFormatPowerOfAttorneyForEditLayout в качестве обработчика события После загрузки всех ЭУ root для разметок создания и редактирования карточки доверенности в конструкторе разметок.

    • Добавить скрипт customizeSingleFormatPowerOfAttorneyForViewLayout в качестве обработчика события После загрузки всех ЭУ root для разметок просмотра, описания и справки карточки доверенности в конструкторе разметок.

    • Добавить скрипт customizeSingleFormatSPOACardForEditLayout в качестве обработчика события После загрузки всех ЭУ root для разметок создания и редактирования карточки передоверия в конструкторе разметок.

    • Добавить скрипт customizeSingleFormatSPOACardForViewLayout в качестве обработчика события После загрузки всех ЭУ root для разметок просмотра, описания и справки карточки передоверия в конструкторе разметок.

    • Добавить скрипт customizeSingleFormatPowerOfAttorneyForLocationLayout в качестве обработчика события После загрузки всех ЭУ root для разметки локация карточки доверенности в конструкторе разметок.

    • Добавить скрипт customizeSingleFormatPowerOfAttorneyForLocationLayout в качестве обработчика события После загрузки всех ЭУ root для разметки локация карточки передоверия в конструкторе разметок.

  7. Нажмите кнопку создания МЧД. В результате будет создана МЧД, связанная с текущей карточкой документа.

    Чтобы создать свою разметку, необходимо:
    • Добавить скрипт createPowerOfAttorney в качестве обработчика события При щелчке для кнопки в разметке просмотра карточки доверенности (версия 002) в конструкторе разметок.

    • Добавить скрипт createRetrustPowerOfAttorney в качестве обработчика события При щелчке для кнопки в разметках просмотра карточки передоверия (версия 002) в конструкторе разметок.

    • Добавить скрипт createEMCHDPowerOfAttorney в качестве обработчика события При щелчке для кнопки для разметок просмотра карточки доверенности (версия EMCHD_1) в конструкторе разметок.

    • Добавить скрипт createEMCHDRetrustPowerOfAttorney в качестве обработчика события При щелчке на кнопку для разметок просмотра карточки передоверия (версия EMCHD_1) в конструкторе разметок.

  8. Нажмите кнопку экспорта МЧД. На компьютер будет сохранён архив, содержащий файл МЧД в формате XML.

    Чтобы создать свою разметку, необходимо:
    • Добавить скрипт exportPowerOfAttorneyWithoutSignature в качестве обработчика события При щелчке для кнопки в разметке просмотра карточки доверенности и передоверия в конструкторе разметок.

  9. Если планируется отправлять доверенность на регистрацию в распределённый реестр ФНС через провайдеров внешнего ЭДО необходимо выполнить соответствующие настройки.

    • Для работы через Контур.Диадок выполните настройки описанные в документации модуля "Модуль интеграции с операторами ЭДО", раздел "Настройка работы с МЧД".

      • Для этого случая, в примере решения есть преднастроенные разметки: Доверенность версии 002 (просмотр)_Контур.Диадок и Доверенность версии EMCHD_1 (просмотр)_Контур.Диадок.

    • Для работы через Контур.Доверенность выполните настройки описанные в документации модуля "Интеграции с реестром МЧД", раздел "Настройка Модуля интеграции с реестром МЧД".

      • Для этого случая, в примере решения есть преднастроенные разметки: Доверенность версии 002 (просмотр)_Контур.Доверенность и Доверенность версии EMCHD_1 (просмотр)_Контур.Доверенность.

  10. Нажмите кнопку подписания МЧД. Будет предложено выбрать сертификат подписи, выполнится подписание МЧД.

    • Для создания своей разметки нужно добавить скрипт signPowerOfAttorney в качестве обработчика события При щелчке на кнопку для разметок просмотра карточки доверенности и передоверия в конструкторе разметок.

    • При работе через Контур.Диадок, для подписания и последующей регистрации доверенности по файлу нужно добавить скрипт signAndSendPowerOfAttorneyToRegistrationAsFile в качестве обработчика события При щелчке на кнопку для разметки просмотра карточки доверенности.

    • Если требуется разделить события подписания и отправки, можно воспользоваться скриптом sendPowerOfAttorneyToRegistrationAsFile (он выполняет только отправку уже подписанной доверенности в реестр через Контур.Диадок).

    • При работе через Контур.Доверенность, для подписания и последующей регистрации доверенности по файлу нужно добавить скрипт signAndSendForRegistrationToRegistry в качестве обработчика события При щелчке на кнопку для разметки просмотра карточки доверенности.

    • Если требуется разделить события подписания и отправки, можно воспользоваться скриптом sendForRegistrationToRegistry (он выполняет только отправку уже подписанной доверенности в реестр через Контур.Доверенность).

  11. Нажмите кнопку экспорта МЧД. На компьютер будет сохранён архив, содержащий файл МЧД в формате XML и его подпись.

    Чтобы создать свою разметку, необходимо:
    • Добавить скрипт exportPowerOfAttorneyWithSignature в качестве обработчика события При щелчке для кнопки в разметки просмотра карточки доверенности и передоверия.

  12. Нажмите кнопку отзыва МЧД.

    Чтобы создать свою разметку, необходимо:
    • Добавить скрипт revokePowerOfAttorney в качестве обработчика события При щелчке на кнопку для разметки просмотра карточки доверенности и передоверия (версия 002) в конструкторе разметок.

    Чтобы создать свою разметку с отзывом без заявления, необходимо:
    • Добавить скрипт revokePowerOfAttorneyWithoutApplication в качестве обработчика события При щелчке на кнопку для разметки просмотра карточки доверенности и передоверия в конструкторе разметок.

    При работе через Контур.Доверенность
    • Для формирования, подписания и последующей отправки заявления на отзыв в ЦПРР ФНС нужно добавить скрипт revokeAndRecallPowerOfAttorney в качестве обработчика При щелчке на кнопку отзыва для разметки просмотра карточки доверенности.

    Если требуется разделить события формирования заявления и его отправки:
    • Можно воспользоваться скриптом recallPowerOfAttorney. Скрипт выполняет только отправку уже сформированного и подписанного заявления на отзыв через Контур.Доверенность.

  13. Нажмите кнопку экспорта заявления на отзыв для доверенности и передоверия (версия 002). На компьютер будет сохранён архив, содержащий файл заявления на отзыв в формате XML и его подпись.

    Чтобы создать свою разметку, необходимо:
    • Добавить скрипт exportApplicationForRevocation в качестве обработчика события При щелчке на кнопку для разметки просмотра карточки доверенности (версия 002) и передоверия (версия 002) в конструкторе разметок.

  14. Нажмите кнопку удаления пользовательской карточки доверенности.

    Из пользовательской карточки доверенности также удаляется системная карточка доверенности.

    Чтобы создать свою разметку, необходимо:
    • Добавить скрипт deletePowerOfAttorney в качестве обработчика события Перед удалением карточки для root.

  15. Доверенность можно подписать в ходе согласования.

    Чтобы подписать доверенность в ходе согласования, необходимо:
    • Отправить Доверенность на согласование как описано в пользовательской документации.

    • Нажать кнопку Подписать в Задании. В результате сформируется СКД, затем подпишется доверенность, ПКД перейдет в статус Подписана, а задание перейдет в статус Завершено.

    • Для создания своей разметки нужно добавить скрипт signAndSendPowerOfAttorneyToRegistrationAsFileFromTask в качестве обработчика события Перед выполнением операции на ЭУ Автомат состояния для подписания и последующей регистрации доверенности по файлу.
      Для подписания без регистрации используйте скрипт signPowerOfAttorneyFromTask.

Права доступа к СКД определяются дискреционной моделью и наследуются от ПКД. Права переходят по Сильной ссылке, в которую прописывается RowID СКД благодаря наличию поля POASysCardId типа RefCardID.

Пример скриптов для Windows клиента

  1. Скрипт находится в файле CardDocumentДоверенность__версия_EMHCD_1_Script.cs в проекте PowersOfAttorney.Scripts

  2. Проект нужен только для проверки компилируемости скрипта. Ссылки на сборку PowersOfAttorney.Scripts.dll добавлять не надо.

  3. Скрипт необходимо скопировать в справочник скриптов для двух видов (для доверенности EMHCD и передоверия EMHCD). Если у родительского вида для этих видов нет скрипта, надо открыть его и сгенерировать для него скрипт по умолчанию.

  4. Необходимо закомментировать в файле скрипта для обоих видов строчку

    using CardDocumentМЧДScript = DocsVision.BackOffice.WinForms.ScriptClassBase;

    Строка нужна только для компиляции файла скрипта в составе проекта PowersOfAttorney.Scripts.

  5. Скрипты для этих видов отличаются только названиями классов. Необходимо для каждого вида оставить только одно соответствующее ему название класса (см. комментарий в скрипте).

  6. В скриптах необходимо добавить ссылку на сборку PowersOfAttorney.UserCard.Common.dll, которую также необходимо распространить на все клиентские рабочие места.

  7. В конструкторе разметок необходимо добавить кнопки (например в ленту). Названия кнопок должны соответствовать обработчикам в скрипте.

    В скрипте обработчики выглядят как имяКнопки__ItemClick(); Если названия кнопки будут соответствовать обработчикам, то обработчики к кнопкам привяжутся автоматически, вручную их создавать не надо.

  8. Можно привязать к кнопкам соответствующие операции, чтобы кнопки были доступны только в тех состояниях, когда их нажатие имеет смысл.

API для работы с МЧД

Для работы с МЧД можно использовать перечисленные ниже классы API.

  • В DocsVision.BackOffice.Cards.Web.Model добавлены новые для работы с машиночитаемыми доверенностями:

    • CreatePowerOfAttorneyFnsDovBbRequest с полями:

      • PowerOfAttorneyFnsDovBbData powerOfAttorneyData — данные создаваемой доверенности.

      • Guid representative — представитель.

      • Guid signer — подписант.

      • Guid parentPowerOfAttorney — идентификатор родительской доверенности.

    • SignPowerOfAttorneyRequest с полями:

      • Guid PowerOfAttorneyId — идентификатор доверенности.

      • byte[] Signature — данные подписи.

  • В контроллер PowerOfAttorneyApiController добавлены новые методы:

    • POST CreatePowerOfAttorney(CreatePowerOfAttorneyFNSDOVBBRequest request) — вызывает IPowerOfAttorneyService.CreatePowerOfAttorney (создание доверенности) с передачей полей из CreatePowerOfAttorneyFNSDOVBBRequest.

    • GET GetMachineReadablePowerOfAttorney(Guid powerOfAttorneyId) — возвращает МЧД доверенности для подписания.

    • POST AttachSignatureToPowerOfAttorney(AttachSignatureToPowerOfAttorneyRequest) — вызывает IPowerOfAttorneyService.AttachSignature, загружающий подпись в существующую доверенность и изменяющий статус доверенности.

Подробнее про использование API для работы с МЧД можно узнать из описания веб-API, см. раздел "Как работать с описанием веб-API".