При переходе на формат фискальных данных ФФД 1.05 многие пользователи торговых конфигураций 1С (Комплексная автоматизация 2.4, ERP 2, Управление торговлей 11) столкнулись с неприятной особенностью. При попытке пробить чек из документов Приходный кассовый ордер (ПКО) или Эквайринговая операция, привязанных к заказу клиента, в фискальном документе вместо детализированного списка товаров печатается одна строка со значением «Аванс» на общую сумму платежа. При этом в предыдущем формате ФФД 1.0 всё работало корректно.
В этой статье мы подробно разберем, почему возникает эта проблема с точки зрения архитектуры 1С и требований законодательства (ФЗ-54), а также рассмотрим практические способы её решения как для бухгалтеров, так и для программистов.
В типовых конфигурациях 1С алгоритм заполнения фискального чека по ФФД 1.05 жестко завязан на реквизит «Объект расчетов», который указывается в расшифровке платежа платежного документа.
Проанализируем два сценария поведения системы:
В ФФД 1.0 требования к детализации чеков были мягче, поэтому передача общей суммы без товарных позиций при предоплате не вызывала ошибок ККТ. С переходом на ФФД 1.05 правила ужесточились.
С точки зрения налогового законодательства РФ существует принципиальная разница между терминами «Аванс» и «Предоплата»:
Если клиент платит по конкретному заказу (счету), а вы пробиваете ему чек со словом «Аванс» без детализации номенклатуры, это трактуется Федеральной налоговой службой (ФНС) как нарушение порядка применения контрольно-кассовой техники. Бухгалтерии важно понимать: сохраняя удобство закрытия взаиморасчетов «по договорам», компания рискует получить штрафы по ст. 14.5 КоАП РФ.
Рассмотрим по шагам четыре практических способа выхода из этой ситуации.
Если бизнес-процесс компании позволяет, самый простой вариант — пробивать чек в момент отгрузки. Если оплата и отгрузка происходят одновременно, то сначала в системе создается документ Реализация товаров и услуг. При создании ПКО на основании реализации объект расчетов автоматически определится как накладная, и касса выдаст корректный чек с признаком способа расчета «Полный расчет» и полным списком товаров.
Однако этот способ не подходит компаниям, работающим по схеме «деньги сегодня — стулья через два дня» (классический интернет-эквайринг или заказные позиции).
Это методологически верный путь, заложенный разработчиками фирмы «1С». Для реализации этого сценария необходимо изменить настройки договоров с клиентами.
Разберем последовательность действий:
Аргументы для бухгалтерии: Бухгалтеры часто опасаются, что при расчетах «по заказам» им придется вручную распределять каждую копейку. Спешим успокоить: современные конфигурации 1С (КА 2.4/2.5, ERP) оснащены мощным механизмом автоматического распределения оплат. При проведении документов система сама зачитывает авансы по хронологии ФИФО, минимизируя ручной труд.
Если бухгалтерия категорически отказывается менять аналитику расчетов по договорам, а пробивать чеки без номенклатуры нельзя, на помощь приходит программист. Мы можем создать расширение конфигурации, которое переопределит алгоритм заполнения чека.
Идея заключается в том, чтобы при печати чека из ПКО проверять: если объект расчетов — договор, но у платежа есть заполненный документ-основание (например, ЗаказКлиента), программа должна обратиться к табличной части этого заказа и передать её позиции в кассу.
Проанализируем пример кода, который перехватывает процедуру подготовки данных для ККТ:
&После("ЗаполнитьДанныеЧека")
Процедура Расш1_ЗаполнитьДанныеЧека(ПараметрыПечати, ДокументОснование, Отказ)
// Проверяем, что документ-основание — это платежный документ (ПКО)
Если ТипЗнч(ДокументОснование) = Тип("ДокументСсылка.ПриходныйКассовыйОрдер") Тогда
// Проверяем, ведется ли расчет по договору
Если ДокументОснование.ОбъектРасчетов.ТипОбъекта = ПредопределенноеЗначение("Перечисление.ТипыОбъектовРасчетов.Договор") Тогда
// Пытаемся найти Заказ в документе-основании платежа
ЗаказСсылка = ДокументОснование.ДокументОснование;
Если ЗначениеЗаполнено(ЗаказСсылка) И ТипЗнч(ЗаказСсылка) = Тип("ДокументСсылка.ЗаказКлиента") Тогда
// Переопределяем логику: вытягиваем товары из найденного заказа
ТаблицаТоваров = ЗаказСсылка.Товары.Выгрузить();
ПараметрыПечати.ТабличнаяЧасть.Очистить();
Для Каждого СтрокаТовара Из ТаблицаТоваров Цикл
НоваяСтрока = ПараметрыПечати.ТабличнаяЧасть.Добавить();
НоваяСтрока.Номенклатура = СтрокаТовара.Номенклатура;
НоваяСтрока.Количество = СтрокаТовара.Количество;
НоваяСтрока.Цена = СтрокаТовара.Цена;
НоваяСтрока.Сумма = СтрокаТовара.Сумма;
НоваяСтрока.ПризнакСпособаРасчета = ПредопределенноеЗначение("Перечисление.ПризнакиСпособаРасчета.ПредоплатаЧастичная");
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Данный подход позволяет сохранить привычные для бухгалтерии взаиморасчеты «по договорам» в регистрах накопления 1С, но при этом внешние фискальные документы на ККТ будут уходить в строгом соответствии с требованиями ФЗ-54.
Если вы все еще работаете на старых релизах КА 2.4, имеет смысл рассмотреть проект обновления до актуальной версии 2.5. В новых редакциях разработчики значительно усовершенствовали архитектуру взаиморасчетов.
В частности, был добавлен новый гибридный режим ведения расчетов, например, «Аванс по договорам, долг по накладным». Этот режим позволяет автоматически аккумулировать предоплату на уровне договора (упрощая жизнь бухгалтеру), но при этом сохраняет детальную связь платежей с конкретными заказами и реализациями в момент их совершения, что автоматически решает проблему коллизии ФФД 1.05 при печати чеков.