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