Как доработать обмен 1С:Торговля и Склад 7.7 с кассами Frontol 5 под требования ФФД 1.05?

Программист 1С v7.7 Налоговый учет Торговля и дистрибуция
← На главную

Реформа применения контрольно-кассовой техники (54-ФЗ) и массовое внедрение формата фискальных данных ФФД 1.05 потребовали обязательной передачи в ОФД новых реквизитов чека: признака предмета расчета и признака способа расчета. Если кассовая программа (например, Frontol 5) работает по ФФД 1.05, а товароучетная система не передает эти реквизиты в файле обмена, касса начинает блокировать продажи и выдавать ошибки вида «Не задан признак предмета расчета».

Многие пользователи классической конфигурации «1С:Торговля и Склад 7.7» столкнулись с тем, что даже в последних релизах (например, 997 и выше) заявленная поддержка ФФД 1.05 касается только фискальных регистраторов, подключенных напрямую. Обработки для режима ККМ-Offline (обмен через текстовые файлы goods.txt) остались без изменений. В этой статье мы разберем, как самостоятельно доработать выгрузку из 1С 7.7 во Frontol 5, чтобы соответствовать всем требованиям законодательства.

Выясняем причину проблемы

При работе в режиме Offline программа «1С:Торговля и Склад 7.7» формирует текстовый файл обмена (обычно с именем goods.txt) в формате АТОЛ. Этот формат представляет собой набор строк, где поля разделены точкой с запятой. За формирование этого файла отвечает внешняя обработка обслуживания, расположенная по пути \ExtForms\Equip\off_spos.ert (или аналогичная обработка ККМ-Offline в вашем каталоге базы данных).

Для ФФД 1.05 кассовому ПО Frontol 5 жизненно необходимы два параметра для каждой позиции номенклатуры:

  1. Признак предмета расчета (поле №13 в строке товара) — определяет, чем именно является позиция: обычным товаром, подакцизным товаром, работой, услугой и т.д.
  2. Код налоговой группы (поле №23 в строке товара) — связывает товар с конкретной ставкой НДС, зарегистрированной в кассе.

Если эти поля остаются пустыми, Frontol не может сопоставить номенклатуру требованиям ФФД 1.05 и аннулирует чеки на кассе.

Шаг 1. Передача налоговых ставок и групп во Frontol

Прежде чем присваивать товарам налоговые группы, необходимо передать описание этих групп и ставок в самом начале файла обмена. Для этого во Frontol используются служебные секции $$$ADDTAXRATES, $$$ADDTAXGROUPS и $$$ADDTAXGROUPRATES.

Рассмотрим пример кода, который необходимо добавить в процедуру формирования файла обмена (в обработке обслуживания ККМ) перед выгрузкой списка товаров:


// Формируем блок описания налоговых ставок для АТОЛ/Frontol
ФайлОтчета.ДобавитьСтроку("");
ФайлОтчета.ДобавитьСтроку("$$$ADDTAXRATES");
// Формат: КодСтавки; Название; НазваниеДляПечати; Величина; ТипНалога; НомерНалогаВККМ
ФайлОтчета.ДобавитьСтроку("1;Без НДС;Без НДС;0;0;6;");
ФайлОтчета.ДобавитьСтроку("2;НДС 10%;НДС 10%;10;0;2;");
ФайлОтчета.ДобавитьСтроку("3;НДС 18%;НДС 18%;18;0;1;"); // Для исторических документов (или 20% для современных реалий)

ФайлОтчета.ДобавитьСтроку("$$$ADDTAXGROUPS");
// Формат: КодГруппы; Название; НазваниеДляПечати
ФайлОтчета.ДобавитьСтроку("1;Без НДС;Без НДС;");
ФайлОтчета.ДобавитьСтроку("2;НДС 10%;НДС 10%;");
ФайлОтчета.ДобавитьСтроку("3;НДС 18%;НДС 18%;");

ФайлОтчета.ДобавитьСтроку("$$$ADDTAXGROUPRATES");
// Формат: КодГруппы; КодСтавки; Приоритет
ФайлОтчета.ДобавитьСтроку("1;1;1;");
ФайлОтчета.ДобавитьСтроку("2;2;1;");
ФайлОтчета.ДобавитьСтроку("3;3;1;");
ФайлОтчета.ДобавитьСтроку("");

В данном примере мы жестко сопоставили налоговые ставки с их внутренними кодами. Обратите внимание, что последний параметр в строке ставки (например, 6 для «Без НДС» или 1 для «НДС 18%») должен строго соответствовать таблице налогов в настройках вашего фискального регистратора.

Шаг 2. Определение «Признака предмета расчета» в 1С 7.7

Согласно формату ФФД 1.05, признак предмета расчета принимает следующие основные числовые значения:

