Почему в 1С:Розница появляются чеки без номера, смены и со временем 00:00:00 и как это исправить

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

В работе розничных магазинов на базе программ 1С:Розница (редакции 2.2 и 2.3) нередко возникает критическая ситуация: в журнале «Чеки ККМ» появляются документы, у которых отсутствуют номер чека, номер смены, статус, а время создания установлено в 0:00:00. Такие чеки называют «фантомными» или «зависшими». Они создают серьезные проблемы для учета: остатки товара списываются (или не списываются корректно), а по данным фискального регистратора чек может как пройти, так и остаться непробитым.

В этой статье мы подробно разберем причины возникновения таких документов, проанализируем техническую сторону взаимодействия 1С с торговым оборудованием и составим план действий по устранению и профилактике данной проблемы.

Механизм возникновения «пустого» чека: что происходит внутри системы

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

  1. Кассир нажимает кнопку «Пробить» в РМК.
  2. 1С создает в базе данных объект документа ЧекККМ и присваивает ему внутренний идентификатор (GUID). В этот момент многие реквизиты, такие как номер чека в кассе и номер смены, еще пусты, так как их должна вернуть касса.
  3. Программа передает пакет данных (в современных версиях это JSON-запрос) драйверу торгового оборудования.
  4. Драйвер отправляет команду фискальному регистратору (ККТ).
  5. ККТ печатает чек, записывает данные в фискальный накопитель и возвращает ответ драйверу: «Чек пробит, номер такой-то, смена такая-то».
  6. Драйвер передает эти данные в 1С.
  7. 1С записывает полученные реквизиты в документ и меняет его статус на «Пробит».

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

Разбор основных причин появления пустых чеков

Рассмотрим подробнее каждую из причин, выявленных в ходе практики эксплуатации систем 1С:Розница.

1. Настройки таймаута драйвера

Одной из самых частых причин является слишком низкое значение параметра «Таймаут» в настройках подключаемого оборудования. Если касса медленно обрабатывает запрос (например, из-за долгого ответа от серверов ОФД или медленного соединения), 1С «устает» ждать и прерывает операцию по своей инициативе. При этом касса может успешно допечатать чек через секунду после того, как программа уже «забыла» о нем.

Рекомендуется зайти в настройки драйвера (АТОЛ или Штрих-М) через интерфейс 1С и увеличить Таймаут до 10 000–30 000 мс. Это особенно критично, если касса подключена через Ethernet или Wi-Fi.

2. Влияние обменов РИБ (Распределенной информационной базы)

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

Проанализируем расписание обменов. Если они происходят слишком часто (например, каждые 5 минут), стоит либо увеличить интервал, либо использовать клиент-серверный вариант работы (SQL), который лучше справляется с блокировками.

3. Окончание кассовой ленты и человеческий фактор

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

4. Энергосбережение USB-портов

В настройках операционной системы Windows часто включена опция «Разрешить отключение этого устройства для экономии энергии» для USB-концентраторов. В момент начала печати касса потребляет пиковый ток. Это может вызвать кратковременную просадку напряжения на шине USB, после чего ОС «засыпает» или перезагружает порт. Связь обрывается, и 1С теряет контекст операции пробития.

Методика исправления ситуации

Рассмотрим по шагам, что делать, если такие чеки уже появились в вашей базе:

Шаг 1: Проверка фактической продажи

Прежде чем удалять или проводить «пустой» чек, необходимо выяснить, пробился ли он по кассе. Для этого нужно снять X-отчет (отчет без гашения) на фискальном регистраторе или проверить личный кабинет ОФД. Если сумма в отчете сходится с учетом 1С (с учетом «пустого» чека), значит, физически продажа прошла.

Шаг 2: Ручное приведение чека в порядок

Если чек пробит по кассе, но в 1С он «вист» пустым, его нельзя просто удалить, иначе остатки товара на складе не спишутся. Рассмотрим алгоритм действий:

  1. Откройте «пустой» чек.
  2. Установите в нем вручную правильную дату и время (согласно бумажному чеку).
  3. Проверьте табличную часть товаров.
  4. Если система позволяет, проставьте статус «Пробит». В некоторых случаях для этого потребуется обработка Групповое изменение реквизитов, чтобы принудительно установить поле СтатусЧекаККМ в значение Пробит и заполнить НомерЧекаККМ и НомерСменыККМ.

Шаг 3: Работа с дублями в ЕГАИС

Если вы торгуете алкоголем, ситуация осложняется. Проанализируем логи УТМ. Часто бывает так, что в ЕГАИС уходит сразу два сообщения о продаже: одно от «пустого» чека, другое — от повторно пробитого кассиром. В этом случае необходимо оформить Чек возврата в ЕГАИС на одну из позиций, чтобы избежать зацикливания остатков и проблем с проверками.

Техническое обслуживание базы данных

Если появление таких чеков носит массовый характер и не связано с лентой или таймаутами, следует выполнить проверку целостности базы данных. Разберем работу с утилитой chdfl.exe:


// Путь к утилите обычно:
// C:\Program Files\1cv8\8.3.x.xxxx\bin\chdfl.exe

Запустите утилиту, выберите файл вашей базы 1Cv8.1CD и установите флаг «Исправлять обнаруженные ошибки». Это поможет, если причина кроется в поврежденных индексах таблиц, из-за чего 1С не может корректно завершить транзакцию записи документа.

Профилактика и рекомендации

Чтобы минимизировать появление «чеков с нулевым временем» в будущем, мы рекомендуем выполнить следующие настройки:

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

← На главную