При интеграции учетных систем на платформе 1С с ЕГАИС разработчики часто сталкиваются с задачей получения подробных сведений об алкогольной продукции по ее коду (AlcCode). Разберем по шагам, как правильно составить XML-документ запроса, отправить его в Универсальный транспортный модуль (УТМ) и почему ЕГАИС может возвращать пустой ответ на корректный, на первый взгляд, запрос.
Проанализируем ситуацию: код алкогольной продукции извлекается из штрихкода марки (например, из старой марки формата PDF417 длиной 68 символов). В коде PDF417 идентификатор продукции закодирован в первых позициях в 36-ричной системе счисления (Base36). При его переводе в десятичное число формируется последовательность цифр.
Частая ошибка заключается в том, что разработчики дополняют полученный код ведущими нулями до фиксированной длины (например, до 19 символов). В классификаторе ЕГАИС значение AlcCode хранится как числовая строка без лидирующих нулей. Если отправить запрос с нулями слева, сервер ЕГАИС вернет пустой ответ без данных о номенклатуре.
Для успешного получения классификатора обязательно удаляйте ведущие нули перед подстановкой значения в параметр КОД.
Рассмотрим структуру стандартного запроса к классификатору алкогольной продукции (QueryAP). Для поиска номенклатуры по коду ЕГАИС в секции параметров указывается блок qp:Parameter с именем КОД:
<ns:Documents xmlns:ns="http://fsrar.ru/WEGAIS/WB_DOC_SINGLE_01"
xmlns:oref="http://fsrar.ru/WEGAIS/ClientRef"
xmlns:pref="http://fsrar.ru/WEGAIS/ProductRef"
xmlns:qp="http://fsrar.ru/WEGAIS/QueryParameters"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ns:Owner>
<ns:FSRAR_ID>ВАШ_FSRAR_ID</ns:FSRAR_ID>
</ns:Owner>
<ns:Document>
<ns:QueryAP>
<qp:Parameters>
<qp:Parameter>
<qp:Name>КОД</qp:Name>
<qp:Value>82601492477521007</qp:Value>
</qp:Parameter>
</qp:Parameters>
</ns:QueryAP>
</ns:Document>
</ns:Documents>
Обратите внимание: в поле ns:FSRAR_ID необходимо указать идентификатор вашей организации в ЕГАИС, прописанный в ключе доступа УТМ.
В более актуальных версиях форматов обмена применяется схема QueryAP_v2. Она возвращает расширенную структуру сведений об алкогольной продукции. Посмотрим на пример оформления такого запроса:
<?xml version="1.0" encoding="UTF-8"?>
<ns:Documents Version="1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ns="http://fsrar.ru/WEGAIS/WB_DOC_SINGLE_01"
xmlns:qp="http://fsrar.ru/WEGAIS/QueryParameters">
<ns:Owner>
<ns:FSRAR_ID>ВАШ_FSRAR_ID</ns:FSRAR_ID>
</ns:Owner>
<ns:Document>
<ns:QueryAP_v2>
<qp:Parameters>
<qp:Parameter>
<qp:Name>КОД</qp:Name>
<qp:Value>16754000001188592</qp:Value>
</qp:Parameter>
</qp:Parameters>
</ns:QueryAP_v2>
</ns:Document>
</ns:Documents>
Разберем по шагам порядок работы с запросами из 1С:
http://localhost:8080/opt/in/QueryAP или /opt/in/QueryAP_v2). Для этого в платформе 1С используются встроенные объекты HTTPСоединение и HTTPЗапрос.http://localhost:8080/opt/out). Полученный ответ ReplyAP парсится и загружается в информационную базу.При организации автоматических запросов классификатора важно учитывать следующие нюансы:
1. Прямые запросы без УТМ: Официального открытого API для прямого получения данных о продукции без УТМ не существует. Веб-интерфейсы личного кабинета и сервисы проверки марок защищены графической капчей и авторизацией по сертификатам. Попытки программного парсинга веб-форм нестабильны и могут приводить к блокировке по IP.
2. Ограничения частоты запросов: В ЕГАИС действуют таймауты на повторный запрос одной и той же номенклатуры (как правило, не чаще одного раза в 10–15 минут). При слишком частых обращениях по одному и тому же AlcCode модуль вернет квитанцию с ошибкой превышения частоты.
3. Использование встроенных объектов 1С: Для выполнения HTTP-запросов к УТМ рекомендуется применять стандартные средства платформы HTTPСоединение вместо устаревших COM-объектов Windows (таких как WinHttp.WinHttpRequest.5.1). Это гарантирует кроссплатформенность и стабильную работу кластера серверов 1С как под управлением Windows, так и на Linux.