Общая информация
В данном разделе осуществляется настройка сервиса, осуществляющего работу по подписанию ответа ведомства на заявление, и последующая отправка подписанных документов в ведомство. При подписании ответа пользователь может выбрать один из трёх вариантов согласия с полученными документами:
- Согласие и подписание – пользователь выражает свое полное согласие с полученными документами и подписывает их. Подписанные документы отправляются в ведомство
- Отправка разногласий – пользователь частично согласен с присланными документами. В этом случае он должен составить перечень разногласий, прикрепить составленный файл, подписать ответ и отправить в ведомство
- Отклонение – пользователь выразил свое несогласие с представленными документами. Ответ отправляется в ведомство
Основные настройки сервиса

| Атрибут | Описание |
| Использовать сервис подписания | Добавляет использование сервиса подписания в услугу |
| Источники для составления запроса на отправку результатов подписания | |
| Файл первичного запроса |
Способ выбора файла из первичного запроса Возможные варианты:
|
| Мнемоника файла | Точное совпадение мнемоники файла, который будет извлечён из первичного запроса. Далее, из него будет извлечена структура XML. В этой структуре будут найдены параметры, описанные в маппинге параметров, и сохранены в контекст. Далее, эти значения могут быть использованы в FTL-шаблонах, при составлении второго запроса в ведомство |
| Регулярное выражение | Регулярное выражение, по которому будет выделен файл из ответа ведомства |
| Файл, созданный на основе ответа ведомства | Мнемоника json-файла, сформированного в сервисе «Генерация файлов» во вкладке «Настройка процессинга заявлений», разделе «Формирование файлов на основании ответа на заявление» на основании ответа ведомства и используемого для наполнения контекста. Далее, значения из контекста могут быть использованы в FTL-шаблонах, при составлении второго запроса в ведомство |
| Способы подписания | |
| ПЭП на Госуслугах | Подпись, формируемая с помощью учётной записи Госуслуг. Подписание происходит прозрачно для пользователя |
| ПЭП на Госуслугах с подтверждением по смс | То же самое что и ПЭП, но дополнительно запрашивается ввод кода, присланного пользователю через смс |
| УКЭП с компьютера | Подписание с помощью плагина браузера |
| УНЭП в приложении «Госключ» | Подписание в мобильном приложении Госключ |
| УКЭП в приложении «Госключ» | Подписание в мобильном приложении Госключ |
| Подписание в приложении «Госключ» | Подписание в мобильном приложении Госключ. Используется, если подписание было настроено ранее |
Настройки каждого варианта согласия

Для каждого из трёх вариантов согласия представлен ряд одинаковых настроек
| Атрибут | Описание |
| Идентификатор FTL шаблона для генерации запроса | Идентификатор FTL шаблона для генерации запроса |
| FTL шаблон для генерации запроса | Текст FTL шаблона, используемого для генерации запроса в ведомство |
| Отправлять только файлы подписи | Признак отправки в ведомство только подписей к файлам. Сами файлы не отправляются |
| Тип пользователя |
Тип пользователя, используемый в маппинге параметров Возможные варианты:
Используется для различного маппинга параметра при различном типе пользователя |
| Наименование параметра в запросе | Наименование параметра для запроса. В FTL указывается такое же наименование параметра |
| Путь к тегу XML | Путь для поиска значения в XML, описан на языке запросов к элементам XML-документа |
Настройки передачи

| Атрибут | Описание |
| Передавать файлы в архиве | Файлы, передаваемые в ведомство, будут заархивированы |
| Наименование архива | Название архива, которое передаётся в ведомство |
| Способ передачи файлов в ведомство |
Способ передачи файлов в ведомство Возможные варианты:
|
| Передавать пользовательские имена файлов | Актуально только при передаче архивом. Признак использования пользовательских наименований файлов при распаковке архива |
| Добавлять расширения файлов в названия | Признак передачи файлов с расширением. Если мнемоника не содержит расширения файла, то имя файла сформируется как mnemonic.xxx, где.xxx — расширение файла |
| Отправлять все файлы в ведомство | Признак передачи в ведомство всего перечня сформированных файлов |
| Не отправлять выбранные файлы | Признак исключения некоторых сформированных файлов из пакета для передачи в ведомство |
| Задать мнемоники файлов явно | Перечень мнемоник файлов, исключенных из передачи в ведомство |
| Регулярные выражения для мнемоник файлов | Перечень регулярных выражений, определяющих исключения из перечня файлов отправки для отправки в ведомство |
| Разархивировать файлы в ответе ведомства | Признак того, что полученный архив с файлами от ведомства будет разархивирован. Заявление будет переведено в ошибочный статус, если ведомство отправит файлы, которые не являются архивами |
| Способ маршрутизации | Выбор способа маршрутизации СМЭВ |
| Идентификатор FTL шаблона для преобразования ответа | Имя FTL-шаблона, используемого для преобразования полученного ответа |
| FTL шаблон для преобразования ответа | Текст FTL-шаблона, используемого для преобразования ответа |
Настройки отмены
Данная настройка есть только у варианта согласия «Отклонение»

