При автоматизации розничной торговли в условиях плотного потока покупателей часто возникает критическая проблема: документ в 1С успешно проводится, ставится отметка о фискализации, однако кассовый аппарат физически не пробивает чек. При этом свойство драйвера ResultCode возвращает статус успешного выполнения команды ЗакрытьЧек. Разберем детально, почему это происходит, как программно перепроверять факт печати чека перед проведением документа и как решать сопутствующие проблемы с оборудованием.
Выясним причину, по которой драйвер и 1С считают операцию завершенной, даже если кассовый аппарат не напечатал чек:
Рассмотрим надежный способ контроля фискализации: перед проведением кассового документа в 1С считываем итоговую накопленную сумму из фискального регистратора и сверяем ее с суммой по учетному регистру или суммой чека.
Посмотрим на пример реализации алгоритма:
// Считываем финансовые показатели из ККТ после выполнения закрытия чека
DrvAtol.ПолучитьСумму();
СуммаСНачалаСмены = DrvAtol.Сумма;
// Сверяем полученную сумму с расчетными данными базы 1С
Если СуммаСНачалаСмены = СуммаПоРегистру Тогда
// Фискализация прошла корректно, разрешаем проведение документа
Док.Провести();
Иначе
// Чек не пробит кассой: фиксируем ошибку и отменяем проведение
Предупреждение("Сумма в фискальном регистраторе не совпадает с данными 1С! Чек не пробит.");
СтатусВозврата(0);
КонецЕсли;
Разберем по шагам, какие еще проверки необходимо внедрить в модуль обслуживания фискального регистратора:
Проанализируем системные настройки, позволяющие минимизировать аппаратные сбои связи:
Иногда при обновлении драйверов оборудования возникает задержка в 30–45 секунд между физическим считыванием штрихкода и появлением строки в документе. Разберем причину:
Задержка связана с использованием внешних библиотек (например, Scaner1C.dll), работающих в демонстрационном режиме без активного ключа защиты. Для исправления ситуации используем один из следующих вариантов:
regsvr32.Если при закрытии смены из типовых механизмов 1С печатается краткий отчет без расшифровки по секциям и налогам, разберем программный вызов снятия суточного отчета с гашением через объект драйвера:
// Перевод ККТ в режим снятия отчетов с гашением
ECR.Mode = 3;
ECR.Password = 30; // Пароль системного администратора по умолчанию
ECR.SetMode();
// Установка типа отчета: Суточный отчет с гашением (Z-отчет)
ECR.ReportType = 1;
// Передача реквизита кассира для фискализации
Если ПустаяСтрока(ИмяКассира) = 0 Тогда
ECR.AttrNumber = 1021;
ECR.AttrValue = СокрЛП(ИмяКассира);
ECR.WriteAttribute();
КонецЕсли;
// Печать фискального отчета
ECR.Report();
Для вывода расширенного нефискального отчета (сводный отчет по секциям, налогам и операциям) также проверьте таблицы настроек кассы через утилиту «Тест драйвера ККТ», включив флаг «Печатать отчет обнуления» в параметрах работы ККТ.