Почему не распознается весовой товар в отчете о розничных продажах при загрузке из Frontol?

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

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

Разберем детально, как устроен механизм сопоставления весовых позиций в 1С, выясним причину сбоя и рассмотрим способы устранения неполадки.

Как работает сопоставление весового товара в 1С

Проанализируем алгоритм, который типовая конфигурация использует для распознавания весовых штрихкодов формата EAN-13 (например, 22ККККК0000000, где 22 — префикс, а ККККК — код номенклатуры). При чтении строк из файла отчета кассовой программы система выполняет запрос к регистрам сведений ШтрихкодыНоменклатуры и КодыТоваровПодключаемогоОборудованияOffline.

Посмотрим на пример типового запроса, выполняющего выборку номенклатуры:


ВЫБРАТЬ
    ЕСТЬNULL(КодыТоваровПодключаемогоОборудованияOffline.Номенклатура, ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)) КАК Номенклатура,
    ЕСТЬNULL(КодыТоваровПодключаемогоОборудованияOffline.Характеристика, ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)) КАК Характеристика,
    ЕСТЬNULL(КодыТоваровПодключаемогоОборудованияOffline.Упаковка, ЗНАЧЕНИЕ(Справочник.УпаковкиНоменклатуры.ПустаяСсылка)) КАК Упаковка,
    Товары.Количество КАК КоличествоУпаковок,
    ЕСТЬNULL(КодыТоваровПодключаемогоОборудованияOffline.Упаковка.Коэффициент, 1) * Товары.Количество КАК Количество,
    Товары.Цена КАК Цена,
    Товары.Сумма КАК Сумма,
    Товары.Скидка КАК ПроцентРучнойСкидки,
    КодыТоваровПодключаемогоОборудованияOffline.Номенклатура.СтавкаНДС
ИЗ
    Товары КАК Товары
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ШтрихкодыНоменклатуры КАК Штрихкоды
        ПО ПОДСТРОКА(Товары.Штрихкод, 3, 5) = ПОДСТРОКА(Штрихкоды.Штрихкод, 3, 5)
        И Штрихкоды.Штрихкод ПОДОБНО &ФорматШтрихкода
        И Товары.Весовой
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КодыТоваровПодключаемогоОборудованияOffline КАК КодыТоваровПодключаемогоОборудованияOffline
        ПО КодыТоваровПодключаемогоОборудованияOffline.ПравилоОбмена = &ПравилоОбмена
        И Штрихкоды.Номенклатура = КодыТоваровПодключаемогоОборудованияOffline.Номенклатура
        И Штрихкоды.Характеристика = КодыТоваровПодключаемогоОборудованияOffline.Характеристика
        И Штрихкоды.Упаковка = КодыТоваровПодключаемогоОборудованияOffline.Упаковка
        И Товары.Весовой

В этом запросе выполняется последовательное левое соединение:

  1. По пяти символам кода товара, начиная с 3-й позиции штрихкода.
  2. По маске формата весового штрихкода (&ФорматШтрихкода).
  3. По правилу обмена и ссылочным данным из регистра КодыТоваровПодключаемогоОборудованияOffline.

Причины возникновения проблемы

Рассмотрим основные факторы, из-за которых связь по таблицам не срабатывает:

  1. Несоответствие маски в параметре «ФорматШтрихкода». В регистре ШтрихкодыНоменклатуры шаблон весового кода часто записывается со служебными символами-заполнителями (например, 2_005430000_), тогда как функция генерации маски по умолчанию формирует жесткий паттерн регулярного выражения 2[0-9][0-9][0-9][0-9][0-9][0-9]00000[0-9]. В результате условие Штрихкоды.Штрихкод ПОДОБНО &ФорматШтрихкода возвращает ЛОЖЬ, и номенклатура не определяется.
  2. Рассинхронизация правил обмена. Если для весов «Штрих-Принт» и рабочего места Frontol в 1С созданы разные правила обмена подключаемого оборудования, регистр КодыТоваровПодключаемогоОборудованияOffline содержит разные коды SKU/PLU для одной и той же номенклатуры. При загрузке отчета кассы сопоставление по ее правилу завершается неудачей.
  3. Особенности передачи транзакций во Frontol. Если во Frontol включена внутренняя обработка весовых ШК без сохранения исходного отсканированного кода, в файл транзакций может выгружаться внутренний кассовый код вместо полного штрихкода EAN-13.

Способы решения проблемы

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

Способ 1. Программная корректировка формирования маски штрихкода

Если в кодовой базе конфигурации проверка маски штрихкода блокирует выборку данных из регистра, найдем в модуле менеджера оборудования вызов формирования параметра маски и скорректируем передаваемый флаг:


// Заменяем строгий формат маски на упрощенный вариант поиска
Запрос.УстановитьПараметр(
    "ФорматШтрихкода",
    РегистрыСведений.ШтрихкодыНоменклатуры.ФорматВесовогоШтрихкода("_", Ложь)
);

Установка значения Ложь отключает избыточную фильтрацию шаблона и позволяет соединению таблиц корректно связать пятизначный код весового товара.

Способ 2. Проверка и синхронизация правил обмена offline-оборудования

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

  1. Перейдем в раздел Администрирование — Подключаемое оборудование — Правила обмена с подключаемым оборудованием.
  2. Убедимся, что для весов с печатью этикеток и для ККМ Frontol назначено одно и то же правило обмена.
  3. В обработке Обмен с подключаемым оборудованием Offline выполним команду полной очистки кодов и произведем повторную выгрузку базы товаров в кассу и весы. Это гарантирует совпадение PLU и внутренних идентификаторов в регистре КодыТоваровПодключаемогоОборудованияOffline.

Способ 3. Проверка шаблонов во Frontol и формате этикеток весов

Проанализируем структуру штрихкода во всех звеньях цепочки:

  1. В весах «Штрих-Принт» настраиваем структуру весового штрихкода: префикс 2 знака (например, 22), код товара 5 знаков, масса 5 знаков.
  2. В настройках Frontol в разделе Шаблоны ШК проверяем маску для весового товара вида 22NNNNNWWWWWE.
  3. В настройках обмена Frontol проверяем, чтобы в файл отчета о продажах выгружался полный считанный штрихкод регистрации, а не только локальный код позиции.
← На главную