Как реализовать вывод данных поставщика (ИНН и наименование) в чеке ККТ для 1С:Управление торговлей 10.3

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

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

Анализ архитектуры взаимодействия 1С и ККТ

Для начала разберем цепочку передачи данных, которая реализована в типовых решениях на обычных формах. Когда мы нажимаем кнопку "Чек", происходят следующие этапы:

  1. Программа собирает данные из документа (например, "Реализация товаров и услуг" или "Чек ККМ").
  2. Общий модуль МенеджерОборудованияВызовСервера формирует структуру данных, которая затем преобразуется в XML-пакет.
  3. Этот XML-пакет передается во внешнюю обработку обслуживания (например, ATOLkkt.epf).
  4. Обработка использует интеграционную компоненту (библиотеку-прослойку, обычно это AddIn.Atol_KKM_10), которая парсит XML и вызывает методы основного драйвера ККТ.
  5. Драйвер отправляет команды непосредственно в фискальный накопитель и на печать.

Проблема чаще всего кроется на четвертом этапе. Интеграционная компонента, встроенная в макет обработки, может быть устаревшей. Если она "не знает" о существовании определенных тегов в XML (таких как данные поставщика), она просто игнорирует их при чтении пакета и не передает драйверу. В итоге в драйвер АТОЛ данные приходят уже "очищенными" от реквизитов поставщика.

Проверка формирования XML-пакета

Прежде чем обновлять драйверы, нам необходимо убедиться, что сама конфигурация 1С корректно формирует XML. Проанализируем код в общем модуле МенеджерОборудованияВызовСервера. В функции ПолучитьXMLПакетДляФискализацияЧека должны присутствовать вызовы процедур записи данных агента и поставщика:


// Пример фрагмента кода, отвечающего за запись данных в XML
ЗаписатьДанныеАгента(ЗаписьXML, ОбщиеПараметры.ДанныеАгента);
ЗаписатьДанныеПоставщика(ЗаписьXML, ОбщиеПараметры.ДанныеПоставщика);

Важно помнить, что согласно формату фискальных данных (ФФД), ИНН поставщика (тег 1228) и его наименование (тег 1227) должны передаваться для каждой товарной позиции отдельно, если чек содержит товары разных комитентов. Если ваша конфигурация передает эти данные только в "шапке" чека, ККТ может их проигнорировать при печати строк.

Способ 1: Обновление интеграционной компоненты в обработке

Это наиболее "бескровный" метод, не требующий глобального переписывания кода. Нам нужно заменить внутреннюю библиотеку в обработке ATOLkkt.epf на актуальную версию из комплекта поставки драйвера АТОЛ 10.

Выполним следующие шаги:

  1. Скачаем и установим последнюю версию драйвера ККТ АТОЛ (например, версию 10.8 или 10.10).
  2. В папке установленного драйвера найдем подпапку 1Cv83. В ней обычно находится архив Atol_KKM_10.zip.
  3. Откроем обработку ATOLkkt.epf в конфигураторе.
  4. Найдем макет, содержащий компоненту (обычно он называется так же — ИнтеграционнаяКомпонента или Atol_KKM_10).
  5. Заменим содержимое макета файлом из архива.
  6. Сохраним обработку и обновим ее в справочнике "Внешние обработки" или "Драйверы оборудования" в самой программе.

Важный нюанс: 1С кэширует компоненты в папке пользователя AppData\Roaming\1C\1cv8\ExtCompT. После замены макета рекомендуется очистить эту папку, чтобы программа принудительно извлекла новую версию библиотеки.

Способ 2: Использование нативного драйвера АТОЛ 10

Если обновление компоненты не помогло или вам требуется специфический функционал, который стандартный XML-пакет 1С не поддерживает, можно рассмотреть вариант прямого взаимодействия с драйвером (Native Api). Это подразумевает отказ от формирования XML в пользу прямого вызова методов драйвера.

Разберем пример логики подключения к драйверу напрямую:


// Пример инициализации объекта драйвера 10 версии
Драйвер = Новый ("AddIn.Fptr10");
Драйвер.УстановитьПараметры(); // Установка порта, скорости и т.д.
Драйвер.ОткрытьЧек(1, Истина); // Тип чека и признак фискальности

// Установка данных поставщика для позиции
Драйвер.УстановитьРеквизит(1227, "ООО Поставщик"); // Наименование поставщика
Драйвер.УстановитьРеквизит(1228, "7701234567");    // ИНН поставщика
Драйвер.РегистрацияПозиции();

Преимущество этого метода в том, что вы полностью контролируете передачу каждого тега. Вы можете передавать тег 1227 и тег 1228 непосредственно перед регистрацией каждой позиции товара. Трудоемкость такой переработки составляет от одного до нескольких рабочих дней, но это гарантирует стабильную работу с любыми версиями ФФД.

Настройка ККТ и проверка признака агента

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

Проверим следующие пункты:

Использование JSON для передачи данных

Современный драйвер АТОЛ 10 поддерживает работу через формат JSON. Это альтернатива XML-пакетам 1С. Вы можете сформировать задание для ККТ в виде текстовой строки JSON и передать его одним методом ProcessJson. Этот способ лишен проблем с "потерянными тегами", так как драйвер интерпретирует JSON-структуру напрямую.

Рассмотрим структуру фрагмента JSON для позиции с поставщиком:


{
    "type": "position",
    "name": "Товар комиссионный",
    "price": 100.0,
    "quantity": 1,
    "amount": 100.0,
    "tax": {
        "type": "none"
    },
    "agentInfo": {
        "agents": ["commissioner"]
    },
    "supplierInfo": {
        "name": "ООО Снабженец",
        "inn": "7700123456",
        "phones": ["+79991234567"]
    }
}

Выясним, поддерживает ли ваша версия обработки такой метод. Если вы используете интеграцию через ATOLkkt.epf последних релизов, попробуйте обновить компоненту до версии, поддерживающей ФФД 1.2, так как именно в ней работа с агентскими реквизитами доведена до автоматизма.

В заключение отметим, что для успешного решения задачи необходимо синхронизировать три элемента: код конфигурации (формирование XML), версию интеграционной компоненты в обработке и параметры регистрации ККТ. Только при совпадении всех условий ИНН поставщика появится на бумажном чеке.

← На главную