Почему маркированные стройматериалы выгружаются из 1С:УТ 11.5 во Frontol 6 с неверным типом номенклатуры и как это исправить?

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

При организации розничных продаж через кассовое ПО Frontol 6 с выгрузкой из конфигурации 1С:Управление торговлей 11.5 пользователи нередко сталкиваются с ситуацией, когда маркированные товары разных категорий ведут себя по-разному. Например, продукция легкой промышленности выгружается корректно с кодом типа номенклатуры 11, а стройматериалы получают код 7 («Иная маркированная продукция») вместо положенного значения 40.

Разберем детально, с чем связано такое поведение системы, к каким последствиям на кассе оно приводит и какими способами можно устранить эту ошибку.

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

Формат обмена АТОЛ передает код типа номенклатуры в 55-й позиции команд выгрузки товаров (таких как $$$ADDQUANTITY и $$$REPLACEQUANTITY). В типовых конфигурациях 1С формирование этих данных возложено на механизмы Библиотеки подключаемого оборудования (БПО).

Выясним причину ошибки: в коде типовой БПО сопоставление видов маркированной продукции Честного Знака с числовыми кодами форматов обмена оффлайн-оборудования жестко ограничено старым перечнем товарных групп. Продукция, получившая маркировку позднее (с кодами 37 и выше), попросту отсутствует в алгоритмах сопоставления. В результате система присваивает им значение по умолчанию — код 7.

Посмотрим на актуальные коды товарных групп Честного Знака во Frontol 6:

  1. 37 — косметика, бытовая химия и товары личной гигиены;
  2. 38 — растворимые напитки;
  3. 39 — кондитерские изделия и сладости;
  4. 40 — строительные материалы;
  5. 42 — мясные изделия.

Если оставить стройматериалы с типом 7, возникнут серьезные проблемы при продаже на кассе:

  1. Frontol сверяет структуру считанного Data Matrix со справочником кассы. При несоответствии типа система заблокирует добавление позиции в чек с ошибкой валидации марки.
  2. При работе разрешительного режима (онлайн-проверки через Честный Знак / True API / ТС ПИоТ) запрос отправляется с некорректной категорией, что приводит к автоматическому отказу сервера валидации и невозможности пробить товар покупателю.

Проверка версии Frontol 6 перед внесением изменений

Прежде чем приступать к исправлению выгрузки на стороне 1С, обязательно проверим релиз кассовой программы Frontol 6. Поддержка типа номенклатуры 40 («Стройматериалы») в протоколе обмена АТОЛ была реализована начиная с версий Frontol 6.28.x.

Важно: если передать значение 40 в кассовое ПО более старого релиза, служба обмена завершит загрузку аварийно с ошибкой «Недопустимое значение поля», и товары вообще не попадут в кассовую базу. Поэтому первым шагом обновляем кассовые места до актуальных релизов.

Способ 1. Доработка процедуры выгрузки в 1С через расширение конфигурации

Рассмотрим основной способ решения — корректировку логики заполнения данных для кассового файла АТОЛ. В конфигурации 1С за эту операцию отвечает общий модуль ОфлайнОборудованиеАтолККМВызовСервера и процедура ДополнитьФайл.

Чтобы не снимать конфигурацию с поддержки поставщика и не усложнять последующие типовые обновления, реализуем доработку через расширение конфигурации с директивой &ИзменениеИКонтроль.

Посмотрим на фрагмент кода, который необходимо дополнить:


&Вместо("ДополнитьФайл")
Процедура Расш1_ДополнитьФайл(ПараметрыПодключения, ДанныеВыгрузки, ПакетДляОтправки)
    // ...
    // В блоке условий определения КодТипаНоменклатуры:
    ИначеЕсли Источник.ВидМаркированнойПродукции = ПредопределенноеЗначение("Перечисление.ВидыМаркированнойПродукцииБПО.ИгрыИИгрушкиДляДетей") Тогда
        ДанныеДляЗаполнения.Вставить("КодТипаНоменклатуры", 36);
    #Вставка
    ИначеЕсли Источник.ВидМаркированнойПродукции = ПредопределенноеЗначение("Перечисление.ВидыМаркированнойПродукцииБПО.СтроительныеМатериалы") Тогда
        ДанныеДляЗаполнения.Вставить("КодТипаНоменклатуры", 40);
    #КонецВставки
    // ...
КонецПроцедуры

Аналогичным образом в эту ветку условий можно добавить и другие отсутствующие товарные группы (косметику с кодом 37, безалкогольные напитки с кодом 38, кондитерские изделия с кодом 39 и мясопродукты с кодом 42).

Обратите внимание: если на предприятии используется базовая версия «1С:Управление торговлей», данный метод не подойдет, так как платформа блокирует выполнение программного кода в расширениях для базовых поставок.

Способ 2. Автоматическая постобработка файла выгрузки скриптом

Если конфигурацию 1С изменять нежелательно или используется базовая версия программы, настроим промежуточную обработку текстового файла обмена перед его считыванием кассой.

Разберем логику работы этого метода:

  1. 1С выгружает стандартный файл обмена в промежуточный каталог.
  2. Скрипт перехвата (например, на PowerShell) построчно считывает файл, находит строки добавления позиций номенклатуры стройматериалов и заменяет значение в 55-м поле с 7 на 40.
  3. Сформированный скорректированный файл перемещается в рабочий каталог обмена Frontol, откуда загружается кассовой службой.

Такой подход позволяет полностью изолировать учетную систему 1С от модификаций и сохраняет ее типовую структуру.

Способ 3. Корректировка типов номенклатуры средствами Frontol

Проанализируем варианты решения проблемы непосредственно на стороне кассового ПО:

  1. Использование SQL-триггера в БД Frontol: в базе данных Frontol (Firebird/SQLite) создается триггер на таблицу товаров. При вставке или обновлении записи триггер анализирует группу или префикс артикула и автоматически подменяет тип маркированной продукции на 40.
  2. Настройка правил загрузки в Frontol Администраторе: если номенклатура стройматериалов относительно стабильна, можно разово изменить тип номенклатуры непосредственно в интерфейсе Frontol Администратора, а в схеме обмена отключить перезапись реквизита типа номенклатуры при регулярном обновлении цен и остатков (команда обновления без затирания основных реквизитов).

Итоги

Оптимальным и наиболее масштабируемым решением является доработка процедуры ДополнитьФайл модуля ОфлайнОборудованиеАтолККМВызовСервера через механизм расширений. Это исключает необходимость ручного вмешательства в кассовую базу и гарантирует корректную передачу данных в разрешительном режиме Честного Знака при любых объемах номенклатуры.

← На главную