Почему при расчетах по договорам в 1С чеки бьются авансом без списка товаров по ФФД 1.05 и как это исправить?

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

При переходе на формат фискальных данных ФФД 1.05 многие пользователи торговых конфигураций 1С (Комплексная автоматизация 2.4, ERP 2, Управление торговлей 11) столкнулись с неприятной особенностью. При попытке пробить чек из документов Приходный кассовый ордер (ПКО) или Эквайринговая операция, привязанных к заказу клиента, в фискальном документе вместо детализированного списка товаров печатается одна строка со значением «Аванс» на общую сумму платежа. При этом в предыдущем формате ФФД 1.0 всё работало корректно.

В этой статье мы подробно разберем, почему возникает эта проблема с точки зрения архитектуры 1С и требований законодательства (ФЗ-54), а также рассмотрим практические способы её решения как для бухгалтеров, так и для программистов.

Выясняем причину: логика работы механизмов 1С

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

Проанализируем два сценария поведения системы:

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

В ФФД 1.0 требования к детализации чеков были мягче, поэтому передача общей суммы без товарных позиций при предоплате не вызывала ошибок ККТ. С переходом на ФФД 1.05 правила ужесточились.

Требования ФЗ-54 и риски для бизнеса

С точки зрения налогового законодательства РФ существует принципиальная разница между терминами «Аванс» и «Предоплата»:

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

Варианты решения проблемы

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

Способ 1. Оформление документов по факту отгрузки (Реализация товаров и услуг)

Если бизнес-процесс компании позволяет, самый простой вариант — пробивать чек в момент отгрузки. Если оплата и отгрузка происходят одновременно, то сначала в системе создается документ Реализация товаров и услуг. При создании ПКО на основании реализации объект расчетов автоматически определится как накладная, и касса выдаст корректный чек с признаком способа расчета «Полный расчет» и полным списком товаров.

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

Способ 2. Переход на детализацию расчетов «По заказам»

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

Разберем последовательность действий:

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

Аргументы для бухгалтерии: Бухгалтеры часто опасаются, что при расчетах «по заказам» им придется вручную распределять каждую копейку. Спешим успокоить: современные конфигурации 1С (КА 2.4/2.5, ERP) оснащены мощным механизмом автоматического распределения оплат. При проведении документов система сама зачитывает авансы по хронологии ФИФО, минимизируя ручной труд.

Способ 3. Техническое решение: Расширение конфигурации

Если бухгалтерия категорически отказывается менять аналитику расчетов по договорам, а пробивать чеки без номенклатуры нельзя, на помощь приходит программист. Мы можем создать расширение конфигурации, которое переопределит алгоритм заполнения чека.

Идея заключается в том, чтобы при печати чека из ПКО проверять: если объект расчетов — договор, но у платежа есть заполненный документ-основание (например, ЗаказКлиента), программа должна обратиться к табличной части этого заказа и передать её позиции в кассу.

Проанализируем пример кода, который перехватывает процедуру подготовки данных для ККТ:


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

Данный подход позволяет сохранить привычные для бухгалтерии взаиморасчеты «по договорам» в регистрах накопления 1С, но при этом внешние фискальные документы на ККТ будут уходить в строгом соответствии с требованиями ФЗ-54.

Способ 4. Переход на современную редакцию Комплексной автоматизации 2.5

Если вы все еще работаете на старых релизах КА 2.4, имеет смысл рассмотреть проект обновления до актуальной версии 2.5. В новых редакциях разработчики значительно усовершенствовали архитектуру взаиморасчетов.

В частности, был добавлен новый гибридный режим ведения расчетов, например, «Аванс по договорам, долг по накладным». Этот режим позволяет автоматически аккумулировать предоплату на уровне договора (упрощая жизнь бухгалтеру), но при этом сохраняет детальную связь платежей с конкретными заказами и реализациями в момент их совершения, что автоматически решает проблему коллизии ФФД 1.05 при печати чеков.

← На главную