Проанализируем, как реализовать это в конфигурации. У вас есть два пути решения:

Вариант А. Простая доработка без изменения структуры метаданных (для однородного товара)

Если ваша розничная точка торгует исключительно стандартными товарами (и у вас нет услуг или подакцизной продукции), вы можете жестко прописать этот признак в коде выгрузки. Для этого в процедуре выгрузки строки товара в 13-й параметр передается константа "1".

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


// Пример логики определения признака предмета расчета
Если СпрНоменклатура.ПодакцизныйТовар = 1 Тогда
    ПризнакПредмета = "2"; // Подакцизный товар
ИначеЕсли СпрНоменклатура.ВидНоменклатуры = Перечисление.ВидыНоменклатуры.Услуга Тогда
    ПризнакПредмета = "4"; // Услуга
Иначе
    ПризнакПредмета = "1"; // Обычный товар
КонецЕсли;

Вариант Б. Полноценная доработка справочника «Номенклатура»

Если ассортимент разнообразен, правильным решением будет создание полноценного реквизита в Конфигураторе:

  1. Откройте базу в режиме Конфигуратор.
  2. Найдите справочник Номенклатура.
  3. Добавьте новый реквизит ПризнакПредметаРасчета (тип данных — Число, длина — 2, без дробной части).
  4. Выведите этот реквизит на форму элемента справочника Номенклатура в виде поля выбора или списка значений, чтобы контент-менеджер или бухгалтер могли явно указать категорию для услуг, подакцизных товаров или обычных позиций.

Шаг 3. Модификация строки выгрузки товара

Теперь отредактируем формирование самой строки товара в файле goods.txt. Нам нужно подставить полученные значения в соответствующие поля строки формата АТОЛ.

Найдем в модуле обработки обслуживания ККМ строку формирования записи товара. Обычно она выглядит как последовательное склеивание переменных через символ ";". Изменим ее, добавив выгрузку 13-го (Признак предмета расчета) и 23-го (Код налоговой группы) параметров.

Рассмотрим структуру измененного кода формирования строки:


// Пример формирования строки для товара в формате АТОЛ
СтрокаВыгрузки = КодТовара + ";" + 
                 ШтрихКод + ";" + 
                 СокрЛП(Наименование) + ";" + 
                 СокрЛП(Наименование) + ";" + 
                 Цена + ";" + 
                 Количество + ";" + 
                 ";" + // Поле 7
                 ";" + // Поле 8
                 ";" + // Поле 9
                 ";" + // Поле 10
                 ";" + // Поле 11
                 ";" + // Поле 12
                 ПризнакПредмета + ";" + // Поле 13: Признак предмета расчета (ФФД 1.05)
                 ";" + // Поле 14
                 ";" + // Поле 15
                 ";" + // Поле 16
                 ";" + // Поле 17
                 ";" + // Поле 18
                 ";" + // Поле 19
                 ";" + // Поле 20
                 ";" + // Поле 21
                 ";" + // Поле 22
                 КодНалоговойГруппы + ";"; // Поле 23: Код налоговой группы
                 
ФайлОтчета.ДобавитьСтроку(СтрокаВыгрузки);

Определить переменную КодНалоговойГруппы можно на основании ставки НДС, указанной в карточке товара 1С. Например:


// Определение кода налоговой группы по ставке НДС товара
СтавкаНДС = СпрНоменклатура.СтавкаНДС.Получить(ДатаВыгрузки);

Если СтавкаНДС = Перечисление.СтавкиНДС.БезНДС Тогда
    КодНалоговойГруппы = "1";
ИначеЕсли (СтавкаНДС = Перечисление.СтавкиНДС.НДС10) Или (СтавкаНДС = Перечисление.СтавкиНДС.НДС10_110) Тогда
    КодНалоговойГруппы = "2";
Иначе
    КодНалоговойГруппы = "3"; // По умолчанию 18% (или 20%)
КонецЕсли;

Альтернативное решение на стороне Frontol 5

Если у вас нет возможности или прав на изменение конфигурации 1С 7.7, обратите внимание на настройки самой кассовой программы. Начиная с версий Frontol 5.26.1, разработчики предусмотрели функционал автоподстановки для старых товароучетных систем.

Вы можете зайти в настройки Frontol в раздел «ОФД» / «Параметры ККТ» и настроить значения по умолчанию. В таком случае, если из 1С не передается признак предмета расчета, Frontol автоматически подставит в чек значение «Товар» (или иное выбранное вами дефолтное значение). Однако помните, что этот способ не сработает корректно, если в одном чеке у вас могут быть одновременно и услуги, и подакцизные товары, поскольку касса применит дефолтную настройку ко всему списку чека.

← На главную