Как выгрузить признак алкогольной продукции из 1С во Frontol?

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

При интеграции 1С с кассовым программным обеспечением Frontol через стандартный механизм обмена с ККМ Offline часто возникает ситуация: в конфигурации 1С номенклатура отмечена как алкогольная, таблица выгрузки содержит соответствующую колонку, но после загрузки на кассу флаг алкогольной продукции в карточке товара остается не установленным. Разберем, почему возникает эта ошибка и как корректно передать признак алкоголя в кассовую систему.

Выясним причину проблемы

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


Результат = ПолучитьСерверТО().ВыгрузитьТоварыККМ(ККМOffline, Товары, Не ФлажокОчистить);

Даже если переданная в метод таблица Товары содержит колонку АлкогольнаяПродукция со значением Истина, на кассу признак не попадает. Проанализируем цепочку передачи данных:

  1. Метод торгового оборудования передает таблицу значений во внешнюю обработку обслуживания (драйвер кассы Offline).
  2. Обработка обслуживания формирует текстовый файл загрузки в формате АТОЛ/Frontol или отправляет команды напрямую.
  3. Если обработка обслуживания устарела, алгоритм формирования строки товара просто игнорирует колонку с алкоголем и не включает её в результирующую команду.

В результате Frontol получает строку товара без алкогольных реквизитов и применяет к карточке значения по умолчанию (обычный товар).

Структура формата обмена Frontol и номер поля

Формат обмена Frontol представляет собой текстовые строки с разделителем «точка с запятой» (;). Каждая позиция в строке строго регламентирована документацией АТОЛ.

За признак алкогольной продукции во Frontol 4 (в поздних сборках) и Frontol 5/6 отвечает поле №55 (тип номенклатуры):

  1. 0 — обычный товар (не алкоголь);
  2. 1 — алкогольная продукция.

Важно учитывать, что для полноценной работы с ЕГАИС кассовое ПО Frontol обычно ожидает заполнения связанной группы алкогольных полей:

  1. Поле №53 — Код вида продукции ЕГАИС (например, 100);
  2. Поле №54 — Емкость тары в литрах (дробное число через точку, например, 0.5);
  3. Поле №55 — Признак алкогольной продукции (1 или 0);
  4. Поле №56 — Признак маркированной продукции (1 — маркированная, 0 — немаркированная, например, разливное пиво);
  5. Поле №57 — Крепость напитка в процентах (например, 40.0).

Кроме того, для алкогольной продукции во Frontol обязательно должен передаваться штрихкод (команда $$$ADDQUANTITY или $$$REPLACEQUANTITY), иначе касса заблокирует продажу алкоголя.

Способ 1. Доработка обработки обслуживания 1С

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

  1. Откроем используемую обработку обслуживания ККМ Offline (в конфигураторе или через справочник внешних обработок торгового оборудования).
  2. Найдем процедуру, формирующую текстовую выгрузку товаров (как правило, СформироватьТекстЗагрузки, ПодготовитьДанные или аналогичную).
  3. Найдем цикл обхода строк таблицы товаров, где формируется строка выгрузки команды $$$ADDWARES или $$$REPLACEWARES.
  4. Посмотрим на количество полей в формируемой строке. Если строка формируется короче 55 полей, необходимо дополнить её символами-разделителями (;) до 55-й позиции и вставить значение признака.

Рассмотрим пример программного формирования нужных полей в строке:


// Определяем признак алкоголя: 1 - да, 0 - нет
ПризнакАлкоголя = ?(СтрокаТовара.АлкогольнаяПродукция = Истина, "1", "0");

// Если текущая строка формируется конкатенацией полей:
// Допустим, последнее выгружаемое базовое поле имеет индекс 25.
// Нам необходимо дополнить строку пустыми полями с 26 по 52:
ПустыеПоля = ";;;;;;;;;;;;;;;;;;;;;;;;;;;"; // 27 разделителей

КодЕГАИС = ?(ЗначениеЗаполнено(СтрокаТовара.КодЕГАИС), Строка(СтрокаТовара.КодЕГАИС), "");
ЕмкостьТары = ?(СтрокаТовара.Объем > 0, Формат(СтрокаТовара.Объем, "ЧДЦ=3; ЧРД=.; ЧГ=0"), "");
ПризнакМарки = ?(СтрокаТовара.Маркированная = Истина, "1", "0");
Крепость = ?(СтрокаТовара.Крепость > 0, Формат(СтрокаТовара.Крепость, "ЧДЦ=2; ЧРД=.; ЧГ=0"), "");

// Формируем поля с 53 по 57
АлкогольныйБлок = КодЕГАИС + ";" + ЕмкостьТары + ";" + ПризнакАлкоголя + ";" + ПризнакМарки + ";" + Крепость + ";";

СтрокаВыгрузки = СтрокаВыгрузки + ПустыеПоля + АлкогольныйБлок;

Важное предупреждение: строго следите за числом разделителей «точка с запятой». Пропуск даже одного знака ; приведет к смещению всей структуры, и Frontol выдаст ошибку формата строки («Неверный формат загрузки данных») либо запишет некорректные значения в другие поля карточки.

Способ 2. Обновление внешней обработки обслуживания

Если нет желания вручную модифицировать код формирования текстового файла, рекомендуется обновить саму обработку обслуживания:

  1. Возьмите внешнюю обработку АТОЛ/Frontol из актуального релиза конфигурации (или из каталога технологической поддержки современных версий 1С).
  2. В актуальных обработках интеграция с ЕГАИС уже реализована: при наличии в таблице колонок АлкогольнаяПродукция, Объем, Крепость обработка автоматически выгружает поля с 53 по 57.
  3. Замените файл обработки в справочнике ТорговоеОборудование и выполните повторную полную выгрузку товаров.

Способ 3. Групповое изменение во Frontol Администраторе

Если ассортимент алкоголя стабилен и меняется редко, можно не вносить изменения в код 1С:

  1. Откройте на кассовом рабочем месте утилиту Frontol Администратор.
  2. Перейдите в справочник товаров и выделите группу с алкогольной продукцией.
  3. Используйте функцию группового изменения свойств товаров, установив флаг Алкогольная продукция.
  4. В настройках обмена 1С переключите режим выгрузки на обновление цен и остатков без перезаписи основных свойств товара, чтобы при последующих обменах установленные на кассе признаки не сбрасывались.
← На главную