При работе с комиссионной торговлей в программе 1С:Управление торговлей 10.3 пользователи часто сталкиваются с ситуацией, когда при печати чека на ККТ АТОЛ отсутствуют реквизиты поставщика (ИНН и наименование), хотя в самой информационной базе все данные заполнены корректно. Рассмотрим подробно, почему это происходит и как настроить систему для правильного вывода данных согласно требованиям ФФД.
Для начала разберем цепочку передачи данных, которая реализована в типовых решениях на обычных формах. Когда мы нажимаем кнопку "Чек", происходят следующие этапы:
МенеджерОборудованияВызовСервера формирует структуру данных, которая затем преобразуется в XML-пакет.ATOLkkt.epf).AddIn.Atol_KKM_10), которая парсит XML и вызывает методы основного драйвера ККТ.Проблема чаще всего кроется на четвертом этапе. Интеграционная компонента, встроенная в макет обработки, может быть устаревшей. Если она "не знает" о существовании определенных тегов в XML (таких как данные поставщика), она просто игнорирует их при чтении пакета и не передает драйверу. В итоге в драйвер АТОЛ данные приходят уже "очищенными" от реквизитов поставщика.
Прежде чем обновлять драйверы, нам необходимо убедиться, что сама конфигурация 1С корректно формирует XML. Проанализируем код в общем модуле МенеджерОборудованияВызовСервера. В функции ПолучитьXMLПакетДляФискализацияЧека должны присутствовать вызовы процедур записи данных агента и поставщика:
// Пример фрагмента кода, отвечающего за запись данных в XML
ЗаписатьДанныеАгента(ЗаписьXML, ОбщиеПараметры.ДанныеАгента);
ЗаписатьДанныеПоставщика(ЗаписьXML, ОбщиеПараметры.ДанныеПоставщика);
Важно помнить, что согласно формату фискальных данных (ФФД), ИНН поставщика (тег 1228) и его наименование (тег 1227) должны передаваться для каждой товарной позиции отдельно, если чек содержит товары разных комитентов. Если ваша конфигурация передает эти данные только в "шапке" чека, ККТ может их проигнорировать при печати строк.
Это наиболее "бескровный" метод, не требующий глобального переписывания кода. Нам нужно заменить внутреннюю библиотеку в обработке ATOLkkt.epf на актуальную версию из комплекта поставки драйвера АТОЛ 10.
Выполним следующие шаги:
1Cv83. В ней обычно находится архив Atol_KKM_10.zip.ATOLkkt.epf в конфигураторе.ИнтеграционнаяКомпонента или Atol_KKM_10).Важный нюанс: 1С кэширует компоненты в папке пользователя AppData\Roaming\1C\1cv8\ExtCompT. После замены макета рекомендуется очистить эту папку, чтобы программа принудительно извлекла новую версию библиотеки.
Если обновление компоненты не помогло или вам требуется специфический функционал, который стандартный XML-пакет 1С не поддерживает, можно рассмотреть вариант прямого взаимодействия с драйвером (Native Api). Это подразумевает отказ от формирования XML в пользу прямого вызова методов драйвера.
Разберем пример логики подключения к драйверу напрямую:
// Пример инициализации объекта драйвера 10 версии
Драйвер = Новый ("AddIn.Fptr10");
Драйвер.УстановитьПараметры(); // Установка порта, скорости и т.д.
Драйвер.ОткрытьЧек(1, Истина); // Тип чека и признак фискальности
// Установка данных поставщика для позиции
Драйвер.УстановитьРеквизит(1227, "ООО Поставщик"); // Наименование поставщика
Драйвер.УстановитьРеквизит(1228, "7701234567"); // ИНН поставщика
Драйвер.РегистрацияПозиции();
Преимущество этого метода в том, что вы полностью контролируете передачу каждого тега. Вы можете передавать тег 1227 и тег 1228 непосредственно перед регистрацией каждой позиции товара. Трудоемкость такой переработки составляет от одного до нескольких рабочих дней, но это гарантирует стабильную работу с любыми версиями ФФД.
Проанализируем еще одну возможную причину: настройки самого кассового аппарата. Даже если 1С передает данные идеально, ККТ может их не печатать, если она не зарегистрирована как агент.
Проверим следующие пункты:
Современный драйвер АТОЛ 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), версию интеграционной компоненты в обработке и параметры регистрации ККТ. Только при совпадении всех условий ИНН поставщика появится на бумажном чеке.