В процессе розничной торговли алкогольной продукцией пользователи часто сталкиваются с ситуацией, когда при попытке пробить бутылку система выдает ошибку: «Не принято УТМ. Попытка продажи дубля продукции». Это происходит даже в тех случаях, когда товар точно является легальным, а марка ранее не продавалась. Особенно часто проблема возникает после технических сбоев, зависаний Универсального транспортного модуля (УТМ) или временного отсутствия интернета в момент печати чека. Давайте подробно разберем, почему это происходит и как с этим бороться.
Проанализируем техническую сторону вопроса. Когда 1С отправляет запрос на фиксацию продажи в УТМ, данные попадают во внутреннюю базу данных модуля (она построена на СУБД Apache Derby). В этот момент марка получает статус «в процессе продажи». Если связь с серверами ФСРАР обрывается или служба УТМ аварийно завершает работу, запись о продаже может «зависнуть» в локальной базе модуля.
Даже если в самой 1С чек не был распечатан и транзакция считается неудавшейся, УТМ продолжает хранить информацию о том, что эта марка уже «ушла» в работу. При повторной попытке пробить ту же бутылку УТМ сверяет марку со своим локальным списком незавершенных или уже отправленных операций и выдает ошибку дубля, предотвращая двойную продажу одной и той же единицы товара.
Рассмотрим самый простой, но не всегда удобный метод. В системе ЕГАИС установлены определенные временные интервалы для обработки запросов. Как отмечают участники обсуждения, у РАР (Росалкогольрегулирования) выставлен таймаут около 5 минут. Однако на практике это время может варьироваться от 5 до 15 минут.
В течение этого времени УТМ пытается либо получить подтверждение от сервера, либо сбросить «повисшую» сессию. Если у кассира есть возможность отложить товар и обслужить следующего покупателя, рекомендуется просто подождать. Через некоторое время блокировка в базе Apache Derby будет снята автоматически, и чек пройдет без дополнительных манипуляций.
Разберем более продвинутый способ, который предложили опытные разработчики на форуме. Если торговая точка с большой проходимостью не может ждать 15 минут, можно реализовать в интерфейсе рабочего места кассира (РМК) специальную функцию. Суть метода заключается в принудительной отправке чека возврата именно в систему ЕГАИС, чтобы «обнулить» статус марки в УТМ.
Для этого в конфигурации (например, 1С:Розница) можно добавить кнопку «Сторнировать только в ЕГАИС». При нажатии на неё программа должна выполнить следующие действия:
ЧекЕГАИС с видом операции «Возврат».Посмотрим на пример логики, которую можно реализовать в коде:
// Пример упрощенной процедуры для освобождения марки в ЕГАИС
Процедура СторнироватьМаркуВЕГАИС(ПроблемнаяМарка, ОрганизацияЕГАИС)
НовыйВозврат = Документы.ЧекЕГАИС.СоздатьДокумент();
НовыйВозврат.Дата = ТекущаяДата();
НовыйВозврат.Организация = ОрганизацияЕГАИС;
НовыйВозврат.ВидОперации = Перечисления.ВидыОперацийЧекаЕГАИС.Возврат;
НоваяСтрока = НовыйВозврат.Товары.Добавить();
НоваяСтрока.ШтрихкодАкцизнойМарки = ПроблемнаяМарка;
// Заполнение остальных обязательных реквизитов (номенклатура, количество, цена)
НовыйВозврат.Записать(РежимЗаписиДокумента.Запись);
// Отправка запроса в УТМ
ПараметрыОтправки = ИнтеграцияЕГАИС.ПараметрыОтправкиЧека();
ИнтеграцияЕГАИС.ОтправитьЧекВУТМ(НовыйВозврат.Ссылка, ПараметрыОтправки);
КонецПроцедуры
Важный нюанс: как подтверждают участники дискуссии, такие действия не приводят к расхождениям в остатках, если первый чек действительно не был зафиксирован в ЕГАИС. Однако этот метод требует осторожности. Если первый чек все-таки «проскочил» в систему, а вы делаете возврат, марка снова станет доступной к продаже. Всегда лучше предварительно убедиться в статусе чека.
Прежде чем предпринимать радикальные меры, мы рекомендуем проверить, не зафиксирована ли продажа в облаке ЕГАИС, несмотря на ошибку в 1С. Сделать это можно через сервис check.fsrar.ru.
Если сервис показывает, что продажа по этой марке уже прошла, значит, 1С просто не смогла получить ответную квитанцию. В этом случае повторно пробивать чек нельзя — это будет нарушением. Вам необходимо либо «подтянуть» статус чека в 1С (через запросы в УТМ), либо оформить корректный возврат, если покупатель отказался от товара.
Если ошибка дубля повторяется постоянно и «ожидание» не помогает, проанализируем состояние самого транспортного модуля. Иногда помогает полная перезагрузка служб:
Transport, Monitoring и Updater (относящиеся к УТМ).Transport.В исключительных случаях, когда локальная база данных transportDB повреждена, технические специалисты прибегают к её очистке. Для этого при остановленных службах удаляется содержимое папки transportDB в директории установки УТМ. Внимание: это приведет к потере всех входящих и исходящих документов, которые еще не были загружены в 1С, поэтому используйте этот метод только как крайнюю меру.
Подводя итог, можно сказать, что ошибка «Попытка продажи дубля» — это в 90% случаев следствие рассинхронизации локального кэша УТМ и учетной системы. Для борьбы с ней мы рекомендуем: