Как исправить ошибку «За кассовую смену не продано ни одного товара» в 1С при использовании ПКО?

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

При работе с онлайн-кассами (ККТ с передачей данных) в устаревших конфигурациях на обычных формах, таких как 1С:УПП 1.3, 1С:КА 1.1 или 1С:Розница 1.0, пользователи часто сталкиваются с уведомлением: «За кассовую смену не продано ни одного товара по выбранной кассе ККМ». Это сообщение появляется в момент попытки закрытия смены, даже если в течение дня кассир активно пробивал чеки.

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

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

Проанализируем архитектуру старых конфигураций 1С. Изначально они проектировались под работу с фискальными регистраторами старого образца, где основным документом розничной торговли являлся ЧекККМ. Логика закрытия смены была жестко завязана на следующую последовательность:

  1. Программа ищет все документы ЧекККМ, созданные за текущую смену.
  2. На их основании формируется сводный документ ОтчетОРозничныхПродажах.
  3. После формирования отчета посылается команда на ККТ для снятия Z-отчета (отчета с гашением).

С введением 54-ФЗ разработчики добавили возможность пробивать фискальные чеки напрямую из документов ПриходныйКассовыйОрдер (ПКО) и ЭквайринговаяОперация. Это удобно для оптовой торговли или сферы услуг, где полная розничная схема с «Чеками ККМ» избыточна. Однако алгоритм обработки ТОЗакрытиеСмены во многих релизах остался прежним: он продолжает искать только документы типа ЧекККМ.

Когда мы пробиваем оплату через ПКО, программа фиксирует выручку непосредственно этим документом. При закрытии смены стандартная обработка делает запрос к базе, не находит ни одного «Чека ККМ» и выдает анализируемую ошибку. По сути, система считает, что раз нет розничных чеков, то и закрывать в плане учета (формировать ОтчетОРозничныхПродажах) нечего.

Оценим последствия для учета

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

  1. Z-отчет в ККТ: Несмотря на предупреждение в 1С, команда на закрытие смены в самом фискальном регистраторе (например, АТОЛ 30Ф) обычно выполняется. Если из ККТ вышел бумажный отчет с гашением — фискальная смена закрыта, данные ушли в ОФД.
  2. Задвоение выручки: Важно понимать, что если бы программа все же создала ОтчетОРозничныхПродажах на основании ПКО, у вас произошло бы задвоение оборотов по кассе и взаиморасчетам, так как ПКО уже сделал свои проводки. Поэтому отсутствие «Отчета о розничных продажах» при работе через ПКО — это нормальное и правильное поведение.
  3. Статус смены в 1С: Единственная реальная проблема — статус объекта КассоваяСмена в 1С может остаться «Открыта». Это может мешать открытию новой смены на следующий день.

Вариант 1: Игнорирование сообщения и ручное закрытие

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

Вариант 2: Использование драйвера ККТ при сбоях

Иногда из-за программной ошибки 1С блокирует выполнение команды закрытия в самом устройстве. В этом случае мы рекомендуем выполнить следующие действия:

  1. Запустите Тест драйвера ККТ (например, для АТОЛ это «Тест драйвера ККТ 10.х»).
  2. Установите связь с устройством.
  3. Перейдите в раздел «Отчеты» и выберите тип отчета «Отчет о закрытии смены» (Z-отчет).
  4. Нажмите «Сформировать отчет».

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

Вариант 3: Программная доработка (для программистов)

Чтобы избавить пользователей от ежедневного созерцания ошибки, мы можем внести небольшие изменения в код. Рассмотрим пример модификации процедуры в обработке обслуживания или общем модуле, отвечающем за закрытие смены (обычно это ТОЗакрытиеСмены).

Нам необходимо добавить проверку на наличие документов ПриходныйКассовыйОрдер, по которым были пробиты чеки. Посмотрим на пример логики, которую можно внедрить:


// В процедуре ЗакрытьСмену перед выводом сообщения об отсутствии продаж
Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
    |	ПриходныйКассовыйОрдер.Ссылка
    |ИЗ
    |	Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер
    |ГДЕ
    |	ПриходныйКассовыйОрдер.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
    |	И ПриходныйКассовыйОрдер.НомерЧекаККМ <> 0";

Запрос.УстановитьПараметр("ДатаНачала", НачалоДня(ТекущаяДата()));
Запрос.УстановитьПараметр("ДатаОкончания", КонецДня(ТекущаяДата()));

РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
    // Если нашли хоть один ПКО с пробитым чеком, подавляем ошибку
    // и принудительно вызываем закрытие фискальной смены
    ОбъектДрайвера.ЗакрытьСмену(Параметры...);
КонецЕсли;

Проанализируем этот код: мы проверяем наличие ПКО за текущие сутки, у которых заполнен реквизит НомерЧекаККМ (или другой признак фискализации, зависящий от версии вашей конфигурации). Если такие документы есть, мы даем команде на закрытие смены в ККТ выполниться, даже если документов ЧекККМ не обнаружено.

Особенности для «1С:Розница 1.0»

В «Рознице» версии 1.0 проблема часто усугубляется настройками торгового оборудования. Разберем шаги по проверке:

  1. Зайдите в настройки параметров фискального регистратора.
  2. Проверьте флаг «Печать Z-отчета при закрытии смены».
  3. Убедитесь, что кассиры не пытаются закрыть смену сначала кнопкой на кассе, а потом в программе. Порядок должен быть строго обратным: все действия инициируются из интерфейса 1С.

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

Резюме

Подведем итоги нашего анализа. Ошибка «За кассовую смену не продано ни одного товара» при использовании ПКО в старых редакциях 1С — это ложное срабатывание системы контроля, не учитывающее современные требования 54-ФЗ.

Для корректной работы достаточно убедиться, что Z-отчет выходит из аппарата. Если вы хотите устранить сообщение навсегда — потребуется небольшая корректировка кода в части условий проверки наличия документов перед формированием отчета о розничных продажах. Помните, что ПКО сам по себе является финальным документом выручки, и его повторное включение в сводные отчеты по кассе не требуется.

← На главную