Как обеспечить совместимость 1С и ККМ при переходе на ФФД 1.05: подробное руководство по настройке и доработке (на примере Альфа-Авто)

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

Переход на новые форматы фискальных данных (ФФД) — это неизбежный процесс, продиктованный изменениями в налоговом законодательстве. С 1 января 2019 года формат ФФД 1.0 был полностью упразднен. Любые чеки, пробитые по старому формату, признаются ФНС недействительными, что влечет за собой серьезные штрафные санкции для бизнеса. Сегодня стандартом де-факто является ФФД 1.05 (а для маркированных товаров — ФФД 1.2).

В этой статье мы подробно разберем, как взаимодействуют между собой платформа 1С, конфигурация (на примере отраслевого решения «Альфа-Авто» от «1С-Рарус») и контрольно-кассовая техника (ККТ) при переходе с ФФД 1.0 на ФФД 1.05. Мы проанализируем технические проблемы, с которыми сталкиваются разработчики и системные администраторы, и рассмотрим практические варианты доработки «накрученных» (сильно кастомизированных) конфигураций.

---

1. Принцип взаимодействия 1С и ККМ по ФФД 1.05

Выясним, каким образом данные передаются из 1С в кассу и обратно. Процесс обмена строится по следующей цепочке: 1С (Документ) -> БПО (Библиотека подключаемого оборудования) -> Драйвер ККТ -> Кассовый аппарат.

Когда вы нажимаете кнопку «Пробить чек» в документе (например, «Чек на оплату» или «Приходный кассовый ордер»), конфигурация собирает данные о продаже и формирует пакет данных. Этот пакет передается в обработку обслуживания ККТ, которая с помощью установленного драйвера (например, АТОЛ ДТО 10 или Штрих-М) отправляет команды непосредственно на фискальный накопитель (ФН).

В типовых современных конфигурациях 1С реализован механизм автоматического определения версии ФФД. Программа сама делает запрос к ККТ через драйвер, считывает параметры регистрации кассы и понимает, какой формат фискальных данных (1.05 или 1.2) сейчас активен на аппарате. На основе этого 1С динамически перестраивает структуру передаваемого XML-пакета чека.

Однако, если ваша конфигурация не обновлялась несколько лет (как это часто бывает с корпоративными базами «Альфа-Авто»), автоматический опрос ККТ может работать некорректно или вовсе отсутствовать. В этом случае старая учетная система будет пытаться отправить данные по спецификации ФФД 1.0, а обновленная касса их отвергнет, выдав ошибку драйвера.

---

2. Почему простое обновление кассы ломает учет в старой 1С?

Проанализируем ситуацию, когда системный администратор обновил прошивку ККТ до ФФД 1.05, выполнил перерегистрацию в налоговой, но оставил конфигурацию 1С без изменений. В этом случае вы гарантированно столкнетесь со следующими критическими проблемами:

  1. Проблемы со ставками НДС и видами оплат. В формате ФФД 1.05 изменились требования к передаче ставок налога (в частности, появились новые правила для ставок Без НДС, НДС 20% и расчетных ставок). Если старый код 1С передает эти параметры в неверных числовых идентификаторах, драйвер кассы вернет ошибку «Неверная ставка НДС» или «Сумма налога превышает сумму позиции».
  2. Отсутствие обязательных тегов ФФД 1.05. Переход на ФФД 1.05 существенно расширил список обязательных реквизитов чека. Теперь касса требует от программы передачу тегов, которых в формате 1.0 просто не существовало.

Рассмотрим подробнее ключевые теги, которые стали обязательными в ФФД 1.05:

---

3. Специфика работы с линейкой «Альфа-Авто» (редакций 4 и 5)

Продукты линейки «Альфа-Авто» от разработчика «1С-Рарус» имеют свою специфику подключения торгового оборудования. В отличие от типовых конфигураций фирмы «1С» (таких как «Управление торговлей» или «Розница»), где используется стандартная БПО, в старых версиях «Альфа-Авто» (особенно редакции 4 и ранних релизах редакции 5) применялся собственный защищенный рарусовский механизм работы с оборудованием.