| Атрибут | Описание |
| Действие при отклонении подписания |
Восприятие системой действий пользователя по отклонению подписания Возможные значения:
|
Описание работы сервиса

Общая схема
Общая схема работы сервиса подписания ответа представлена выше. Схема состоит из двух основных частей: подачи заявления и обработки документов, полученных от ведомства
Алгоритм работы сервиса
После подачи заявления пользователем на шагах 1—3, ведомство в ответ присылает набор документов, подлежащих изучению пользователем, и их подписанию. Вместе с пакетом документов ведомство должно передать технический статус 19. Получив 19 статус на шаге 5, портал поймёт, что необходимо представить пользователю документы на подписание. Пользователю в ЛК отобразятся кнопки вариантов согласия: согласие, разногласие, отклонение. Наличие или отсутствие того или иного варианта согласия в услуге настраивается в интерфейсе ВКУ
Изучив полученные документы, пользователь на шаге 7 в личном кабинете выбирает один из представленных вариантов согласия. Далее, происходит подписание способом, настроенным в услуге. На шаге 8 происходит генерация запроса в ведомство на основании шаблона запроса выбранного варианта согласия. На шаге 9 сгенерированный запрос через настроенный вид сведений передается в ведомство. Отправлять можно как все подписанные файлы, так и только подписи к ним
Формирование второго запроса
При формировании запроса для шага 8, используется так называемый контекст. Контекст, это документ, наполненный различными значениями в виде «ключ — значение». В качестве значений могут выступать как простые значения (числа, текст), так и целые структуры json. Для формирования второго запроса на шаге 8 как раз эти значения и используются
Наполнение контекста
Существует несколько способов наполнения контекста
Файлы первичного запроса
Любой файл, сформированный на стороне ЕПГУ, и входящий в первичный запрос на шаге 2 может быть использован как источник данных для наполнения контекста. Что бы это выполнить, необходимо:
- В поле «Файл первичного запроса» определить способ выделения файла из первичного запроса. Могут быть выбраны значения: «Отсутствует» – файл не извлекается, соответственно из первичного файла запроса контекст не пополняется. «Мнемоника файла» – указывается точное совпадение мнемоники файла, извлекаемого из первичного запроса. «Регулярное выражение для мнемоники файлов» – указывается регулярное выражение для извлечения файла из первичного запроса
- В разделе «Маппинг параметров в файле первичного запроса и запроса на отправку результатов подписания» нужного варианта согласия добавить параметры
Путь к тегу XML, по которому находится его значение, формируется как путь, описанный на языке запросов к элементам XML-документа xPath. В представленном примере из файла первичного запроса, найденного в пункте 1, будет выбран параметр, находящийся в этом файле по пути /*[local-name()="request"]/@RouteCode, и сохранён в контекст

Файл, сформированный на основании ответа ведомства
На основании ответа ведомства на первичный запрос, то есть шагов 4—5, можно сформировать промежуточный файл формата json и всё его содержимое поместить в контекст, для последующего использования при формировании второго запроса. Что бы это выполнить, необходимо:
- Первоначально необходимо настроить генерацию промежуточного файла на основании ответа ведомства. Для этого необходимо перейти в меню настройки услуги в раздел «Настройка процессинга заявлений» и перейти на вкладку «Формирование файлов на основании ответа на заявление»
- Добавить элемент в настройки следующим образом. Поля «Имя конечного файла, отображаемого пользователю», «Мнемоника файла для хранения в террабайте», «Тег для сбора информации для генерации» заменить на свои. В полях «Источник данных для генерации», «Тип поля идентификатора файла во вложении», «Мнемоника файла» и «Регулярное выражение для мнемоники файла» указать место ответа, которое будет служить источником для генерации, тип поля, в котором будет указано выражение для выбора и сами выражения для выбора источника
- В настройках «Подписание ответа ведомства» указать мнемонику сгенерированного файла
- После получения ответа от ведомства на шаге 5 на ЕПГУ будет сгенерирован json файл. Все содержимое сформированного файла будет добавлено в контекст



Переменные контекста
На ряду указанных выше способов наполнения контекста в него автоматически добавляется ограниченный набор переменных
orderId – номер заявления
personType – тип пользователя, получающего услугу
sendDateTime – текущие дата и время
signFileList – список прикреплённых документов
filePairs – список подписанных документов с подписями
Формирование второго запроса
Генерация второго запроса осуществляется на основе FTL шаблона. При генерации второго запроса при помощи FTL – шаблона можно использовать все переменные, хранящиеся в контексте
Простые переменные вызываются с помощью знака доллара $
Для обработки значений (конструкции #) знак доллара не нужен
Обращение к вложенным полям объектов осуществляется через точку
Работа с массивами осуществляется с помощью конструкции #list
Примеры
Наполнение контекста из файла первичного запроса
- Первоначальная настройка: в маппинг параметров добавить поле – routeCode и путь к тегу /*[local-name()="request"]/@RouteCode
- На стороне ЕПГУ был сформирован файл первичного запроса вида:
- В контекст добавится переменная routeCode = MEG12456
- В FTL шаблоне можно использовать конструкцию <tns:request xmlns:tns="urn://minenergoepgu/2.0.3" RouteCode="${routeCode}">
- Итоговый запрос будет иметь вид:
![]()
![]()
Наполнение контекста из файла, сформированного на основании ответа ведомства
- В настройках услуги в разделе «Настройки процессинга заявлений» на вкладке «Формирование файлов на основании ответов ведомства» добавить генерацию файла в формате json
- После получения ответа на первичный запрос будет сформирован соответствующий файл
- Обращение вида ${changeOrderInfo.orderId.pguId} внутри FTL шаблона даст результат 2929246605
Если ответ ведомства имеет вид:

То в контекст будет добавлен объект вида:

Обращение к массивам
Если необходимо обратиться к элементам, которые находятся в массиве, то необходимо использовать конструкцию обработки цикла:

- В контекст был добавлен объект вида:
- В FTL шаблоне можно использовать конструкцию:
- В итоговом документе получим:



Наполнение контекста переменными
Для добавления значений этих переменных в итоговый второй запрос применяются следующие конструкции:
<tns:OrderId>${orderId?c}</tns:OrderId>
<#if personType="PERSON_LIGHT" || personType="PERSON" || personType="PERSON_CONFIRMED">
Так как происходит обработка значения (конструкция #), а не вывод, то знак доллара не нужен
<tns:signContractDate>${sendDateTime}</tns:signContractDate>
Переменная signFileList заполнена массивом значений о файлах
Каждый элемент имеет следующие поля:
| Поле | Тип | Обращение | Назначение |
| ID | string | ${signFile.fileId} | Уникальный идентификатор вложения |
| fileName | string | ${signFile.fileName} | Имя файла документа |
| Number | string | ${signFile.number} | Номер документа по порядку |
| URL | string | ${signFile.mnemonic} | Мнемоника |
| Type | string | ${signFile.mimeType} | MIME-тип контента |
Следующий код в FTL-шаблоне:

Даст следующий результат:

Переменная filePairs заполнена массивом пар значений о файле и его подписи следующего формата:
filePairs[i].left – левая часть пары содержит информацию о файле
filePairs[i].right – правая часть пары содержит информацию о подписи файла
Каждое значение из пары имеет следующие поля:
| Поле | Тип | Обращение | Назначение |
| ID | string |
${filePair.getLeft().getFileId()} ${filePair.getRight().getFileId()} |
Уникальный идентификатор вложения |
| fileName | string |
${filePair.getLeft().getFileName()} ${filePair.getRight().getFileName()} |
Имя файла документа |
| Number | string |
${filePair.getLeft().getNumber()} ${filePair.getRight().getNumber()} |
Номер документа по порядку |
| URL | string |
${filePair.getLeft().getMnemonic()} ${filePair.getRight().getMnemonic()} |
Мнемоника |
| Type | string |
${filePair.getLeft().getMimeType()} ${filePair.getRight().getMimeType()} |
MIME-тип контента |
Следующий код в FTL-шаблоне:

Даст следующий результат:
