При работе с маркированным алкоголем в розничной торговле одной из самых неприятных ситуаций является блокировка продажи на кассе. Типичный сценарий: кассир сканирует бутылку, но вместо формирования чека система выдает ошибку «Данная акцизная марка не найдена в системе». При этом по данным бухгалтерского учета товар числится на остатках, а приход был оформлен корректно. В данной статье мы подробно разберем, почему возникает этот программный сбой и как привести данные 1С в соответствие с реальностью ЕГАИС.
Для начала проанализируем механизм взаимодействия 1С, УТМ (Универсального транспортного модуля) и серверов ФСРАР. Когда мы пробиваем чек, происходит следующая цепочка событий:
Проблема «призрачных продаж» возникает, когда на 4-м или 5-м этапе происходит сбой (сетевая задержка, зависание кассового аппарата или аварийное завершение работы программы). В этом случае ЕГАИС уже считает марку списанной, а 1С об этом «не знает» и продолжает считать её находящейся в наличии. Рассмотрим подробнее, как проверить эту гипотезу.
Первым делом нам необходимо выяснить, что «думает» о марке государственная система. Для этого воспользуемся официальным сервисом проверки. Разберем этот процесс по шагам:
check1.fsrar.ru.Если в результате проверки вы видите статус «Списана чеком», значит, фактическая продажа в облаке ЕГАИС уже состоялась, несмотря на отсутствие бумажного чека и ошибку в 1С. Если же статус «В наличии на 1 регистре» или «На 2 регистре», то проблему нужно искать в сопоставлении номенклатуры внутри 1С.
Теперь проанализируем, где именно в программе 1С:Розница хранится информация о проблемной марке. Нам необходимо проверить специализированный регистр. Для этого выполним следующие действия:
Акцизные марки ЕГАИС.В этом регистре мы увидим поле «Статус». В рассматриваемой ситуации там, скорее всего, будет указано В наличии. Именно из-за этого расхождения при попытке повторной продажи 1С пытается заново отправить запрос в УТМ, а тот возвращает ошибку, так как марка уже выбыла из оборота в системе ФСРАР.
Также важно проверить наличие записи в регистре накопления остатков. Для этого используем запрос или просмотр регистра:
// Пример логики поиска марки в регистре сведений
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| АкцизныеМаркиЕГАИС.Статус,
| АкцизныеМаркиЕГАИС.Номенклатура
|ИЗ
| РегистрСведений.АкцизныеМаркиЕГАИС КАК АкцизныеМаркиЕГАИС
|ГДЕ
| АкцизныеМаркиЕГАИС.АкцизнаяМарка = &АкцизнаяМарка";
Запрос.УстановитьПараметр("АкцизнаяМарка", ВыбраннаяМарка);
Результат = Запрос.Выполнить();
Разберем способы решения, если подтверждено, что марка списана в ЕГАИС, но «висит» в 1С. Нам нужно вручную привести базу в актуальное состояние.
Это самый быстрый способ для разовых случаев. В регистре сведений Акцизные марки ЕГАИС найдем нашу запись и изменим её статус на Продано. После этого 1С перестанет предлагать эту марку к продаже и не будет включать её в акты списания или инвентаризации как имеющуюся.
Проанализируем список документов Чек ЕГАИС за текущую смену. Если произошел сбой, вы найдете документ со статусом «Ошибка» или «Передан в УТМ». Если вы точно знаете, что товар отдан покупателю, а деньги приняты (или, наоборот, произошел полный сбой транзакции), этот документ нужно либо пометить на удаление (если продажа не состоялась), либо подтвердить его выполнение, если ЕГАИС его принял.
Чтобы исключить повторение ситуации в будущем, нам необходимо понять, почему обрывается связь. Посмотрим на логи транспортного модуля. Обычно они находятся по пути: C:\UTM\transporter\logs\transport.log.
В логах следует искать записи, содержащие <error> или тайм-ауты ожидания ответа. Рассмотрим пример типичной ошибки связи:
ERROR es.programatrabajo.transport.util.connector.B - Ошибка при отправке документа в ЕГАИС.
java.net.SocketTimeoutException: Read timed out
Если такие ошибки встречаются часто, проанализируем стабильность интернет-соединения или загруженность процессора на кассовом компьютере в моменты пробития чеков.
Чтобы минимизировать риск возникновения ошибки «Марка не найдена», рекомендуем выполнить следующие настройки:
Сопоставление данных ЕГАИС и проводите периодическую инвентаризацию с запросом остатков марок из регистра 3 (поштучный учет).Таким образом, мы выяснили, что ошибка чаще всего является следствием технического сбоя в момент обмена данными. Своевременная проверка через Check1 и ручная корректировка статусов в 1С позволяют избежать проблем с законом и поддерживать чистоту складского учета.