При автоматизации кассовых узлов периодически возникает критическая ситуация: сумма выручки по данным Z-отчета (суточного отчета с гашением в ККТ/ОФД) не совпадает с итоговой суммой документа ОтчетОРозничныхПродажах в базе 1С. В результате учетные остатки товара списываются некорректно, а данные бухгалтерского и управленческого учета начинают расходиться с фискальными данными налоговой службы.
Рассмотрим детально, почему документы ЧекККМ могут проводиться без фактической печати на фискальном регистраторе, как исправить уже накопленные ошибки и как настроить систему для предотвращения подобных сбоев в будущем.
Проанализируем основные технические факторы, приводящие к ситуации, когда чек регистрируется в программе, но не пробивается на кассе:
ЧекККМ отделены от отправки фискальных команд. Если касса возвращает ошибку, транзакция проведения не всегда откатывается, оставляя проведенный документ с пустым номером смены и фискального документа.В конфигурациях линейки «1С:Розница» предусмотрен штатный механизм защиты от попадания «зависших» чеков в итоговый отчет. Если кассир оформил чеки во время аварии на ККТ, программа может заблокировать закрытие смены до выяснения причин.
Разберем по шагам, как включить эту проверку:
После активации данной опции обработка закрытия кассовой смены при формировании документа ОтчетОРозничныхПродажах анализирует реквизит СтатусЧекаККМ каждого чека за смену. Если среди них будут обнаружены непробитые документы, система выдаст предупреждение и не включит их в итоговую сумму выручки и списания.
Если сбой уже произошел и документ ОтчетОРозничныхПродажах провелся на завышенную сумму, выполним корректировку данных:
ЧекККМ. Настроим отображение колонок, добавив поле Статус, а также номера фискального чека и смены. Все проблемные чеки не будут иметь фискального номера.ГрупповаяОбработкаСправочниковИДокументов. Для ошибочных чеков установим статус Аннулированный или снимем признак проведения.ОтчетОРозничныхПродажах за проблемную дату, удалим из табличной части строки с товарами, которые фактически не прошли через ККТ, и заново проведем отчет для восстановления правильных остатков на складе.Важно: Если товар был фактически отдан покупателю и деньги приняты, удалять такие строки из учета нельзя. Согласно требованиям 54-ФЗ, в кассе необходимо пробить Чек коррекции («Приход») на сумму неучтенной выручки, после чего скорректировать данные в учетной системе.
Рассмотрим, как устроен механизм фискализации и проверки статуса на программном уровне. Для надежной работы необходимо, чтобы документ записывался и проводился только после успешного ответа от драйвера оборудования.
Посмотрим на пример логики фискализации и установки признака проведения:
// Выполняем фискализацию чека через драйвер торгового оборудования
ЧекПробитККМ = глФРПечататьЧек(СписокТоваров, Итог("Сумма"), Получено, Скидка.Процент,
ПризнВозврата, Склад.НомерСекции, НомерЧека, УчитыватьНДС);
Если ЧекПробитККМ = 1 Тогда
// Записываем документ только при успешной печати на ККТ
ПриЗаписиПерепроводить(0);
НомерЧекаККМ = НомерЧека;
Записать();
ПриЗаписиПерепроводить(1);
// При необходимости открываем денежный ящик
глДПОткрытьДенежныйЯщик();
Иначе
// Если касса вернула ошибку, отменяем сохранение чека как фискализированного
Сообщить("Ошибка фискализации чека на ККТ! Документ не проведен.", СтатусСообщения.Важное);
КонецЕсли;
В режиме РМК конфигурации «1С:Розница» обработка результата записи в блоке попытки выглядит следующим образом:
Если НЕ ЗначениеЗаполнено(ОшибкаТО) Тогда
СтатусЧекаККМ = Перечисления.СтатусыЧековККМ.Пробитый;
Попытка
Записать(РежимЗаписиДокумента.Запись);
Исключение
Ответ = "Не удалось записать документ с установленными параметрами пробитого чека.";
Отказ = Истина;
Результат = Ложь;
Если РежимРМК Тогда
ТекстОшибки = "Ошибка записи чека!" + Символы.ПС +
"Не удалось установить признак пробития чека!" + Символы.ПС +
"Проверьте состояние фискального регистратора.";
ВывестиИнформациюОбОшибке(ТекстОшибки);
КонецЕсли;
КонецПопытки;
Иначе
// Обработка ошибки оборудования: чек не должен считаться пробитым
СтатусЧекаККМ = Перечисления.СтатусыЧековККМ.НеПробитый;
КонецЕсли;
Для предотвращения зависания обмена между 1С и ККТ выполним следующие системные настройки:
5000 до 10000–15000 мс. Это исключит ложные обрывы соединения при медленном ответе фискального накопителя.drvfr.log). Анализ лога покажет, на какой конкретно команде происходит ошибка (открытие чека, регистрация позиции или закрытие чека).