Почему обмен с ЕГАИС в 1С:Розница проходит успешно, но накладные (ТТН) не появляются?

Системный администратор 1С v8.3 (Управляемые формы) 1С:Розница Управленческий учет Торговля и дистрибуция
← На главную

Приветствуем вас, коллеги! В сфере автоматизации розничной торговли алкогольной продукцией интеграция с ЕГАИС через Универсальный транспортный модуль (УТМ) нередко преподносит сюрпризы. Одна из самых распространенных и вводящих в заблуждение проблем — когда при запуске сеанса обмена в 1С программа рапортует об «успешном завершении», но список документов «ТТН ЕГАИС (входящие)» остается абсолютно пустым.

В этой статье мы подробно разберем, почему возникает данная коллизия, как функционирует очередь документов в УТМ, каким образом сторонняя система (например, СБИС или Контур.Маркет) может «угонять» ваши накладные и как правильно настроить программное обеспечение, чтобы восстановить корректный документооборот.

Выясняем техническую суть: почему статус «Обмен выполнен успешно» вводит в заблуждение?

Для начала давайте проанализируем, что именно происходит на техническом уровне, когда мы нажимаем кнопку «Выполнить обмен» в 1С:Рознице. Программа отправляет HTTP-запрос к УТМ, который обычно развернут локально по адресу http://localhost:8080.

Событие «Обмен прошел успешно» означает лишь то, что:

  1. УТМ физически запущен, служба Transport активна и отвечает на запросы.
  2. 1С успешно авторизовалась в модуле с помощью аппаратного ключа (JaCarta или Рутокен).
  3. Программа отправила в УТМ исходящие запросы и заглянула в очередь входящих сообщений (базу данных УТМ).
  4. УТМ вернул стандартный HTTP-ответ 200 OK.

Если к моменту проверки база данных УТМ оказалась пуста (входящих документов в ней физически нет), 1С просто фиксирует отсутствие новых пакетов и штатно закрывает сессию обмена. Ошибки при этом не возникает, поскольку протокол обмена не нарушен.

Роль СБИС (Saby) и других систем в «перехвате» документов

Если клиент ведет оперативный учет продаж в СБИС, а розничные продажи планирует переводить в 1С:Розницу, то на одном компьютере (или в одной локальной сети) часто оказываются запущены две товароучетные системы, настроенные на один и тот же экземпляр УТМ. В этом кроется фундаментальная ошибка интеграции.

Давайте выясним, как работает механизм очереди сообщений в УТМ по принципу FIFO (First In, First Out):

  1. Все входящие документы (ТТН, акты, квитанции, справочники), присылаемые сервером Росалкогольтабакконтроля, складываются в общую единую локальную очередь УТМ.
  2. Каждая учетная система периодически опрашивает УТМ на наличие новых XML-файлов.
  3. Служба СБИС (через Saby Plugin / СБИС Плагин) работает в фоновом режиме непрерывно и с очень коротким интервалом (каждые несколько секунд) забирает данные из УТМ.
  4. Критический момент: получив документ из УТМ, СБИС отправляет обратно команду DELETE, которая физически стирает обработанный XML-файл из памяти УТМ, чтобы база модуля не разрасталась.

В результате, когда пользователь вручную запускает обмен в 1С:Рознице, накладных в УТМ уже просто нет — их «угнал» и удалил СБИС. Настраивать две независимые системы на один УТМ — это классический пример конфликта за ресурсы.

Пошаговый алгоритм диагностики проблемы

Если мы столкнулись с подобным поведением системы, давайте выполним совместную диагностику по шагам.

Шаг 1. Проверяем содержимое УТМ через веб-интерфейс

Прежде чем грешить на настройки 1С, нам нужно убедиться, присутствуют ли вообще какие-то файлы во входящем буфере модуля. Для этого откроем любой браузер на компьютере, где установлен УТМ, и перейдем по адресу:

http://localhost:8080/

На главной странице веб-интерфейса перейдем на вкладку «Входящие» (или «Исходящие»). Если этот список пуст, значит, документы действительно были стерты сторонним софтом либо еще не поступили от поставщика.

Шаг 2. Анализируем количество измененных элементов в 1С

Обратим внимание на лог обмена в 1С. Если программа пишет, что количество измененных элементов больше нуля (например, 1, 2, 3), но сами ТТН в интерфейсе не появляются, это верный признак того, что 1С успела перехватить лишь технические квитанции (тикеты) или ответы на чужие запросы, которые инициировал СБИС. Полноценный документ (сама накладная) при этом ушел в СБИС, а 1С получила лишь разрозненные куски «чужого» документооборота, которые она не может связать со своими объектами и отбрасывает.

Шаг 3. Временно изолируем УТМ для проверки

Чтобы подтвердить гипотезу с перехватом документов СБИСом, выполним следующие действия:

  1. Полностью остановим службу «СБИС Плагин» через диспетчер задач Windows или панель служб (название службы может содержать Saby или SBIS).
  2. Запросим у поставщика новую тестовую накладную или сделаем перезапрос существующей ТТН (как это сделать — разберем ниже).
  3. Запустим обмен в 1С:Рознице. Если документ без проблем загрузился в 1С — гипотеза подтверждена.

Как решить конфликт интеграции двух систем

Мы имеем два рабочих сценария бесконфликтного сосуществования программного обеспечения.

Вариант А. Полный переход на 1С:Розницу

Если клиент готов отказаться от СБИС в пользу 1С, необходимо полностью исключить обращение СБИС к УТМ. Для этого:

