Что делать при задвоении оплаты на фискальном регистраторе из-за ошибки «Таймаут при подключении» в 1С?

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

Ситуация, когда кассовый аппарат (ККТ) выдает бумажный чек, но программа 1С «зависает» и не фиксирует этот факт в своей базе, является одной из самых стрессовых для кассира и технического специалиста. В результате возникают расхождения между данными в Z-отчете и реальной выручкой, а повторное нажатие кнопки «Пробить чек» приводит к фактическому удвоению суммы по фискальному накопителю. Разберем подробно, почему так происходит, как исправить последствия и какие настройки драйвера помогут избежать этого в будущем.

Почему операция пробития чека не является атомарной?

Проанализируем механику взаимодействия 1С с фискальным регистратором. Многие пользователи ошибочно полагают, что запись документа в 1С и печать чека — это единая транзакция, которая либо выполняется целиком, либо отменяется полностью. К сожалению, в архитектуре работы с торговым оборудованием это не так.

Рассмотрим пошагово цепочку событий при нажатии гиперссылки «Пробить чек»:

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

Если на 4-м или 5-м этапе происходит технический сбой (например, из-за помех в сети или долгого ответа ФН возник «Таймаут»), цепочка обрывается. ККТ уже считает деньги принятыми, а 1С — нет. В результате в программе остается активной кнопка «Пробить чек», и кассир, не видя номера чека в системе, нажимает ее повторно, порождая второй фискальный документ.

Как исправить «лишний» чек на фискальном регистраторе

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

Способ 1. Оформление чека на «Возврат прихода»

Это стандартный методический путь. На сумму ошибочно пробитого чека необходимо пробить встречный чек с типом операции «Возврат прихода». Это можно сделать двумя путями:

Способ 2. Использование чеков коррекции

Согласно форматам фискальных данных (ФФД 1.1 и выше), для исправления ошибок рекомендуется использовать чеки коррекции. Однако для ситуации «лишнего» чека (когда реализация была, но ее ошибочно пробили дважды) чаще применяется именно «Возврат прихода», так как это понятнее для налоговой инспекции при проверке объяснительных.

Настройка драйвера для предотвращения таймаутов

Выясним, какие настройки помогут нам избежать подобных ситуаций в будущем. Основная причина обрывов связи со «Штрих-М» — слишком агрессивные настройки ожидания ответа. Современные ККТ с ФН тратят значительное время на криптографические операции и отправку данных в ОФД.

Рассмотрим рекомендуемые параметры в «Свойствах драйвера»:

Проверка состояния через «Тест драйвера»

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

  1. Закройте 1С (или освободите порт ККТ).
  2. Откройте «Тест драйвера Штрих-М».
  3. Перейдите в раздел «Запросы» или «Состояние ККТ».
  4. Нажмите кнопку «Длительный запрос состояния».
  5. Посмотрите поле «Номер последнего ФД» и «Сумма последней операции». Если сумма совпадает с вашим ПКО, значит, чек пробился успешно.

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

Административное оформление ошибки

Поскольку фискальные данные уже ушли в ОФД, одного лишь технического исправления недостаточно. Проанализируем действия кассира с точки зрения кассовой дисциплины:

  1. Кассир должен написать объяснительную записку на имя руководителя. В ней необходимо указать: дату, время, номер ошибочного чека, сумму и причину (технический сбой, таймаут связи с ККТ).
  2. К объяснительной желательно приложить копию ошибочного чека и чека возврата (если он пробивался).
  3. Данные документы хранятся в бухгалтерии и предъявляются в случае проверки ФНС для обоснования расхождения между данными ОФД и фактической выручкой.

Важное замечание: Не стоит наказывать кассира материально за ошибки техники. Вины человека в задержках передачи данных по протоколу TCP/IP или медленной работе ФН нет. Ответственность за корректную настройку оборудования (таймаутов) лежит на системном администраторе или специалисте по внедрению 1С.

Подводя итог, скажем: для стабильной работы связки «1С + Штрих-М» всегда устанавливайте таймаут ответа не менее 10 секунд и научите персонал проверять отчеты ККТ перед тем, как «дублировать» оплаты при возникновении любых ошибок связи.

← На главную