Как реализовать новые реквизиты чека по 54-ФЗ в 1С 7.7 при работе с ККТ Атол?

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

С развитием законодательства в области применения контрольно-кассовой техники (54-ФЗ), пользователи платформы 1С:Предприятие 7.7 столкнулись с серьезным вызовом. Последние изменения требуют передачи в чек дополнительных реквизитов, таких как наименование покупателя (тег 1227), ИНН покупателя (тег 1228), страна происхождения товара и регистрационный номер таможенной декларации (ГТД). Стандартные обработки обслуживания и старые драйверы зачастую не поддерживают этот функционал. В данной статье мы подробно разберем, как модернизировать систему под новые требования.

Анализ проблемы и выбор инструментария

Проанализируем текущую ситуацию. Большинство внедрений на "семерке" исторически использовали драйвер Атол версии 8.х. Однако этот драйвер считается устаревшим и не поддерживает полноценную работу с новыми форматами фискальных данных (ФФД 1.05 и 1.2), а также передачу специфических тегов для B2B-расчетов. Основная рекомендация экспертов и разработчиков — переход на драйвер Атол 10-й версии (DTO 10).

Важно отметить, что драйвер 10-й версии прекрасно работает в среде 1С 7.7 через механизм COM. Он поддерживает современные операционные системы (от Windows XP до Windows 11) и позволяет гибко управлять всеми параметрами чека. Рассмотрим подробнее, как организовать это взаимодействие.

Подключение драйвера Атол 10 в 1С 7.7

Первым шагом нам необходимо инициализировать объект драйвера. В отличие от 8-й версии, где использовалась компонента FprnM1C.dll, в 10-й версии мы создаем объект AddIn.Fptr10. Разберем пример кода для инициализации:


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

После создания объекта необходимо установить параметры связи с кассой (порт, скорость, модель) и вызвать метод open(). Обратите внимание, что в 10-м драйвере параметры передаются не через свойства объекта, а через специализированные методы setParam.

Реализация передачи новых реквизитов покупателя

Выясним, как передать данные контрагента при расчетах между юридическими лицами. Согласно 54-ФЗ, это обязательное требование с 2019 года. Нам понадобятся теги 1227 и 1228. В архитектуре DTO 10 это реализуется следующим образом:

  1. Перед открытием чека или перед регистрацией позиций мы устанавливаем параметры покупателя.
  2. Используем метод setParam с соответствующим номером тега.
  3. Вызываем метод utilFormTlv или напрямую передаем параметры в структуру регистрации.

Посмотрим на пример формирования данных покупателя в коде 1С 7.7:


// Установка наименования покупателя (Тег 1227)
ОбъектДрайвера.setParam(1227, "ООО 'Ромашка'");
// Установка ИНН покупателя (Тег 1228)
ОбъектДрайвера.setParam(1228, "770123456789");
// Применение параметров покупателя
ОбъектДрайвера.utilFormTlv(); 

Передача признака предмета расчета (Тег 1212)

Проанализируем ситуацию с типами товаров и услуг. Теперь недостаточно просто указать наименование и цену. Нужно четко определить, что мы продаем: товар, подакцизный товар, услугу или аванс. Для этого используется тег 1212. Рассмотрим основные значения:

При регистрации позиции чека (метод registration) необходимо добавить этот параметр. Если этого не сделать, касса может подставить значение по умолчанию, что приведет к ошибкам в налоговой отчетности.

Технические нюансы работы в 1С 7.7

Работа с современными драйверами в устаревшей платформе имеет свои "подводные камни". Рассмотрим наиболее важные из них:

1. Типы данных: 1С 7.7 не всегда корректно передает числовые значения с плавающей точкой (Double) в COM-объекты. Иногда драйвер может округлить копейки некорректно. Чтобы избежать этого, рекомендуется передавать количество и цену, предварительно приведя их к строке или используя методы явного преобразования типа, предусмотренные в API Атола.

2. Работа с датами: Формат даты в 1С 7.7 отличается от того, что ожидает драйвер. При необходимости передачи даты (например, в чеках коррекции) следует формировать строку в формате ГГГГ.ММ.ДД или использовать VBScript в качестве прокладки для преобразования типов.

3. Передача сложных структур (ByteArray): Для работы с маркировкой товаров (тег 1162) требуется передача байтовых массивов. Поскольку "семерка" не поддерживает этот тип данных напрямую, используйте метод setParamStrHex(). Вы передаете строку, представляющую шестнадцатеричный код маркировки, а драйвер сам преобразует её в нужный формат для кассового аппарата.

Пример формирования позиции чека с расширенными реквизитами

Соберем все знания воедино и проанализируем полный цикл регистрации одной товарной позиции в чеке:


// Задаем параметры позиции
ОбъектДрайвера.setParam(ОбъектДрайвера.LIBFPTR_PARAM_COMMODITY_NAME, "Товар импортный");
ОбъектДрайвера.setParam(ОбъектДрайвера.LIBFPTR_PARAM_PRICE, 100.50);
ОбъектДрайвера.setParam(ОбъектДрайвера.LIBFPTR_PARAM_QUANTITY, 1);
ОбъектДрайвера.setParam(ОбъектДрайвера.LIBFPTR_PARAM_TAX_TYPE, ОбъектДрайвера.LIBFPTR_TAX_VAT20);

// Передаем Тег 1212 (Признак предмета расчета - Товар)
ОбъектДрайвера.setParam(1212, 1);

// Если товар импортный, передаем Страну (1230) и ГТД (1231)
ОбъектДрайвера.setParam(1230, "643"); // Код страны (Россия для примера)
ОбъектДрайвера.setParam(1231, "10101010/121212/0001234");

// Регистрация позиции
ОбъектДрайвера.registration();

Заключение и рекомендации по прошивке

Важно помнить, что программная часть в 1С — это только половина дела. Чтобы ККТ Атол корректно восприняла новые теги (особенно 1227 и 1228), аппарат должен работать на Платформе 5.0 (прошивка версии 5.х). На старых прошивках 2.5 даже при использовании 10-го драйвера некоторые реквизиты могут просто игнорироваться кассой.

Подведем итог: переход на DTO 10 в 1С 7.7 является единственным надежным способом обеспечить соответствие актуальным требованиям законодательства. Несмотря на то, что это требует переписывания модуля печати чеков, гибкость 10-го драйвера позволяет реализовать любые задачи — от простой розничной продажи до сложных B2B-расчетов и работы с маркировкой Честный ЗНАК.

← На главную