Что делать, если чек ККМ пробит на кассе, но не проведен в 1С:Розница?

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

Ситуация, когда покупатель получает фискальный чек, деньги попадают в кассу ККМ, но в программе 1С документ Чек ККМ остается в статусе "Не проведен", является одной из самых критических для розничной торговли. Это приводит к расхождениям в остатках, неверному формированию Отчета о розничных продажах и проблемам при закрытии смены (Z-отчет не совпадает с данными базы). Рассмотрим подробно, почему это происходит и как исправить ситуацию.

Выясним причину возникновения проблемы

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

  1. Асинхронность и внешние события. В современных версиях платформы (особенно при уходе от модальности) 1С может обрабатывать внешние события параллельно. Если кассир успевает сканировать следующий товар в момент печати предыдущего чека, фоновый процесс может прервать обработчик ожидания ответа от ККТ.
  2. Таймауты оборудования. Если компьютер "задумался" (из-за антивируса, обновления Windows или слабого процессора), драйвер ККТ может не успеть вернуть статус "ОК" в отведенное время. Программа считает операцию прерванной, хотя чек уже напечатан.
  3. Проблемы связи и питания. Использование дешевых USB-кабелей или пассивных USB-хабов приводит к кратковременным разрывам связи. Также критичным является параметр USB Selective Suspend (временное отключение портов для экономии энергии) в настройках Windows.
  4. Блокировки в РИБ. Если в магазине настроен распределенный обмен данными, то проведение чека может столкнуться с блокировкой таблиц в момент старта фонового обмена.

Способ 1. Программное исправление "зависших" чеков

Если смена еще не закрыта, а чек уже пробит по кассе, но в 1С он висит как "открытый" или "непроведенный", нам необходимо привести его в соответствие с реальностью. Важно: обычное проведение через кнопку "Провести и закрыть" может спровоцировать повторную печать чека или ошибку "Чек уже пробит".

Рассмотрим алгоритм ручного исправления статуса через механизм "Групповое изменение реквизитов" (или аналогичную обработку):

  1. Выясним фактический номер чека и номер смены из логов драйвера или личного кабинета ОФД.
  2. В 1С найдем проблемный документ Чек ККМ.
  3. С помощью обработки изменения реквизитов (с включенным режимом разработчика для возможности правки системных полей) установим следующие значения:
    • СтатусЧека = Перечисление.СтатусыЧековККМ.Пробитый;
    • Флаг Проведен = Истина;
    • Заполним фискальные реквизиты (номер чека, дата и время фискализации), если они пусты.

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


ОбъектЧека = Документы.ЧекККМ.НайтиПоНомеру("00001", ТекущаяДата()).ПолучитьОбъект();
// Устанавливаем статус без вызова процедур печати
ОбъектЧека.СтатусЧека = Перечисления.СтатусыЧековККМ.Пробитый;
ОбъектЧека.ОбменДанными.Загрузка = Истина; 
ОбъектЧека.Записать(РежимЗаписиДокумента.Проведение);

Параметр ОбменДанными.Загрузка = Истина позволяет обойти проверки при записи, что критически важно, чтобы программа не пыталась снова обратиться к кассовому аппарату.

Способ 2. Оптимизация работы оборудования и драйверов

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

  1. Настройка COM-порта. Если касса подключена через USB-эмуляцию COM-порта, зайдите в Диспетчер устройств Windows. В свойствах порта (раздел "Параметры порта" -> "Дополнительно") попробуйте отключить очереди FIFO. Это снижает риск рассинхронизации данных.
  2. Снижение скорости обмена. Как показывает практика, скорость 115200 не всегда стабильна на слабых ПК. Попробуем снизить скорость до 19200 или 38400 как в настройках драйвера АТОЛ/Штрих-М, так и в самой 1С.
  3. Увеличение таймаута. В настройках подключения оборудования в 1С найдите параметр "Таймаут". Увеличьте его со стандартных 2000 мс до 5000–10000 мс. Это даст программе больше времени на ожидание ответа от кассы в моменты пиковой нагрузки на систему.
  4. Переустановка драйверов. Выясним, какая версия драйвера используется. Иногда помогает полный снос драйверов из диспетчера устройств и их "чистая" установка. Для аппаратов АТОЛ рекомендуется использовать драйверы версии 10.х, если конфигурация 1С их поддерживает.

Способ 3. Устранение конфликтов программной среды

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

Электропитание USB. Выясним, не засыпает ли порт. Перейдите в "Панель управления" -> "Электропитание" -> "Настройка схемы электропитания" -> "Изменить дополнительные параметры питания". В разделе "Параметры USB" установите значение "Запрещено" для временного отключения портов.

Кэш 1С. Нестабильное поведение интерфейса часто лечится очисткой локального кэша базы данных. Попробуем удалить базу из списка и добавить её заново или очистить папку %AppData%\1C\1Cv8.

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

Работа с ЕГАИС и маркировкой

Ситуация осложняется, если в чеке присутствует алкоголь или маркированный товар. Если чек пробит в ККТ и данные ушли в УТМ (ЕГАИС), но в 1С документ не провелся, повторно "пробивать" его нельзя — система выдаст ошибку о том, что марка уже продана. В этом случае единственный путь — это ручное проведение документа без повторной фискализации (как описано в способе 1). Обязательно убедитесь, что в УТМ продажа зафиксирована, чтобы избежать проблем с проверками.

Резюме и рекомендации

Подведем итоги нашего анализа. Проблема "пробит, но не проведен" чаще всего является следствием технического несовершенства связки оборудования и софта на медленных каналах связи или слабых ПК. Для минимизации рисков рекомендуем:

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

← На главную