Как исправить ошибку «Попытка продажи дубля продукции» в 1С:Розница при работе с ЕГАИС?

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

В процессе розничной торговли алкогольной продукцией пользователи часто сталкиваются с ситуацией, когда при попытке пробить бутылку система выдает ошибку: «Не принято УТМ. Попытка продажи дубля продукции». Это происходит даже в тех случаях, когда товар точно является легальным, а марка ранее не продавалась. Особенно часто проблема возникает после технических сбоев, зависаний Универсального транспортного модуля (УТМ) или временного отсутствия интернета в момент печати чека. Давайте подробно разберем, почему это происходит и как с этим бороться.

Выясняем причину: почему УТМ «блокирует» марку

Проанализируем техническую сторону вопроса. Когда 1С отправляет запрос на фиксацию продажи в УТМ, данные попадают во внутреннюю базу данных модуля (она построена на СУБД Apache Derby). В этот момент марка получает статус «в процессе продажи». Если связь с серверами ФСРАР обрывается или служба УТМ аварийно завершает работу, запись о продаже может «зависнуть» в локальной базе модуля.

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

Метод 1: Ожидание очистки кэша (Таймаут)

Рассмотрим самый простой, но не всегда удобный метод. В системе ЕГАИС установлены определенные временные интервалы для обработки запросов. Как отмечают участники обсуждения, у РАР (Росалкогольрегулирования) выставлен таймаут около 5 минут. Однако на практике это время может варьироваться от 5 до 15 минут.

В течение этого времени УТМ пытается либо получить подтверждение от сервера, либо сбросить «повисшую» сессию. Если у кассира есть возможность отложить товар и обслужить следующего покупателя, рекомендуется просто подождать. Через некоторое время блокировка в базе Apache Derby будет снята автоматически, и чек пройдет без дополнительных манипуляций.

Метод 2: Программная кнопка «Сторнировать в ЕГАИС»

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

Для этого в конфигурации (например, 1С:Розница) можно добавить кнопку «Сторнировать только в ЕГАИС». При нажатии на неё программа должна выполнить следующие действия:

  1. Сформировать объект ЧекЕГАИС с видом операции «Возврат».
  2. Подставить в него проблемную акцизную марку.
  3. Отправить документ в УТМ без печати фискального чека на ККТ.

Посмотрим на пример логики, которую можно реализовать в коде:


// Пример упрощенной процедуры для освобождения марки в ЕГАИС
Процедура СторнироватьМаркуВЕГАИС(ПроблемнаяМарка, ОрганизацияЕГАИС)
    
    НовыйВозврат = Документы.ЧекЕГАИС.СоздатьДокумент();
    НовыйВозврат.Дата = ТекущаяДата();
    НовыйВозврат.Организация = ОрганизацияЕГАИС;
    НовыйВозврат.ВидОперации = Перечисления.ВидыОперацийЧекаЕГАИС.Возврат;
    
    НоваяСтрока = НовыйВозврат.Товары.Добавить();
    НоваяСтрока.ШтрихкодАкцизнойМарки = ПроблемнаяМарка;
    // Заполнение остальных обязательных реквизитов (номенклатура, количество, цена)
    
    НовыйВозврат.Записать(РежимЗаписиДокумента.Запись);
    
    // Отправка запроса в УТМ
    ПараметрыОтправки = ИнтеграцияЕГАИС.ПараметрыОтправкиЧека();
    ИнтеграцияЕГАИС.ОтправитьЧекВУТМ(НовыйВозврат.Ссылка, ПараметрыОтправки);
    
КонецПроцедуры

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

Метод 3: Проверка реального статуса на портале ФСРАР

Прежде чем предпринимать радикальные меры, мы рекомендуем проверить, не зафиксирована ли продажа в облаке ЕГАИС, несмотря на ошибку в 1С. Сделать это можно через сервис check.fsrar.ru.

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

Метод 4: Техническое обслуживание УТМ

Если ошибка дубля повторяется постоянно и «ожидание» не помогает, проанализируем состояние самого транспортного модуля. Иногда помогает полная перезагрузка служб:

  1. Откройте «Службы» Windows.
  2. Найдите службы Transport, Monitoring и Updater (относящиеся к УТМ).
  3. Остановите их все.
  4. Подождите 10-20 секунд и запустите их снова, начиная с Transport.

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

Итоги и рекомендации

Подводя итог, можно сказать, что ошибка «Попытка продажи дубля» — это в 90% случаев следствие рассинхронизации локального кэша УТМ и учетной системы. Для борьбы с ней мы рекомендуем:

← На главную