Вариант Б. Интеграция 1С и СБИС через облачное API

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

Например, СБИС забирает все ТТН из ЕГАИС в свое облако, а 1С импортирует эти накладные уже из облачного кабинета СБИС с помощью специальной внешней обработки интеграции. При такой схеме прямой конфликт за файлы в локальном УТМ исключен.

Инструкция: как перезапросить и вернуть «угнанные» накладные в 1С

Если СБИС уже забрал и удалил ТТН из УТМ, но вам кровь из носу нужно провести их именно в 1С:Рознице, эти документы необходимо запросить из системы ЕГАИС заново. Рассмотрим три способа реализации этой задачи.

Способ 1. Запрос ТТН по идентификатору непосредственно в 1С:Рознице

В конфигурации 1С:Розница перейдем в список входящих документов ЕГАИС. Выполним следующие действия:

  1. Нажмем кнопку «Еще» на панели управления списком.
  2. Выберем команду «Запросить ТТН по идентификатору».
  3. В открывшемся окне введем 10-значный номер накладной (он имеет вид TTN-XXXXXXXXXX). Этот номер можно подсмотреть в СБИСе или спросить у поставщика.
  4. Нажмем кнопку «Отправить запрос».

После этого 1С сформирует XML-запрос типа QueryResendDoc и отправит его в УТМ. В течение 10–15 минут сервер ЕГАИС пришлет дубликат накладной обратно в ваш УТМ.

Давайте посмотрим на пример кода, который вызывается платформой при отправке такого запроса (для общего понимания процесса программистами):


ПараметрыЗапроса = Новый Структура();
ПараметрыЗапроса.Вставить("ИдентификаторТТН", "TTN-0123456789");
ПараметрыЗапроса.Вставить("ОрганизацияЕГАИС", Объект.ОрганизацияЕГАИС);
ИнтеграцияЕГАИС.ЗапроситьДокументПоИдентификатору(ПараметрыЗапроса);

Способ 2. Повторный запрос через веб-интерфейс УТМ

В современных версиях УТМ (начиная с ветки 4.x) есть встроенный функционал перезапроса:

  1. Перейдем в браузере по адресу http://localhost:8080/.
  2. Найдем раздел «Повторная отправка ТТН и Акта».
  3. Введем 10-значный номер накладной TTN-... и FSRAR_ID получателя.
  4. Нажмем кнопку «Отправить». Через некоторое время документ появится во входящих, и мы сможем забрать его в 1С (предварительно отключив плагин СБИС!).

Способ 3. Перезапрос через Личный кабинет ЕГАИС

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

  1. Зайдем на сайт egais.ru с помощью аппаратного ключа.
  2. Перейдем в личный кабинет и откроем раздел «Перезапрос накладных».
  3. Укажем свой FSRAR_ID и номер ТТН, после чего инициируем отправку.

Важное ограничение ЕГАИС: Повторный запрос одной и той же накладной жестко лимитирован серверами Росалкогольтабакконтроля. Запрашивать одну ТТН можно не чаще, чем один раз в 10–15 минут. Если вы будете отправлять запросы непрерывно, сервер начнет присылать отказы.

Скрытые технические проблемы на стороне 1С:Розницы

Что делать, если сторонние программы гарантированно отключены, но документы все равно не приходят? Давайте проанализируем специфические внутренние проблемы самой платформы 1С.

Проблема с регламентными заданиями

В некоторых новых релизах конфигурации «Розница» наблюдается баг: если в информационной базе не включено или не настроено регламентное задание опроса УТМ, интерактивное нажатие на кнопку «Выполнить обмен» на главной панели не приводит к отправке реальных запросов.

В качестве временного обходного решения перейдем в раздел «Протокол обмена с ЕГАИС», найдем там команду «Выполнить обмен» и запустим ее принудительно. Также проверьте настройки регламентных заданий в базе:


РегламентныеЗаданияСервер.УстановитьАктивностьРегламентногоЗадания(
    "ЗапросДанныхЕГАИС", 
    Истина
);

Ошибки транзакций и некорректный XML-парсинг

Иногда файлы из УТМ считываются, но при попытке записать их в базу 1С происходит критическая ошибка, и транзакция откатывается назад. При этом в интерфейсе пользователя никаких сообщений не выводится, а обмен помечается как «успешный» (так как связь с УТМ была).

Типичный пример — ошибка при заполнении регистров накопления или сведений:

«Запись не верна! Период не может быть пустым! (Регистр...»

Чтобы выявить такие скрытые падения, обязательно откроем «Журнал регистрации» в 1С (меню Администрирование -> Обслуживание -> Журнал регистрации) и установим отбор по критическим ошибкам в момент проведения обмена.

Устаревшая библиотека интеграции

Форматы документов ЕГАИС регулярно обновляются (происходит переход с V2 на V3, а затем на V4). Если ваша конфигурация 1С:Розница давно не обновлялась, встроенная библиотека интеграции просто не сможет распознать новую структуру XML-схемы, присланную УТМ. 1С сочтет файл поврежденным или неподдерживаемым и проигнорирует его импорт. Решение здесь только одно — регулярное обновление конфигурации до актуального релиза.

Резюме

Мы детально разобрали неочевидную проблему «исчезновения» накладных ЕГАИС. Главный вывод: никогда не используйте два разных программных продукта для прямого опроса одного УТМ. Сделайте выбор в пользу единой системы автоматизации либо настройте их интеграцию по схеме «один владелец УТМ — остальные получатели данных из его базы». Успешной вам автоматизации и стабильных обменов!

← На главную