При организации розничных продаж через кассовое ПО Frontol 6 с выгрузкой из конфигурации 1С:Управление торговлей 11.5 пользователи нередко сталкиваются с ситуацией, когда маркированные товары разных категорий ведут себя по-разному. Например, продукция легкой промышленности выгружается корректно с кодом типа номенклатуры 11, а стройматериалы получают код 7 («Иная маркированная продукция») вместо положенного значения 40.
Разберем детально, с чем связано такое поведение системы, к каким последствиям на кассе оно приводит и какими способами можно устранить эту ошибку.
Формат обмена АТОЛ передает код типа номенклатуры в 55-й позиции команд выгрузки товаров (таких как $$$ADDQUANTITY и $$$REPLACEQUANTITY). В типовых конфигурациях 1С формирование этих данных возложено на механизмы Библиотеки подключаемого оборудования (БПО).
Выясним причину ошибки: в коде типовой БПО сопоставление видов маркированной продукции Честного Знака с числовыми кодами форматов обмена оффлайн-оборудования жестко ограничено старым перечнем товарных групп. Продукция, получившая маркировку позднее (с кодами 37 и выше), попросту отсутствует в алгоритмах сопоставления. В результате система присваивает им значение по умолчанию — код 7.
Посмотрим на актуальные коды товарных групп Честного Знака во Frontol 6:
Если оставить стройматериалы с типом 7, возникнут серьезные проблемы при продаже на кассе:
Прежде чем приступать к исправлению выгрузки на стороне 1С, обязательно проверим релиз кассовой программы Frontol 6. Поддержка типа номенклатуры 40 («Стройматериалы») в протоколе обмена АТОЛ была реализована начиная с версий Frontol 6.28.x.
Важно: если передать значение 40 в кассовое ПО более старого релиза, служба обмена завершит загрузку аварийно с ошибкой «Недопустимое значение поля», и товары вообще не попадут в кассовую базу. Поэтому первым шагом обновляем кассовые места до актуальных релизов.
Рассмотрим основной способ решения — корректировку логики заполнения данных для кассового файла АТОЛ. В конфигурации 1С за эту операцию отвечает общий модуль ОфлайнОборудованиеАтолККМВызовСервера и процедура ДополнитьФайл.
Чтобы не снимать конфигурацию с поддержки поставщика и не усложнять последующие типовые обновления, реализуем доработку через расширение конфигурации с директивой &ИзменениеИКонтроль.
Посмотрим на фрагмент кода, который необходимо дополнить:
&Вместо("ДополнитьФайл")
Процедура Расш1_ДополнитьФайл(ПараметрыПодключения, ДанныеВыгрузки, ПакетДляОтправки)
// ...
// В блоке условий определения КодТипаНоменклатуры:
ИначеЕсли Источник.ВидМаркированнойПродукции = ПредопределенноеЗначение("Перечисление.ВидыМаркированнойПродукцииБПО.ИгрыИИгрушкиДляДетей") Тогда
ДанныеДляЗаполнения.Вставить("КодТипаНоменклатуры", 36);
#Вставка
ИначеЕсли Источник.ВидМаркированнойПродукции = ПредопределенноеЗначение("Перечисление.ВидыМаркированнойПродукцииБПО.СтроительныеМатериалы") Тогда
ДанныеДляЗаполнения.Вставить("КодТипаНоменклатуры", 40);
#КонецВставки
// ...
КонецПроцедуры
Аналогичным образом в эту ветку условий можно добавить и другие отсутствующие товарные группы (косметику с кодом 37, безалкогольные напитки с кодом 38, кондитерские изделия с кодом 39 и мясопродукты с кодом 42).
Обратите внимание: если на предприятии используется базовая версия «1С:Управление торговлей», данный метод не подойдет, так как платформа блокирует выполнение программного кода в расширениях для базовых поставок.
Если конфигурацию 1С изменять нежелательно или используется базовая версия программы, настроим промежуточную обработку текстового файла обмена перед его считыванием кассой.
Разберем логику работы этого метода:
7 на 40.Такой подход позволяет полностью изолировать учетную систему 1С от модификаций и сохраняет ее типовую структуру.
Проанализируем варианты решения проблемы непосредственно на стороне кассового ПО:
40.Оптимальным и наиболее масштабируемым решением является доработка процедуры ДополнитьФайл модуля ОфлайнОборудованиеАтолККМВызовСервера через механизм расширений. Это исключает необходимость ручного вмешательства в кассовую базу и гарантирует корректную передачу данных в разрешительном режиме Честного Знака при любых объемах номенклатуры.