Как настроить печать чека ККМ из ПКО в разрезе номенклатуры в 1С:КА 2 и УТ 11

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

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

Анализ причин схлопывания номенклатуры в чеке

Прежде чем приступать к программным изменениям, проанализируем стандартное поведение системы. В программах 1С:Комплексная автоматизация 2 (КА 2) и 1С:Управление торговлей 11 (УТ 11) логика формирования чека напрямую зависит от связи финансового документа с товарным. Рассмотрим основные факторы влияния:

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

Технические точки перехвата для изменения состава чека

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

В зависимости от версии вашей конфигурации (2.4 или 2.5), точки входа будут различаться. Проанализируем оба варианта.

Реализация для версий КА 2.4 (включая внешние печатные формы для Комплексной Автоматизации 2) / УТ 11.4

В этих редакциях основная логика формирования структуры чека находится в общем модуле ДенежныеСредстваСервер. Рассмотрим пошагово, как найти нужное место:

  1. Перейдем в общий модуль ДенежныеСредстваСервер.
  2. Найдем процедуру, отвечающую за подготовку данных для печати (обычно она вызывается при нажатии кнопки «Пробить чек»).
  3. В этой точке мы можем перехватить таблицу значений, которая передается на вход драйверу ККТ, и программно заполнить её строками из документа-основания (например, из табличной части «Товары» связанной Реализации).

Реализация для версий КА 2.5 / УТ 11.5 и выше

В актуальных версиях архитектура фискализации была переработана. Теперь за подготовку данных отвечает подсистема «Библиотека подключаемого оборудования», а сбор данных из документов КА/УТ вынесен в специализированные модули. Разберем алгоритм работы:

Основным модулем является ФискализацияСервер. Именно здесь подготавливаются структуры, описывающие позиции чека. Для изменения состава чека рекомендуется использовать механизм расширений и перехватывать процедуру ЗаполнитьДанныеЧека или функции, вызываемые внутри ПодготовитьДанныеДляПечатиЧека.

Посмотрим на пример логики, которую можно реализовать в расширении:


&После("ПодготовитьДанныеДляПечатиЧека")
Процедура Инт_ПодготовитьДанныеДляПечатиЧека(ДокументСсылка, ПараметрыЧека, ДополнительныеПараметры)
    
    // Проверяем, что это ПКО и в чеке всего одна строка (схлопнутая сумма)
    Если ТипЗнч(ДокументСсылка) = Тип("ДокументСсылка.ПриходныйКассовыйОрдер") 
        И ПараметрыЧека.ПозицииЧека.Количество() = 1 Тогда
        
        // Получаем документ-основание
        ОбъектРасчетов = ДокументСсылка.ОбъектРасчетов;
        
        Если ЗначениеЗаполнено(ОбъектРасчетов) И ТипЗнч(ОбъектРасчетов.Ссылка) = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
            // Вызываем собственную функцию заполнения позиций из реализации
            ПерезаполнитьПозицииИзРеализации(ПараметрыЧека, ОбъектРасчетов.Ссылка);
        КонецЕсли;
        
    КонецЕсли;

КонецПроцедуры

Проблема подмененной номенклатуры

Иногда возникает ситуация, когда в базе ведется учет «скрытой» номенклатуры или используются механизмы сопоставления (например, при работе через торговые площадки), из-за чего в чек попадают не те наименования. Чтобы исправить это, нужно обратить внимание на формирование параметра Name (Наименование) в структуре позиции чека.

Проанализируем функцию, которая вычисляет текстовое представление товара. В 1С это часто происходит в модуле менеджера оборудования или специализированных функциях формирования строк чека. Если вам нужно выводить специфическое название (например, из доп. реквизита или номенклатуры контрагента), именно там следует произвести подмену НаименованиеДляПечати.

Важные моменты при доработке:

Итоги

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

← На главную