Как перейти на ФФД 1.05 в старых или сильно измененных конфигурациях 1С (на примере Альфа-Авто 4 и УТ 10.3)?

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

Переход на новые форматы фискальных данных (ФФД) всегда вызывает множество вопросов у разработчиков и системных администраторов, особенно когда речь идет об устаревших или сильно кастомизированных конфигурациях. Одной из таких классических систем является «Альфа-Авто» редакции 4.1 или старые версии «Управление торговлей» редакции 10.3, механизмы печати чеков в которых часто переписаны вручную.

В этой статье мы подробно разберем, как осуществить переход на ФФД 1.05 на подобном программном обеспечении. Мы выясним, можно ли обойтись «малой кровью» без глобального обновления драйверов и переписывания кода, какие теги являются критически важными для ФНС и как использовать современные технологии, такие как встроенный Web-сервер АТОЛ 10-й версии, для упрощения интеграции.

Базовый сценарий: Будет ли касса работать на ФФД 1.05 без изменения кода?

Разберем типичную ситуацию: кассовый аппарат (например, АТОЛ или ШТРИХ-М) обновили на уровне прошивки до поддержки ФФД 1.05, но конфигурация 1С и драйверы торгового оборудования остались прежними. Будет ли такая связка работать и отправлять данные в ОФД?

Практика показывает, что базовая печать чеков продолжит работать. При отправке стандартного пакета данных касса, прошитая под ФФД 1.05, самостоятельно преобразует и передает информацию в ОФД в новом формате. Проверено, что на ККТ АТОЛ, ШТРИХ-М, СПАРК и ВИКИ-ПРИНТ чеки бьются успешно даже при использовании старых драйверов (например, АТОЛ ДТО 8.12 - 8.16).

Однако здесь кроется серьезная опасность, о которой необходимо знать заранее. Без изменения кода 1С касса будет заполнять новые обязательные реквизиты значениями по умолчанию. Это может привести к штрафам от ФНС. Проанализируем, какие именно данные могут уходить некорректно:

Какие обязательные теги ФФД 1.05 необходимо добавить в код 1С?

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

  1. Признак способа расчета (Тег 1214): Определяет, как именно происходит оплата. Основные значения, которые необходимо передавать из документа 1С:
    • Предоплата 100% (значение 1)
    • Предоплата (значение 2)
    • Аванс (значение 3)
    • Полный расчет (значение 4)
    • Частичный расчет и кредит (значение 5)
    • Передача в кредит (значение 6)
    • Оплата кредита (значение 7)
  2. Признак предмета расчета (Тег 1212): Описывает, что именно мы продаем:
    • Товар (значение 1)
    • Подакцизный товар (значение 2)
    • Работа (значение 3)
    • Услуга (значение 4)
    • Иные специфические признаки (платеж, агентское вознаграждение и т.д.).
  3. ИНН кассира (Тег 1203): Должен содержать валидный ИНН сотрудника, оформляющего продажу.

Давайте посмотрим на пример кода, как в старых обработках обслуживания АТОЛ (формата 1С) передаются эти параметры через XML-строку. Нам нужно найти функцию формирования XML и добавить туда выгрузку новых атрибутов для каждой товарной строки:


// Пример модификации XML-свойств товарной позиции для ФФД 1.05
Для Каждого СтрокаТовара Из ТаблицаТоваров Цикл
    ЗаписьXML.ЗаписатьСтартЭлемента("FiscalString");
    ЗаписьXML.ЗаписатьАтрибут("Name", СтрокаТовара.Наименование);
    ЗаписьXML.ЗаписатьАтрибут("Quantity", СтрокаТовара.Количество);
    ЗаписьXML.ЗаписатьАтрибут("Price", СтрокаТовара.Цена);
    ЗаписьXML.ЗаписатьАтрибут("Amount", СтрокаТовара.Сумма);
    ЗаписьXML.ЗаписатьАтрибут("Department", СтрокаТовара.Секция);
    ЗаписьXML.ЗаписатьАтрибут("TaxCode", СтрокаТовара.СтавкаНДС);
    
    // Добавляем новые обязательные атрибуты ФФД 1.05
    ЗаписьXML.ЗаписатьАтрибут("SignMethodCalculation", СтрокаТовара.ПризнакСпособаРасчета); 
    ЗаписьXML.ЗаписатьАтрибут("SignSubjectCalculation", СтрокаТовара.ПризнакПредметаРасчета);
    
    ЗаписьXML.ЗаписатьКонецЭлемента();
КонецЦикла;

Проблема версий драйверов и новые ставки НДС

Переход на ФФД 1.05 часто хронологически совпадал с изменением основной ставки НДС (переход с 18% на 20%). При использовании старых драйверов АТОЛ (семейства 8.х) разработчики часто сталкиваются со следующей проблемой: при попытке передать ставку НДС 20% напрямую из 1С драйвер возвращает ошибку парсинга запроса некорректное значение поля items(0).tax.type.

