Как синхронизировать код номенклатуры, SKU и PLU в 1С:Розница для работы в РМК

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

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

Почему различаются код номенклатуры, SKU и PLU

Для понимания логики работы торгового оборудования и интерфейса кассира выясним назначение каждого реквизита в системе:

  1. Код номенклатуры — строковый идентификатор справочника Номенклатура (обычно типа Строка(11)). Он содержит префиксы узлов информационной базы и лидирующие нули, обеспечивая уникальность записей внутри базы данных 1С.
  2. Код SKU — числовой идентификатор, хранящийся в регистре сведений КодыТоваровSKU. SKU генерируется для конкретной комбинации «Номенклатура + Характеристика + Упаковка» в разрезе правил обмена с подключаемым оборудованием.
  3. PLU (Price Look-Up) — номер ячейки памяти весов или автономной кассы, фиксируемый в регистре сведений КодыТоваровPLUНаОборудовании.

Основная сложность заключается в том, что в весовом штрихкоде формата EAN-13 под код товара отводится ограниченное количество разрядов (обычно 4 или 5 цифр формата 2X KKKKK WWWWW C, где K — код позиции, W — вес, а C — контрольная цифра). Если строковый код номенклатуры содержит префикс или превышает 5 знаков, напрямую закодировать его в весовой штрихкод невозможно.

Способ 1. Перенумерация справочника и генерация SKU на основе кода

Рассмотрим вариант, при котором числовой код SKU формируется на основании числовой части строкового кода номенклатуры. Например, для кода 00000000111 формируется SKU со значением 111.

Разберем по шагам реализацию этого механизма через программную обработку или расширение конфигурации:

  1. Выполняем перенумерацию справочника Номенклатура, убирая строковые буквенные префиксы, чтобы коды представляли собой числовую последовательность с лидирующими нулями.
  2. Очищаем существующие записи в регистре сведений КодыТоваровSKU по выбранному правилу обмена.
  3. Заполняем регистр новыми записями, преобразуя строковый код элемента в число без лидирующих нулей.

Посмотрим на пример программного кода для автоматического заполнения записей регистра:


НаборЗаписей = РегистрыСведений.КодыТоваровSKU.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.ПравилоОбмена.Установить(ВыбранноеПравило);

Выборка = Справочники.Номенклатура.Выбрать();
Пока Выборка.Следующий() Цикл
    Если Выборка.ЭтоГруппа Тогда
        Продолжить;
    КонецЕсли;
    
    // Преобразуем строковый код номенклатуры в число
    ЧисловойКод = Число(СтрЗаменить(Выборка.Код, " ", ""));
    Если ЧисловойКод > 0 И ЧисловойКод <= 99999 Тогда
        МенеджерЗаписи = РегистрыСведений.КодыТоваровSKU.СоздатьМенеджерЗаписи();
        МенеджерЗаписи.ПравилоОбмена = ВыбранноеПравило;
        МенеджерЗаписи.Номенклатура = Выборка.Ссылка;
        МенеджерЗаписи.Характеристика = Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка();
        МенеджерЗаписи.Упаковка = Справочники.УпаковкиЕдиницыИзмерения.ПустаяСсылка();
        МенеджерЗаписи.SKU = ЧисловойКод;
        МенеджерЗаписи.Записать(Истина);
    КонецЕсли;
КонецЦикла;

Особенности работы в распределенных информационных базах (РИБ)

Проанализируем риски принудительной перенумерации в распределенных системах. В узлах РИБ платформа 1С автоматически назначает префикс информационной базы (например, У1-00000045), предотвращая дублирование номеров при синхронизации.

Если удалить префиксы узлов для уравнивания кодов со SKU, при следующем обмене возникнет коллизия уникальности кодов, что нарушит целостность базы. Кроме того, при массовом изменении номеров весь справочник Номенклатура регистрируется к выгрузке, вызывая лавинообразный рост объема файлов обмена.

В базах с РИБ правильным подходом является ведение номенклатуры и генерация SKU строго в главном (центральном) узле с последующей передачей готовых связок в периферийные базы.

Способ 2. Доработка поиска и отображения в РМК без изменения нумерации

Если изменять структуру кодов справочника нежелательно (особенно в работающей сети с РИБ), наиболее безопасным решением является доработка формы рабочего места кассира через расширение.

Разберем по шагам, как настроить комфортную работу кассира:

  1. Добавляем в динамический список подбора товаров в РМК вычисляемое поле или колонку SKU, связывая данные с регистром сведений КодыТоваровSKU.
  2. В обработчике ввода строки поиска РМК переопределяем логику: если в поле ввода введено короткое число, алгоритм сначала ищет позицию по регистру КодыТоваровSKU, а затем по стандартным полям (штрихкод, артикул, наименование).
  3. Настраиваем шаблоны весовых штрихкодов в разделе администрирования оборудования. Убеждаемся, что в шаблоне для весового кода указан тип данных Код SKU, а префикс весового товара совпадает с настройками в весах с печатью этикеток.

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

← На главную