Этот механизм жестко завязан на специализированный сервер защиты и лицензирования, а также на внешние компоненты связи (например, FprnM1C.dll для работы с драйвером АТОЛ). При попытке подключить новую кассу к такой конфигурации часто возникает ошибка «ЭКЛЗ отсутствует» или «ФН отсутствует». Это связано с тем, что старая внешняя компонентная библиотека физически не умеет опрашивать современный фискальный накопитель и некорректно интерпретирует ответы кассового аппарата.

Официальная поддержка ФФД 1.05 появилась в «Альфа-Авто» редакции 5 только начиная с релиза 5.1.13.04. Если ваш релиз старше, то стандартными средствами настроить обмен по ФФД 1.05 невозможно. В «Альфа-Авто» редакции 4, которая уже снята с поддержки, стандартного перехода на ФФД 1.05 вообще не предусмотрено.

---

4. Варианты решения проблемы для кастомизированных систем

Если ваша «Альфа-Авто» сильно переписана, в нее внедрено множество уникальных бизнес-процессов, а база «снята с поддержки», простое обновление конфигурации до актуального релиза обойдется очень дорого и потребует сотен часов работы программистов. Разберем четыре альтернативных пути решения этой задачи.

Вариант 1: Разработка внешней обработки обслуживания ККТ

Вместо масштабного обновления всей конфигурации мы можем перехватить процесс отправки чека на кассу и перенаправить его через внешнюю обработку. Эта обработка будет использовать современный драйвер (например, COM-объект АТОЛ ДТО 10) напрямую, минуя старые защищенные механизмы Раруса.

Рассмотрим пример кода на встроенном языке 1С, демонстрирующий, как инициализировать объект драйвера АТОЛ 10 и передать в него обязательные теги ФФД 1.05:


// Создаем объект драйвера ККТ АТОЛ 10 через COM-соединение
Попытка
    Драйвер = Новый COMОбъект("AddIn.Fptr10");
Исключение
    Предупреждение("Не удалось загрузить драйвер ККТ АТОЛ 10!");
    Возврат;
КонецПопытки;

// Настройка связи с кассой (параметры могут быть считаны из констант)
Драйвер.setSingleSetting(Драйвер.LIBFPTR_SETTING_MODEL, Строка(Драйвер.LIBFPTR_MODEL_AUTOMATIC));
Драйвер.setSingleSetting(Драйвер.LIBFPTR_SETTING_PORT, Строка(Драйвер.LIBFPTR_PORT_USB));
Драйвер.applySingleSettings();

// Подключаемся к ККТ
Драйвер.open();
Если Не Драйвер.isOpened() Тогда
    ВызватьИсключение "Ошибка подключения к кассе: " + Драйвер.errorDescription();
КонецЕсли;

// Начинаем формирование чека (Приход)
Драйвер.setParam(Драйвер.LIBFPTR_PARAM_RECEIPT_TYPE, Драйвер.LIBFPTR_RT_SELL);
Драйвер.openReceipt();

// Передаем обязательный тег 1021 (Кассир) и 1203 (ИНН кассира)
Драйвер.setParam(1021, "Иванов Иван Иванович");
Драйвер.setParam(1203, "770102030405");
Драйвер.operatorLogin();

// Пример добавления позиции (Товар с ФФД 1.05)
Драйвер.setParam(Драйвер.LIBFPTR_PARAM_COMMODITY_NAME, "Масло моторное Synthetic 5W-40");
Драйвер.setParam(Драйвер.LIBFPTR_PARAM_PRICE, 1500.00);
Драйвер.setParam(Драйвер.LIBFPTR_PARAM_QUANTITY, 1);
Драйвер.setParam(Драйвер.LIBFPTR_PARAM_TAX_TYPE, Драйвер.LIBFPTR_TAX_VAT20); // НДС 20%

// Передаем тег 1212 (Предмет расчета: Товар)
Драйвер.setParam(Драйвер.LIBFPTR_PARAM_COMMODITY_SUBJECT, Драйвер.LIBFPTR_SU_COMMODITY); 

// Передаем тег 1214 (Способ расчета: Полный расчет)
Драйвер.setParam(Драйвер.LIBFPTR_PARAM_MEASUREMENT_UNIT, "шт");
Драйвер.setParam(Драйвер.LIBFPTR_PARAM_PAYMENT_METHOD, Драйвер.LIBFPTR_PM_FULL_PAYMENT);

Драйвер.registration();

