При розничной продаже алкогольной продукции кассовое рабочее место должно передать сведения о чеке в Универсальный транспортный модуль (УТМ), дождаться ответа с криптографической подписью и сформированной ссылкой на портал проверки чека, после чего напечатать фискальный чек с QR-кодом. Однако на практике нередко возникает опасная ситуация: кассовая программа отправляет чек, ответа от УТМ вовремя не получает и прерывает операцию. При повторной попытке пробить тот же чек ЕГАИС возвращает ошибку о том, что акцизная марка не прошла проверку, так как она уже зафиксирована в системе предыдущим запросом.
Разберем детально, почему возникает подобный сбой, как правильно настроить программное обеспечение для его предотвращения и как извлечь данные для завершения продажи без повторной отправки чека в ЕГАИС.
Для понимания корня проблемы проанализируем логику взаимодействия кассового узла и транспортного модуля:
8080).Главный способ предотвратить возникновение подобных «зависших» чеков — исключить принудительный разрыв связи со стороны кассы до завершения ответа УТМ.
В типовых конфигурациях или самописных модулях на платформе 1С для взаимодействия с транспортным модулем используется объект HTTPСоединение. Параметр времени ожидания (таймаут) по умолчанию часто равен 0 (системное ожидание) либо зашит небольшим значением.
Установим при инициализации соединения таймаут не менее 30–60 секунд. Этого времени гарантированно хватит на формирование подписи аппаратным ключом и обмен с серверами ведомства:
// Создаем соединение с явным указанием таймаута в 60 секунд
ТаймаутСоединения = 60;
HTTPСоединение = Новый HTTPСоединение(
СерверУТМ,
ПортУТМ,
,
,
,
,
,
ТаймаутСоединения
);
Если для отправки запросов к УТМ используется внешняя консольная утилита cURL (как это часто реализуется на платформе 1С v7.7), обязательно увеличим параметры максимального времени работы утилиты с помощью ключей --max-time и --connect-timeout до значений не менее 45–60 секунд, исключив фиксированные короткие паузы в 3 секунды между вызовами.
Часто медленная работа УТМ вызвана аппаратными задержками при обращении к смарт-картам и токенам (JaCarta, Рутокен ЭЦП). Проанализируем системные параметры операционной системы Windows:
Если неприятность уже произошла: марка числится зарегистрированной в УТМ, но фискальный чек на кассовом аппарате напечатан не был, отправлять повторный запрос нельзя. Действуем по следующему алгоритму:
transport_transaction.log и transport_info.log текстовым редактором. Найдем запись по времени инцидента или номеру чека. В теле зафиксированного ответа будет содержаться сформированный URL-адрес для чека и значение криптографической подписи.Если кассир отменил чек, покупатель ушел, но в системе ЕГАИС бутылка уже зафиксирована как проданная, баланс магазина нарушится. Пробивать обычный возврат на фискальном аппарате нельзя, так как фискального прихода не было.
В этом случае сформируем и отправим в УТМ документ «Чек возврата» (возврат алкогольной продукции), содержащий данную акцизную марку, но без последующей печати бумажного чека возврата на кассе. Это действие восстановит остаток марки в регистрах ЕГАИС и предотвратит расхождение остатков.