Как напечатать чек ККМ из ПКО без документа-основания и номенклатуры в 1С 7.7

Программист 1С v7.7 1C:Бухгалтерия Бухгалтерский учет Торговля и дистрибуция
← На главную

При работе в устаревших, но все еще активно используемых конфигурациях на платформе 1С 7.7 пользователи часто сталкиваются с жесткими ограничениями механизмов интеграции с онлайн-кассами. Одним из таких препятствий является печать фискального чека напрямую из документа ПриходныйКассовыйОрдер (ПКО). В типовом функционале программа принудительно ищет документ-основание (например, накладную или реализацию) и пытается «вытащить» оттуда перечень номенклатуры. Если ПКО создан вручную, у него нет табличной части товаров, и попытка напечатать чек вызывает системную ошибку.

В этой статье мы подробно разберем, как обойти это ограничение технически, как система формирует данные по умолчанию в конфигурации «1С:Бухгалтерия 7.7», и что необходимо доработать в коде программно для обхода проверки товарной части.

1. Законодательный аспект: номенклатура и ФЗ-54

Прежде чем приступать к технической реализации обхода, важно понимать требования законодательства. Согласно Федеральному закону № 54-ФЗ, начиная с 1 февраля 2021 года, абсолютно все организации и индивидуальные предприниматели обязаны указывать в кассовом чеке точное наименование товара, работы или услуги, их количество и цену за единицу.

Передача обобщенных понятий (таких как «Товар», «Услуги по договору» или просто «Оплата по ПКО») признается налоговыми органами нарушением порядка применения ККТ. Единственным легитимным исключением является получение аванса или предоплаты, когда в момент расчета точный перечень товаров определить невозможно. В таком случае в чеке указывается признак способа расчета «Аванс», но при последующей отгрузке обязательно пробивается второй чек с полной детализацией номенклатуры.

С технической стороны ККМ все равно требует передать структуру с товарными позициями, поэтому в коде 1С 7.7 нам в любом случае придется сформировать виртуальную таблицу товаров, даже если физически в ПКО ее нет.

2. Как работает стандартный механизм в типовой «1С:Бухгалтерии 7.7»

Давайте проанализируем, как разработчики фирмы «1С» решили эту проблему в последних обновлениях конфигурации. В типовом решении при печати чека из ПКО система пытается компенсировать отсутствие товарной сетки динамическим сбором информации.

В качестве наименования товара в обработку обслуживания ККМ передается текстовая строка, которая склеивается из реквизитов шапки ПКО:

Например, в чек может уйти позиция: «Принято от ООО "Вектор" на основании Оплата услуг по договору №15» с количеством «1» и суммой, равной общей сумме ПКО. Фискальный регистратор примет этот текст как наименование одной товарной позиции и успешно пропечатает чек.

3. Программный обход ограничений через создание виртуальной таблицы

Если используемая вами обработка обслуживания ККМ или измененная конфигурация наотрез отказываются печатать чек без явной таблицы товаров, мы можем решить эту задачу программно. Для этого в модуле документа ПКО или во внешней обработке печати чека создадим временный объект типа ТаблицаЗначений, вручную заполним его одной строкой и передадим кассовому аппарату.

Рассмотрим по шагам, как реализовать этот алгоритм в коде 1С 7.7. Нам потребуется модифицировать процедуру, которая отвечает за отправку данных на ККМ:


// Создаем временную таблицу товаров
ТабТоваров = СоздатьОбъект("ТаблицаЗначений");
ТабТоваров.НоваяКолонка("Товар", "Строка");
ТабТоваров.НоваяКолонка("Количество", "Число");
ТабТоваров.НоваяКолонка("Цена", "Число");
ТабТоваров.НоваяКолонка("Сумма", "Число");
ТабТоваров.НоваяКолонка("СтавкаНДС", "Строка");

// Добавляем одну строку с данными из ПКО
ТабТоваров.НоваяСтрока();

// Формируем наименование товара из реквизитов ПКО
Если ПустаяСтрока(СокрЛП(Основание)) = 0 Тогда
    ТабТоваров.Товар = "Оплата: " + СокрЛП(Основание);
Иначе
    ТабТоваров.Товар = "Оплата по ПКО № " + СокрЛП(НомерДок);
КонецЕсли;

ТабТоваров.Количество = 1;
ТабТоваров.Цена = СуммаДокумента; // Сумма из реквизитов ПКО
ТабТоваров.Сумма = СуммаДокумента;

// Задаем ставку НДС в зависимости от учета (например, "Без НДС")
ТабТоваров.СтавкаНДС = "БЕЗ НДС"; 

// Передаем сформированную таблицу в метод печати чека ККМ
ОткрытьФорму("Отчет.ПечатьЧекаККМ", ТабТоваров);

Этот простой прием позволяет обмануть жесткие алгоритмы проверки и напечатать чек на любую сумму без привязки к справочнику номенклатуры.

4. Отключение встроенных блокировок («ПредупреждениеОнлайнКассы»)

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

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

Обычно вызов располагается в глобальном модуле или непосредственно в модуле формы документа ПКО. Вам необходимо найти строку запуска этой обработки и закомментировать ее:


// Блокируем вызов предупреждений онлайн-кассы для ручных ПКО
// ОткрытьФорму("Обработка.ПредупреждениеОнлайнКассы", КонтекстПараметров);

Важное предупреждение: Отключая эту обработку, вы берете на себя ответственность за корректность передаваемых в налоговую данных. Убедитесь, что формируемые «ручные» чеки соответствуют требованиям вашего оператора фискальных данных (ОФД).

5. Настройка признаков расчета в чеке ПКО

При ручном формировании чека из ПКО критически важно передать на кассу правильные значения признаков расчета. Очень часто разработчики путают два схожих реквизита: «Признак расчета» и «Признак способа расчета».

Выясним разницу между ними:

  1. Признак расчета (Тег 1054): Указывает на направление платежа. При печати ПКО мы всегда используем значение Приход (получение денег от покупателя). При возврате средств по РКО используется Возврат прихода.
  2. Признак способа расчета (Тег 1214): Показывает, за что именно вносятся деньги в данный момент. Если ПКО оформляется без отгрузки товаров (как предоплата), обязательно передавайте значение Предоплата или Аванс. Если же ПКО оформляется одновременно с передачей услуг/товаров, устанавливайте значение Полный расчет.

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

← На главную