Как правильно реализовать оплату подарочными сертификатами при переходе на ФФД 1.05

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

С переходом на формат фискальных данных (ФФД) версии 1.05 многие разработчики столкнулись с проблемой: старые механизмы передачи типов оплат в ККТ перестали работать корректно. Если раньше в ФФД 1.0 мы могли использовать универсальные индексы электронных оплат (например, CashLessType1, CashLessType2, CashLessType3), то в версии 1.05 требования к типизации платежей ужесточились. Особенно это касается подарочных сертификатов, которые с точки зрения закона 54-ФЗ являются авансовыми платежами.

В данной статье мы разберем, как модернизировать код формирования XML-пакета для кассового аппарата, какие атрибуты использовать для сертификатов и почему важно правильно выбрать тип оплаты, чтобы избежать претензий со стороны налоговой и задвоения выручки.

Различие форматов XML в ФФД 1.0 и 1.05

Проанализируем ситуацию: в старых редакциях протоколов 1С и драйверов ККТ блок оплат Payments содержал перечисление типов электронных платежей. Кассир или программист настраивали в таблицах ККТ, что тип 1 — это карта, тип 2 — бонус, тип 3 — сертификат. В XML это выглядело следующим образом:


// Старый формат ФФД 1.0
ЗаписьXML.ЗаписатьНачалоЭлемента("Payments");
    ЗаписьXML.ЗаписатьАтрибут("Cash", XMLСтрока(СуммаНаличными));
    ЗаписьXML.ЗаписатьАтрибут("CashLessType1", XMLСтрока(СуммаКартой));
    ЗаписьXML.ЗаписатьАтрибут("CashLessType2", XMLСтрока(0));
    ЗаписьXML.ЗаписатьАтрибут("CashLessType3", XMLСтрока(СуммаСертификатом));
ЗаписьXML.ЗаписатьКонецЭлемента();

В ФФД 1.05 структура полностью изменилась. Теперь вместо абстрактных "типов" используются именованные атрибуты, жестко соответствующие тегам ФНС. Рассмотрим обновленный код, который необходимо внедрить в модуль обработки обслуживания ККТ или в код формирования чека:


// Актуальный формат ФФД 1.05
ЗаписьXML.ЗаписатьНачалоЭлемента("Payments");
Если ВерсияФФД > 0 Тогда // Проверяем, что используется ФФД 1.0.5 или выше
    // Наличные (тег 1031)
    ЗаписьXML.ЗаписатьАтрибут("Cash", XMLСтрока(СуммаНаличными));
    
    // Безналичные/Электронные (тег 1081)
    ЗаписьXML.ЗаписатьАтрибут("ElectronicPayment", XMLСтрока(СуммаЭлектронными));
    
    // Постоплата / Кредит (тег 1216)
    ЗаписьXML.ЗаписатьАтрибут("Credit", XMLСтрока(СуммаПостоплатой));
    
    // Зачет аванса / Предоплата (тег 1215)
    ЗаписьXML.ЗаписатьАтрибут("AdvancePayment", XMLСтрока(СуммаПредоплатой));
    
    // Встречное предоставление (тег 1217)
    ЗаписьXML.ЗаписатьАтрибут("CashProvision", XMLСтрока(СуммаПредоставлением));
Иначе
    // Режим совместимости с ФФД 1.0
    ЗаписьXML.ЗаписатьАтрибут("Cash", XMLСтрока(СуммаНаличными));
    ЗаписьXML.ЗаписатьАтрибут("ElectronicPayment", XMLСтрока(СуммаЭлектронными + СуммаПредоплатой + СуммаПредоставлением));
КонецЕсли;
ЗаписьXML.ЗаписатьКонецЭлемента();

Методология учета сертификатов: «Аванс» или «Встречное предоставление»?

Выясним, какой из новых атрибутов подходит для подарочного сертификата. В профессиональном сообществе часто возникают споры между использованием AdvancePayment (Зачет аванса) и CashProvision (Встречное предоставление). Разберем по шагам:

  1. Зачет аванса (AdvancePayment, тег 1215): Это основной способ оформления оплаты сертификатом. Согласно позиции ФНС, покупка сертификата — это внесение денежных средств в счет будущих покупок (аванс). Следовательно, когда покупатель возвращается с этим сертификатом, мы делаем зачет ранее внесенного аванса.
  2. Встречное предоставление (CashProvision, тег 1217): Этот тег используется реже, в основном для операций обмена (бартера) или специфических бонусных программ. Использование этого тега для денежных сертификатов может привести к ошибкам в отчетах ОФД.

Важный нюанс: Если мы продолжим пробивать оплату сертификатом как "Безналичные" (ElectronicPayment), в ОФД и налоговую уйдут данные о новом приходе денежных средств. Это приведет к задвоению выручки: первый раз налог будет исчислен при продаже самого сертификата, а второй раз — при продаже товара за этот сертификат.

Двухэтапная схема чеков

Для полной корректности по ФФД 1.05 мы должны реализовать две разные операции в программе:

1. Продажа сертификата покупателю

В этом чеке мы принимаем деньги. Признак способа расчета должен быть ПРЕДОПЛАТА или АВАНС. В блоке Payments указывается атрибут Cash или ElectronicPayment (смотря как клиент платит за сам пластик).

2. Оплата товара сертификатом (Отоваривание)

В этом чеке признак способа расчета — ПОЛНЫЙ РАСЧЕТ. Однако в блоке Payments сумма номинала сертификата должна передаваться именно в атрибут AdvancePayment. Рассмотрим пример кода для формирования комбинированной оплаты (часть наличными, часть сертификатом):


// Пример формирования комбинированного платежа
СуммаВсего = 1000;
СуммаСертификата = 500;
СуммаНаличные = 500;

ЗаписьXML.ЗаписатьНачалоЭлемента("Payments");
    ЗаписьXML.ЗаписатьАтрибут("Cash", XMLСтрока(СуммаНаличные));
    ЗаписьXML.ЗаписатьАтрибут("AdvancePayment", XMLСтрока(СуммаСертификата));
ЗаписьXML.ЗаписатьКонецЭлемента();

Технические требования к драйверам и оборудованию

Проанализируем ситуацию с программным обеспечением. Даже если мы напишем идеальный код формирования XML, старый драйвер ККТ может его "не понять". Для успешной работы с ФФД 1.05 необходимо:

  1. Обновить прошивку ККТ: Касса должна поддерживать работу с ФФД 1.05 (это проверяется в чеке диагностики или через утилиту производителя).
  2. Обновить драйвер: Например, для ККТ "Штрих-М" версия драйвера должна быть не ниже 4.14. Более старые версии могут игнорировать атрибут AdvancePayment и печатать в чеке "Электронными" по умолчанию.
  3. Обновить компоненту интеграции 1С: Если используется самописная конфигурация или старая УТ 10.3, необходимо убедиться, что внешняя компонента (например, SmDrvFR1C22.dll для Штриха) поддерживает ревизию интерфейса 2.2 или выше.

Итоги и рекомендации

Рассмотрев все нюансы, мы можем сделать вывод: переход на ФФД 1.05 требует от программиста 1С не просто замены одной строки кода, а понимания логики движения денежных средств. Для корректной работы подарочных сертификатов выполним следующие действия:

Соблюдение этих правил обеспечит корректную передачу данных в ОФД, правильное отображение типов оплат в чеке (строка "Зачет аванса" вместо "Электронными") и отсутствие проблем с налоговой отчетностью.

← На главную