Приветствуем вас, коллеги! В сфере автоматизации розничной торговли алкогольной продукцией интеграция с ЕГАИС через Универсальный транспортный модуль (УТМ) нередко преподносит сюрпризы. Одна из самых распространенных и вводящих в заблуждение проблем — когда при запуске сеанса обмена в 1С программа рапортует об «успешном завершении», но список документов «ТТН ЕГАИС (входящие)» остается абсолютно пустым.
В этой статье мы подробно разберем, почему возникает данная коллизия, как функционирует очередь документов в УТМ, каким образом сторонняя система (например, СБИС или Контур.Маркет) может «угонять» ваши накладные и как правильно настроить программное обеспечение, чтобы восстановить корректный документооборот.
Для начала давайте проанализируем, что именно происходит на техническом уровне, когда мы нажимаем кнопку «Выполнить обмен» в 1С:Рознице. Программа отправляет HTTP-запрос к УТМ, который обычно развернут локально по адресу http://localhost:8080.
Событие «Обмен прошел успешно» означает лишь то, что:
Transport активна и отвечает на запросы.200 OK.Если к моменту проверки база данных УТМ оказалась пуста (входящих документов в ней физически нет), 1С просто фиксирует отсутствие новых пакетов и штатно закрывает сессию обмена. Ошибки при этом не возникает, поскольку протокол обмена не нарушен.
Если клиент ведет оперативный учет продаж в СБИС, а розничные продажи планирует переводить в 1С:Розницу, то на одном компьютере (или в одной локальной сети) часто оказываются запущены две товароучетные системы, настроенные на один и тот же экземпляр УТМ. В этом кроется фундаментальная ошибка интеграции.
Давайте выясним, как работает механизм очереди сообщений в УТМ по принципу FIFO (First In, First Out):
DELETE, которая физически стирает обработанный XML-файл из памяти УТМ, чтобы база модуля не разрасталась.В результате, когда пользователь вручную запускает обмен в 1С:Рознице, накладных в УТМ уже просто нет — их «угнал» и удалил СБИС. Настраивать две независимые системы на один УТМ — это классический пример конфликта за ресурсы.
Если мы столкнулись с подобным поведением системы, давайте выполним совместную диагностику по шагам.
Прежде чем грешить на настройки 1С, нам нужно убедиться, присутствуют ли вообще какие-то файлы во входящем буфере модуля. Для этого откроем любой браузер на компьютере, где установлен УТМ, и перейдем по адресу:
http://localhost:8080/
На главной странице веб-интерфейса перейдем на вкладку «Входящие» (или «Исходящие»). Если этот список пуст, значит, документы действительно были стерты сторонним софтом либо еще не поступили от поставщика.
Обратим внимание на лог обмена в 1С. Если программа пишет, что количество измененных элементов больше нуля (например, 1, 2, 3), но сами ТТН в интерфейсе не появляются, это верный признак того, что 1С успела перехватить лишь технические квитанции (тикеты) или ответы на чужие запросы, которые инициировал СБИС. Полноценный документ (сама накладная) при этом ушел в СБИС, а 1С получила лишь разрозненные куски «чужого» документооборота, которые она не может связать со своими объектами и отбрасывает.
Чтобы подтвердить гипотезу с перехватом документов СБИСом, выполним следующие действия:
Saby или SBIS).Мы имеем два рабочих сценария бесконфликтного сосуществования программного обеспечения.
Если клиент готов отказаться от СБИС в пользу 1С, необходимо полностью исключить обращение СБИС к УТМ. Для этого:
8080 теперь слушает исключительно 1С:Розница.Если клиенту жизненно необходимо использовать обе системы, настройте их взаимодействие так, чтобы только одна система напрямую общалась с УТМ.
Например, СБИС забирает все ТТН из ЕГАИС в свое облако, а 1С импортирует эти накладные уже из облачного кабинета СБИС с помощью специальной внешней обработки интеграции. При такой схеме прямой конфликт за файлы в локальном УТМ исключен.
Если СБИС уже забрал и удалил ТТН из УТМ, но вам кровь из носу нужно провести их именно в 1С:Рознице, эти документы необходимо запросить из системы ЕГАИС заново. Рассмотрим три способа реализации этой задачи.
В конфигурации 1С:Розница перейдем в список входящих документов ЕГАИС. Выполним следующие действия:
TTN-XXXXXXXXXX). Этот номер можно подсмотреть в СБИСе или спросить у поставщика.После этого 1С сформирует XML-запрос типа QueryResendDoc и отправит его в УТМ. В течение 10–15 минут сервер ЕГАИС пришлет дубликат накладной обратно в ваш УТМ.
Давайте посмотрим на пример кода, который вызывается платформой при отправке такого запроса (для общего понимания процесса программистами):
ПараметрыЗапроса = Новый Структура();
ПараметрыЗапроса.Вставить("ИдентификаторТТН", "TTN-0123456789");
ПараметрыЗапроса.Вставить("ОрганизацияЕГАИС", Объект.ОрганизацияЕГАИС);
ИнтеграцияЕГАИС.ЗапроситьДокументПоИдентификатору(ПараметрыЗапроса);
В современных версиях УТМ (начиная с ветки 4.x) есть встроенный функционал перезапроса:
http://localhost:8080/.TTN-... и FSRAR_ID получателя.Если предыдущие способы не сработали, воспользуемся официальным порталом:
egais.ru с помощью аппаратного ключа.Важное ограничение ЕГАИС: Повторный запрос одной и той же накладной жестко лимитирован серверами Росалкогольтабакконтроля. Запрашивать одну ТТН можно не чаще, чем один раз в 10–15 минут. Если вы будете отправлять запросы непрерывно, сервер начнет присылать отказы.
Что делать, если сторонние программы гарантированно отключены, но документы все равно не приходят? Давайте проанализируем специфические внутренние проблемы самой платформы 1С.
В некоторых новых релизах конфигурации «Розница» наблюдается баг: если в информационной базе не включено или не настроено регламентное задание опроса УТМ, интерактивное нажатие на кнопку «Выполнить обмен» на главной панели не приводит к отправке реальных запросов.
В качестве временного обходного решения перейдем в раздел «Протокол обмена с ЕГАИС», найдем там команду «Выполнить обмен» и запустим ее принудительно. Также проверьте настройки регламентных заданий в базе:
РегламентныеЗаданияСервер.УстановитьАктивностьРегламентногоЗадания(
"ЗапросДанныхЕГАИС",
Истина
);
Иногда файлы из УТМ считываются, но при попытке записать их в базу 1С происходит критическая ошибка, и транзакция откатывается назад. При этом в интерфейсе пользователя никаких сообщений не выводится, а обмен помечается как «успешный» (так как связь с УТМ была).
Типичный пример — ошибка при заполнении регистров накопления или сведений:
«Запись не верна! Период не может быть пустым! (Регистр...»
Чтобы выявить такие скрытые падения, обязательно откроем «Журнал регистрации» в 1С (меню Администрирование -> Обслуживание -> Журнал регистрации) и установим отбор по критическим ошибкам в момент проведения обмена.
Форматы документов ЕГАИС регулярно обновляются (происходит переход с V2 на V3, а затем на V4). Если ваша конфигурация 1С:Розница давно не обновлялась, встроенная библиотека интеграции просто не сможет распознать новую структуру XML-схемы, присланную УТМ. 1С сочтет файл поврежденным или неподдерживаемым и проигнорирует его импорт. Решение здесь только одно — регулярное обновление конфигурации до актуального релиза.
Мы детально разобрали неочевидную проблему «исчезновения» накладных ЕГАИС. Главный вывод: никогда не используйте два разных программных продукта для прямого опроса одного УТМ. Сделайте выбор в пользу единой системы автоматизации либо настройте их интеграцию по схеме «один владелец УТМ — остальные получатели данных из его базы». Успешной вам автоматизации и стабильных обменов!