Выясним причину этой ошибки. Старые версии библиотек и обработки обслуживания используют устаревшую ревизию интерфейса драйверов 1С (например, ревизию 2001), в которой физически отсутствует тип налога со значением 20%. Чтобы решить эту проблему без полной замены драйвера на 10-ю версию, на кассах с обновленной прошивкой применяют следующий обходной путь:

Передавать в кассу код ставки 18%, а ККТ сама преобразует его на печати в 20%. Это работает только при условии, что на самой кассе установлена актуальная прошивка, поддерживающая автоматический пересчет ставок на основе текущего системного времени аппарата.

Тем не менее, лучшим и наиболее стабильным решением является постепенный уход от устаревших ДТО 8-й и 9-й серий и переход на современный драйвер АТОЛ ДТО 10.

Использование встроенного Веб-сервера АТОЛ (JSON API) как лучшая альтернатива COM-объектам

Если ваша конфигурация 1С сильно переписана, а перенос стандартных обработок обслуживания вызывает головную боль и конфликты со старыми модулями, обратите внимание на современный механизм взаимодействия с кассой — Веб-сервер АТОЛ, входящий в состав 10-й версии драйверов.

Эта технология позволяет полностью отказаться от использования нестабильных COM-объектов (таких как AddIn.Fptr10) и работы с портами на уровне клиента 1С. Касса подключается к локальному компьютеру или серверу, на котором запускается служба веб-сервера. После этого 1С может отправлять команды на печать чеков с помощью обычных HTTP-запросов, передавая тело чека в формате JSON.

Преимущества данного подхода очевидны:

Рассмотрим пример формирования JSON-задания на пробитие чека по формату ФФД 1.05 для отправки на Веб-сервер АТОЛ:


// Пример формирования JSON-структуры для веб-сервера АТОЛ 10
JSONЗапись = Новый ЗаписьJSON;
JSONЗапись.УстановитьСтроку();

ДанныеЧека = Новый Соответствие;
ДанныеЧека.Вставить("uuid", Строка(Новый УникальныйИдентификатор()));
ДанныеЧека.Вставить("request", Новый Соответствие);

Запрос = ДанныеЧека["request"];
Запрос.Вставить("type", "sell"); // Тип операции: продажа

// Заполняем данные оператора (кассира)
Кассир = Новый Соответствие;
Кассир.Вставить("name", "Иванов И.И.");
Кассир.Вставить("vatin", "123456789012"); // ИНН кассира (обязательно для ФФД 1.05)
Запрос.Вставить("operator", Кассир);

// Массив позиций чека
Позиции = Новый Массив;

СтрокаТовара = Новый Соответствие;
СтрокаТовара.Вставить("type", "position");
СтрокаТовара.Вставить("name", "Услуги по ремонту автомобиля");
СтрокаТовара.Вставить("price", 5000);
СтрокаТовара.Вставить("quantity", 1);
СтрокаТовара.Вставить("amount", 5000);
СтрокаТовара.Вставить("paymentMethod", "fullPrepayment"); // Способ расчета: Предоплата 100%
СтрокаТовара.Вставить("paymentObject", "service");         // Предмет расчета: Услуга

// Налоги
Налог = Новый Соответствие;
Налог.Вставить("type", "vat20"); // Ставка НДС 20%
СтрокаТовара.Вставить("tax", Налог);

Позиции.Добавить(СтрокаТовара);
Запрос.Вставить("items", Позиции);

// Оплаты
Оплаты = Новый Массив;
Оплата = Новый Соответствие;
Оплата.Вставить("type", "electronically"); // Безналичная оплата
Оплата.Вставить("sum", 5000);
Оплаты.Добавить(Оплата);
Запрос.Вставить("payments", Оплаты);

ЗаписатьJSON(JSONЗапись, ДанныеЧека);
СтрокаЗапроса = JSONЗапись.Закрыть();

// Теперь эту строку отправляем через HTTPСоединение на порт веб-сервера (по умолчанию 16732)

Этот способ позволяет реализовать поддержку любых новых требований законодательства (включая ФФД 1.2 и маркировку «Честный Знак») минимальными усилиями. Вам больше не придется обновлять сложные механизмы интеграции в самой 1С — достаточно будет лишь корректировать поля в формируемом JSON-тексте согласно официальной документации АТОЛ.

Резюме

Подводя итоги, сформулируем основные правила перехода на ФФД 1.05 в нетиповых конфигурациях:

  1. Прошивка кассы обязательна. Без обновления внутреннего ПО кассового аппарата до ФФД 1.05 вы не сможете легально работать.
  2. Базовые функции сохранятся без смены драйверов. Касса продолжит печатать чеки, но новые теги (ИНН кассира, признаки способа и предмета расчета) будут отправляться по умолчанию, что небезопасно с точки зрения налогового контроля.
  3. Необходима точечная доработка кода. Добавьте в XML-пакет или в параметры драйвера явную передачу признаков расчета, особенно если ваша компания использует авансовую систему или продает услуги.
  4. Рассмотрите переход на JSON API. Если кастомный код 1С слишком запутан, интеграция через встроенный веб-сервер ДТО 10 — это наиболее технологичный и перспективный путь развития вашей учетной системы.
← На главную