Почему не приходят остатки на складе ЕГАИС в 1С:Розница и как это исправить

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

Рассмотрим распространенную проблему, с которой сталкиваются пользователи конфигурации 1С:Розница при работе с алкогольной продукцией: запрос остатков по Регистру №1 (склад) зависает со статусом «Отправлен запрос», при этом остатки по торговому залу (Регистр №2) и ТТН поступают без задержек. Выясним основные причины такого поведения и разберем способы восстановления корректного обмена с ЕГАИС.

Причины возникновения проблемы

Проанализируем, почему остатки в торговом зале могут запрашиваться штатно, а остатки на складе — игнорироваться или зависать на этапе обработки:

  1. Большой объем передаваемых данных. В отличие от торгового зала, запрос по Регистру №1 возвращает детализированную информацию с регистрационными номерами справок (Справки 2). Если номенклатурный перечень организации насчитывает тысячи позиций (например, десятки тысяч строк остатков), итоговый XML-файл ответа получается огромным.
  2. Нехватка выделенной оперативной памяти для Java (JVM) в УТМ. При разборе крупных XML-структур встроенная служба транспорта (УТМ) расходует существенный объем RAM. Если лимит памяти в настройках Java ограничен, возникает ошибка java.lang.OutOfMemoryError: Java heap space, и ответ с сервера ЕГАИС не может быть обработан.
  3. Ограничения ЕГАИС по частоте запросов. Сервер ЕГАИС накладывает жесткий лимит по таймаутам: запрашивать остатки по Регистру №1 по одному FSRAR_ID разрешено не чаще одного раза в час. Повторные частые запросы блокируются сервером.
  4. Устаревшая версия УТМ или сбой базы данных transportDB. Наличие багов в старых сборках универсального транспортного модуля или переполнение внутренней базы данных документов приводит к «зависанию» обработки входящих пакетов.
  5. Таймауты сетевых экранов и 1С. Платформа 1С или защитное ПО на компьютере могут разрывать длительные HTTP-соединения по порту 8080 при скачивании «тяжелых» ответов.

Способ 1. Обновление Универсального транспортного модуля (УТМ)

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

  1. Проверим текущую версию УТМ, открыв веб-браузер и перейдя по адресу http://localhost:8080.
  2. Загрузим и установим обновленный дистрибутив УТМ, поддерживающий стабильную работу с объемными ответами.
  3. После обновления и перезапуска служб повторно отправим запрос остатков из 1С:Розница (предварительно выждав интервал в 1 час с момента последнего запроса).

Способ 2. Увеличение выделяемой оперативной памяти для УТМ (Java JVM)

Если в логах УТМ (файл transport_info.log) зафиксированы ошибки нехватки памяти OutOfMemoryError, выполним настройку параметров выделения RAM для Java-процесса.

  1. Остановим службу транспорта УТМ transporter через оснастку служб Windows.
  2. Перейдем в каталог с исполняемыми файлами службы, по умолчанию это C:\UTM\transporter\bin\.
  3. Удалим службу, запустив скрипт Uninstall.bat от имени администратора.
  4. Откроем для редактирования файл Install.bat в текстовом редакторе.
  5. Найдем ключ --JvmOptions и укажем необходимые границы оперативной памяти, например: --JvmMs 500 --JvmMx 1000 (или увеличим верхний предел --JvmMx до 2048 при очень больших объемах номенклатуры).
  6. Запустим файл Install.bat от имени администратора для повторной установки службы УТМ с новыми параметрами.
  7. Запустим службу transporter и проверим обработку запросов.

Способ 3. Очистка локальной базы данных УТМ (transportDB)

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

  1. Остановим службу transporter.
  2. Перейдем в каталог C:\UTM\transporter\.
  3. Переименуем или удалим папку transportDB.
  4. Запустим службу транспорта. При старте УТМ автоматически создаст чистую базу данных и повторно запросит с сервера ЕГАИС все необработанные входящие пакеты.

Способ 4. Ручная загрузка XML-файла остатков в 1С

В случаях, когда платформа 1С прерывает операцию по таймауту при попытке скачивания огромного XML-дерева через HTTP-запрос, выполним ручную загрузку файла.

  1. Откроем веб-интерфейс УТМ в браузере по адресу http://localhost:8080.
  2. Найдем во входящих документах ответ на запрос остатков (тип документа ReplyRests_v2).
  3. Сохраним входящий XML-файл на локальный диск.
  4. В программе 1С:Розница загрузим данные остатков из сохраненного XML-файла с помощью встроенных сервисов или внешней обработки чтения XML ЕГАИС.

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

← На главную