// Закрываем чек типом оплаты "Электронными" (карта)
Драйвер.setParam(Драйвер.LIBFPTR_PARAM_PAYMENT_TYPE, Драйвер.LIBFPTR_PT_ELECTRONIC);
Драйвер.setParam(Драйвер.LIBFPTR_PARAM_PAYMENT_SUM, 1500.00);
Драйver.closeReceipt();

// Отключаемся от ККТ
Драйвер.close();

Этот способ хорош тем, что мы не изменяем типовой код документов «Альфа-Авто». Мы лишь переписываем процедуру печати чека в модуле кассовых операций, направляя поток данных на новый драйвер. Конфигурация остается пригодной для дальнейшего сопровождения.

Вариант 2: Использование промежуточного ПО (утилит интеграции)

Если у вас нет ресурсов на написание собственного кода для работы с драйверами ККТ, можно воспользоваться готовыми сторонними решениями (драйверными мостами). Существуют специализированные программные продукты, такие как «ККТ-Онлайн» или решения от независимых разработчиков (например, разработки компании RBsoft).

Принцип работы таких утилит следующий:

Это самый быстро внедряемый вариант, не требующий глубоких знаний программирования 1С.

Вариант 3: Частичный перенос БПО из типовых конфигураций

Этот метод подходит для крупных системных интеграторов и опытных разработчиков 1С. Суть метода заключается в том, что мы полностью вырезаем устаревший рарусовский блок работы с торговым оборудованием из «Альфа-Авто» и внедряем вместо него современную Библиотеку подключаемого оборудования (БПО) от фирмы «1С» (например, версию не ниже 3.0).

Разберем по шагам, как реализуется этот процесс:

  1. Из любой современной типовой конфигурации (например, «Управление торговлей 10.3» последних релизов или «Розница») переносятся объекты БПО: общие модули работы с оборудованием, справочники касс, обработчики драйверов и макеты компонент.
  2. В модулях документов «Альфа-Авто» (таких как ЗаказНаряд, ЧекККМ, Оплата) отключаются стандартные вызовы функций оборудования Рарус.
  3. Взамен внедряется вызов процедур БПО для формирования XML-пакета чека. Пример структуры XML-пакета для БПО, поддерживающей ФФД 1.05, представлен ниже.

// Пример формирования XML-пакета чека по стандарту БПО
ДанныеЧека = "<?xml version=""1.0"" encoding=""UTF-8""?>" +
"<Receipt>" +
"  <Positions>" +
"    <FiscalString Name=""Ремонт подвески автомобиля"" " +
"                  Quantity=""1"" " +
"                  Price=""2500.00"" " +
"                  Amount=""2500.00"" " +
"                  Department=""1"" " +
"                  TaxCode=""1"" " + // Код ставки НДС (например, 20%)
"                  CalculationMethod=""4"" " + // Тег 1214: Полный расчет
"                  CalculationSubject=""3""/>" + // Тег 1212: Услуга
"  </Positions>" +
"  <Payments Cash=""0.00"" ElectronicPayment=""2500.00""/>" +
"</Receipt>";

Внедрение БПО решает проблему совместимости с кассовой техникой на годы вперед. В будущем при изменении законов вам достаточно будет просто обновить саму БПО внутри вашей конфигурации, не трогая основной код «Альфа-Авто».

---

5. Что нужно сделать с самим кассовым аппаратом (ККТ)?

Важно понимать, что доработка программы 1С — это лишь половина дела. Переход на ФФД 1.05 требует выполнения обязательных технических процедур на стороне кассового аппарата:

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

---

6. Подведем итоги

Переход с ФФД 1.0 на ФФД 1.05 — критически важная задача для обеспечения легальности продаж в любой автосервисной или торговой организации. Для старых и доработанных конфигураций типа «Альфа-Авто» наиболее надежными решениями являются либо внедрение внешней обработки обслуживания на базе прямого обращения к драйверу АТОЛ/Штрих-М, либо интеграция подсистемы БПО.

Выбор конкретного пути зависит от масштаба изменений в вашей базе данных и квалификации обслуживающих ИТ-специалистов. Своевременное выполнение этих работ позволит избежать штрафов со стороны налоговых органов и обеспечит стабильную работу кассового узла вашего предприятия.

← На главную