При работе с онлайн-кассами (ККТ с передачей данных) в устаревших конфигурациях на обычных формах, таких как 1С:УПП 1.3, 1С:КА 1.1 или 1С:Розница 1.0, пользователи часто сталкиваются с уведомлением: «За кассовую смену не продано ни одного товара по выбранной кассе ККМ». Это сообщение появляется в момент попытки закрытия смены, даже если в течение дня кассир активно пробивал чеки.
Рассмотрим детально, почему возникает эта ситуация, насколько она критична для учета и какие шаги необходимо предпринять программисту или системному администратору для корректной настройки системы.
Проанализируем архитектуру старых конфигураций 1С. Изначально они проектировались под работу с фискальными регистраторами старого образца, где основным документом розничной торговли являлся ЧекККМ. Логика закрытия смены была жестко завязана на следующую последовательность:
ЧекККМ, созданные за текущую смену.ОтчетОРозничныхПродажах.С введением 54-ФЗ разработчики добавили возможность пробивать фискальные чеки напрямую из документов ПриходныйКассовыйОрдер (ПКО) и ЭквайринговаяОперация. Это удобно для оптовой торговли или сферы услуг, где полная розничная схема с «Чеками ККМ» избыточна. Однако алгоритм обработки ТОЗакрытиеСмены во многих релизах остался прежним: он продолжает искать только документы типа ЧекККМ.
Когда мы пробиваем оплату через ПКО, программа фиксирует выручку непосредственно этим документом. При закрытии смены стандартная обработка делает запрос к базе, не находит ни одного «Чека ККМ» и выдает анализируемую ошибку. По сути, система считает, что раз нет розничных чеков, то и закрывать в плане учета (формировать ОтчетОРозничныхПродажах) нечего.
Многих бухгалтеров пугает это сообщение, так как кажется, что смена не закрылась корректно. Разберем ситуацию по пунктам:
ОтчетОРозничныхПродажах на основании ПКО, у вас произошло бы задвоение оборотов по кассе и взаиморасчетам, так как ПКО уже сделал свои проводки. Поэтому отсутствие «Отчета о розничных продажах» при работе через ПКО — это нормальное и правильное поведение.КассоваяСмена в 1С может остаться «Открыта». Это может мешать открытию новой смены на следующий день.Если ваша конфигурация позволяет продолжать работу после вывода этого сообщения, и Z-отчет физически распечатан, то простейшим решением будет просто закрыть окно ошибки. Проанализируем состояние кассы: если в драйвере ККТ смена закрыта, а в 1С при попытке открыть новую смену программа не ругается — значит, никаких дополнительных действий не требуется.
Иногда из-за программной ошибки 1С блокирует выполнение команды закрытия в самом устройстве. В этом случае мы рекомендуем выполнить следующие действия:
После этого физическое устройство будет готово к новому рабочему дню. Если 1С продолжает считать смену открытой, воспользуйтесь обработкой «Управление фискальным устройством» или найдите справочник КассовыеСмены и вручную установите статус «Закрыта» для текущей записи.
Чтобы избавить пользователей от ежедневного созерцания ошибки, мы можем внести небольшие изменения в код. Рассмотрим пример модификации процедуры в обработке обслуживания или общем модуле, отвечающем за закрытие смены (обычно это ТОЗакрытиеСмены).
Нам необходимо добавить проверку на наличие документов ПриходныйКассовыйОрдер, по которым были пробиты чеки. Посмотрим на пример логики, которую можно внедрить:
// В процедуре ЗакрытьСмену перед выводом сообщения об отсутствии продаж
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
| ПриходныйКассовыйОрдер.Ссылка
|ИЗ
| Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер
|ГДЕ
| ПриходныйКассовыйОрдер.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
| И ПриходныйКассовыйОрдер.НомерЧекаККМ <> 0";
Запрос.УстановитьПараметр("ДатаНачала", НачалоДня(ТекущаяДата()));
Запрос.УстановитьПараметр("ДатаОкончания", КонецДня(ТекущаяДата()));
РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
// Если нашли хоть один ПКО с пробитым чеком, подавляем ошибку
// и принудительно вызываем закрытие фискальной смены
ОбъектДрайвера.ЗакрытьСмену(Параметры...);
КонецЕсли;
Проанализируем этот код: мы проверяем наличие ПКО за текущие сутки, у которых заполнен реквизит НомерЧекаККМ (или другой признак фискализации, зависящий от версии вашей конфигурации). Если такие документы есть, мы даем команде на закрытие смены в ККТ выполниться, даже если документов ЧекККМ не обнаружено.
В «Рознице» версии 1.0 проблема часто усугубляется настройками торгового оборудования. Разберем шаги по проверке:
Если же произошел технический сбой (замятие бумаги), и 1С «потеряла» связь с процессом закрытия, можно прибегнуть к хитрости: создать фиктивный документ ЧекККМ на сумму 1 копейка, пробить его (если касса позволит) или просто записать в базе, чтобы алгоритм закрытия «увидел» документ. После успешного закрытия смены этот чек нужно будет аннулировать или сделать возврат.
Подведем итоги нашего анализа. Ошибка «За кассовую смену не продано ни одного товара» при использовании ПКО в старых редакциях 1С — это ложное срабатывание системы контроля, не учитывающее современные требования 54-ФЗ.
Для корректной работы достаточно убедиться, что Z-отчет выходит из аппарата. Если вы хотите устранить сообщение навсегда — потребуется небольшая корректировка кода в части условий проверки наличия документов перед формированием отчета о розничных продажах. Помните, что ПКО сам по себе является финальным документом выручки, и его повторное включение в сводные отчеты по кассе не требуется.