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

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

При работе с алкогольной и пивной продукцией в решениях 1С пользователи регулярно сталкиваются со специфическими сбоями обмена с ЕГАИС. Один из самых неприятных и вводящих в заблуждение сбоев — повторная автоматическая отправка актов списания после закрытия кассовой смены. Проблема имеет массовый характер и встречается в конфигурации 1С:Розница редакций 2.2 и 2.3 (вплоть до актуальных релизов).

В этой статье мы подробно разберем, почему возникает этот сбой, проанализируем внутренние механизмы взаимодействия программы с УТМ (Универсальным транспортным модулем) и рассмотрим пошаговые инструкции, как исправить эту проблему и вернуть зависшим документам корректный статус.

---

В чем суть проблемы и как устроен механизм сбоя?

Давайте пошагово проанализируем ситуацию, которая происходит в системе в момент закрытия смены кассиром:

  1. Формирование и первичная отправка акта: При закрытии смены в РМК (рабочем месте кассира) программа автоматически генерирует документ АктСписанияЕГАИС для немаркируемого алкоголя (например, пива и слабоалкогольных напитков) и передает его в УТМ.
  2. Проблема фиксации статуса в 1С: УТМ успешно принимает XML-файл акта и отправляет его на сервера ЕГАИС. Однако в этот же момент в самой программе 1С происходит сбой транзакции. Система по какой-то причине (нехватка прав у кассира, сетевая задержка, блокировка базы данных) не успевает записать в свой регистр сведений СтатусыДокументовЕГАИС информацию о том, что документ уже ушел в УТМ. В базе 1С статус акта так и остается в положении «Черновик» или «К передаче».
  3. Повторный обмен: Спустя некоторое время администратор или другой пользователь с полными правами запускает сеанс обмена данными с ЕГАИС. Программа видит в базе «неотправленный» акт списания и отправляет его повторно.
  4. Реакция ЕГАИС: Так как повторный документ отправляется с абсолютно тем же уникальным идентификатором (UUID), ЕГАИС расценивает это как дубль и отклоняет его. В ответ приходит тикет с ошибкой вида: «Документ с таким UUID уже обработан» или «Уже зарегистрирован документ с таким UUID».
  5. Результат в 1С: Программа считывает из УТМ этот ответ с ошибкой и присваивает акту статус «Ошибка передачи». Возникает парадокс: фактическое списание на серверах ЕГАИС произошло еще при первом запросе, но в базе 1С документ горит красным цветом и считается ошибочным.

---

Глубинные технические причины сбоя

Рассмотрим подробнее три основные причины, из-за которых транзакция записи статуса в 1С прерывается в момент отправки:

1. Ограничение прав учетной записи кассира

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

2. Двухэтапная схема списания (Регистр №1 и Регистр №2)

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

Этот процесс порождает высокую нагрузку на СУБД. В клиент-серверных или веб-серверных базах (публикация на IIS / Apache) это часто приводит к таймаутам веб-соединения. Документ отправляется в УТМ, но соединение рвется до того, как веб-сервер успеет вернуть в 1С подтверждение успешной отправки для смены статуса.

3. Особенности РИБ (Распределенных информационных баз)

Если обмен с ЕГАИС настроен на периферийном узле, а центральный узел пытается синхронизировать или продублировать отправку документов до завершения миграции пакетов данных между узлами, система также может продублировать запрос.

---

Способы решения и обхода проблемы

Выяснив причины, разберем по шагам, как настроить систему для стабильной работы и как вернуть корректный статус уже зависшим документам.

Решение 1. Тонкая настройка прав кассиров

Необходимо предоставить пользователям, закрывающим смену, доступ к механизмам ЕГАИС:

  1. Перейдите в раздел Администрирование — Настройки пользователей и прав — Профили групп доступа.
  2. Найдите профиль, под которым работают ваши продавцы (например, «Продавец»).
  3. Добавьте в разрешенные роли роль АдминистраторЕГАИС или создайте отдельный профиль с правами на интерактивный обмен и чтение/запись данных ЕГАИС. Это позволит сессии кассира беспрепятственно менять данные в регистре СтатусыДокументовЕГАИС.

Решение 2. Перенос обмена на регламентное задание (Рекомендуется)

Чтобы полностью исключить влияние прав кассира и зависание интерфейса РМК при закрытии смены, рекомендуется перевести отправку актов в фоновый режим на сервере:

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

Решение 3. Увеличение таймаута соединения с УТМ

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

  1. Откройте настройки интеграции с ЕГАИС и перейдите в Параметры подключения к УТМ.
  2. Найдите параметр Таймаут соединения (сек).
  3. Увеличьте значение по умолчанию (обычно там стоит 15 или 30 секунд) до 120 секунд. Это даст системе больше времени на завершение транзакции и обновление статуса документа.

Решение 4. Как вернуть зависшим актам статус «Проведен»?

Если у вас уже накопилась пачка актов со статусом «Ошибка передачи», у которых в протоколе обмена зафиксировано успешное первое списание и отказ по повторному UUID, исправим их вручную:

  1. Откройте проблемный Акт списания ЕГАИС.
  2. Перейдите на вкладку Протокол обмена.
  3. Проанализируйте лог запросов. Вы увидите первый успешный ответ (тикет) и последующий ответ с ошибкой о дублировании UUID. УДАЛИТЕ из протокола последнюю запись, содержащую ошибку.
  4. Нажмите кнопку Перечитать данные (или «Обновить статус»). 1С обратится к оставшейся в протоколе успешной записи и переведет статус акта в положение «Проведен в ЕГАИС».

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

  1. В главном меню программы откройте Функции для технического специалиста (в старых релизах — «Все функции»).
  2. Найдите регистр сведений СтатусыДокументовЕГАИС.
  3. Найдите записи по нужным актам списания и вручную измените их статус на Проведен в ЕГАИС.

Для продвинутых администраторов автоматизировать этот процесс в распределенной базе можно с помощью внешней обработки, выполняющей следующий код:


НаборЗаписей = РегистрыСведений.СтатусыДокументовЕГАИС.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Документ.Установить(СсылкаНаАктСписания);
НаборЗаписей.Прочитать();

Если НаборЗаписей.Количество() > 0 Тогда
    Для Каждого Запись Из НаборЗаписей Цикл
        Запись.Статус = Перечисления.СтатусыДокументовЕГАИС.ПроведенВЕГАИС;
    КонецЦикла;
    НаборЗаписей.Записать();
КонецЕсли;

Использование этого кода позволяет быстро скорректировать состояние регистров программным путем, избегая долгой ручной работы с протоколами обмена.

---

Резюме

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

← На главную