В процессе работы с алкогольной продукцией часто возникает необходимость отследить «судьбу» конкретной бутылки: когда она была получена, по каким накладным перемещалась и числится ли она на остатках организации. Несмотря на то что в интерфейсе многих учетных систем кажется, что запрос идет напрямую по марке, технически взаимодействие с УТМ (Универсальным транспортным модулем) устроено сложнее. В этой статье мы подробно разберем алгоритм получения данных о марке, проанализируем структуру необходимых XML-файлов и выясним, как связать 150-символьный код марки с историей движений.
Важно понимать архитектуру системы ЕГАИС. История движений в системе фиксируется не за конкретным кодом марки (DataMatrix), а за партией продукции, которая идентифицируется Справкой 2 (в текущей терминологии — Inform2RegId или номер формы Б). Марка является лишь аналитическим признаком, привязанным к этой справке.
Рассмотрим стандартную цепочку действий, которую нам необходимо реализовать в 1С для получения полной информации:
Inform2RegId).Первым делом нам нужно выяснить, к какой Справке 2 привязана наша марка. Для этого в УТМ существует специализированный запрос QueryBarcodeInfo. Мы отправляем считанный сканером код (длиной 150 или 68 символов), а система возвращает нам данные о типе марки и, самое главное, идентификаторы документов.
Проанализируем структуру XML-запроса для получения данных о штрихкоде:
<?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>030000123456</ns:FSRAR_ID>
</ns:Owner>
<ns:Document>
<ns:QueryBarcodeInfo>
<qp:Parameters>
<qp:Parameter>
<qp:Name>BARCODE</qp:Name>
<qp:Value>ВАШ_КОД_МАРКИ_150_СИМВОЛОВ</qp:Value>
</qp:Parameter>
</qp:Parameters>
</ns:QueryBarcodeInfo>
</ns:Document>
</ns:Documents>
После отправки этого файла в УТМ (через POST-запрос на адрес /opt/in/QueryBarcodeInfo), через некоторое время во входящей очереди (/opt/out) появится ответ. Из этого ответа нам необходимо извлечь значение узла Inform2RegId. Это и есть ключ к истории движений.
Теперь, когда у нас есть номер Справки 2, мы можем запросить историю всех операций, которые проводились с данной партией продукции. Разберем структуру XML-файла QueryFormBHistory, которую необходимо сформировать:
<?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>030000123456</ns:FSRAR_ID>
</ns:Owner>
<ns:Document>
<ns:QueryFormBHistory>
<qp:Parameters>
<qp:Parameter>
<qp:Name>RFB</qp:Name>
<qp:Value>FB-000000012345678</qp:Value>
</qp:Parameter>
</qp:Parameters>
</ns:QueryFormBHistory>
</ns:Document>
</ns:Documents>
В данном запросе:
Важный нюанс: История по Справке 2 возвращается только в том случае, если ваша организация когда-либо владела этой продукцией (принимала на баланс, перемещала или продавала). Если вы отправите запрос с «чужого» УТМ по продукции, которая никогда не проходила через ваш FSRAR_ID, система может вернуть пустой ответ или ошибку доступа.
Для современной продукции (с новыми марками DataMatrix), которая учитывается поштучно, полезно использовать запрос остатков по Регистру №3. Это позволяет убедиться, числится ли конкретная марка за вами в данный момент. Для этого используется запрос QueryRestBCode.
Рассмотрим, как проанализировать ситуацию, если история не приходит:
QueryRestBCode не возвращает вашу марку, значит, она была списана или не была принята корректно.Если программная реализация через API кажется избыточной для разовой проверки, рассмотрим альтернативные варианты, которые предоставляет регулятор:
1. Личный кабинет ФСРАР (service.egais.ru)
В разделе «Проверка марок» можно выполнить поиск по коду. Преимущество этого метода в том, что авторизация происходит по ключу RSA, и система не требует ввода капчи для каждой проверки. Здесь можно увидеть полную цепочку — от производителя до текущего статуса в системе.
2. Мобильное приложение «АнтиКонтрафакт Алко»
Официальное приложение позволяет оперативно получить информацию о легальности продукции, дате розлива и производителе. Это удобный инструмент для сотрудников склада или торгового зала, не требующий написания кода.
Для автоматизации процесса получения истории в 1С, рекомендуем реализовать следующий алгоритм в коде:
QueryBarcodeInfo.Inform2RegId.QueryFormBHistory на основе полученного ID.Использование связки этих двух запросов является единственным легитимным способом получения истории движений через программный интерфейс УТМ ЕГАИС.