При оформлении продаж в рабочем месте кассира (РМК) конфигурации 1С:Розница пользователи часто сталкиваются с ситуацией, когда код из карточки номенклатуры не совпадает с кодом, напечатанным на весовой этикетке, или с кодом быстрой клавиши на весах. Попытка ввести код с этикетки в строку поиска РМК приводит к ошибке или подбору другой позиции. Разберем архитектурные причины этого различия и рассмотрим практические способы настройки системы для правильного соответствия идентификаторов.
Для понимания логики работы торгового оборудования и интерфейса кассира выясним назначение каждого реквизита в системе:
Номенклатура (обычно типа Строка(11)). Он содержит префиксы узлов информационной базы и лидирующие нули, обеспечивая уникальность записей внутри базы данных 1С.КодыТоваровSKU. SKU генерируется для конкретной комбинации «Номенклатура + Характеристика + Упаковка» в разрезе правил обмена с подключаемым оборудованием.КодыТоваровPLUНаОборудовании.Основная сложность заключается в том, что в весовом штрихкоде формата EAN-13 под код товара отводится ограниченное количество разрядов (обычно 4 или 5 цифр формата 2X KKKKK WWWWW C, где K — код позиции, W — вес, а C — контрольная цифра). Если строковый код номенклатуры содержит префикс или превышает 5 знаков, напрямую закодировать его в весовой штрихкод невозможно.
Рассмотрим вариант, при котором числовой код SKU формируется на основании числовой части строкового кода номенклатуры. Например, для кода 00000000111 формируется SKU со значением 111.
Разберем по шагам реализацию этого механизма через программную обработку или расширение конфигурации:
Номенклатура, убирая строковые буквенные префиксы, чтобы коды представляли собой числовую последовательность с лидирующими нулями.КодыТоваровSKU по выбранному правилу обмена.Посмотрим на пример программного кода для автоматического заполнения записей регистра:
НаборЗаписей = РегистрыСведений.КодыТоваровSKU.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.ПравилоОбмена.Установить(ВыбранноеПравило);
Выборка = Справочники.Номенклатура.Выбрать();
Пока Выборка.Следующий() Цикл
Если Выборка.ЭтоГруппа Тогда
Продолжить;
КонецЕсли;
// Преобразуем строковый код номенклатуры в число
ЧисловойКод = Число(СтрЗаменить(Выборка.Код, " ", ""));
Если ЧисловойКод > 0 И ЧисловойКод <= 99999 Тогда
МенеджерЗаписи = РегистрыСведений.КодыТоваровSKU.СоздатьМенеджерЗаписи();
МенеджерЗаписи.ПравилоОбмена = ВыбранноеПравило;
МенеджерЗаписи.Номенклатура = Выборка.Ссылка;
МенеджерЗаписи.Характеристика = Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка();
МенеджерЗаписи.Упаковка = Справочники.УпаковкиЕдиницыИзмерения.ПустаяСсылка();
МенеджерЗаписи.SKU = ЧисловойКод;
МенеджерЗаписи.Записать(Истина);
КонецЕсли;
КонецЦикла;
Проанализируем риски принудительной перенумерации в распределенных системах. В узлах РИБ платформа 1С автоматически назначает префикс информационной базы (например, У1-00000045), предотвращая дублирование номеров при синхронизации.
Если удалить префиксы узлов для уравнивания кодов со SKU, при следующем обмене возникнет коллизия уникальности кодов, что нарушит целостность базы. Кроме того, при массовом изменении номеров весь справочник Номенклатура регистрируется к выгрузке, вызывая лавинообразный рост объема файлов обмена.
В базах с РИБ правильным подходом является ведение номенклатуры и генерация SKU строго в главном (центральном) узле с последующей передачей готовых связок в периферийные базы.
Если изменять структуру кодов справочника нежелательно (особенно в работающей сети с РИБ), наиболее безопасным решением является доработка формы рабочего места кассира через расширение.
Разберем по шагам, как настроить комфортную работу кассира:
SKU, связывая данные с регистром сведений КодыТоваровSKU.КодыТоваровSKU, а затем по стандартным полям (штрихкод, артикул, наименование).Такой подход исключает сбои нумерации в РИБ, сохраняет корректную работу типовых механизмов 1С:Розница и позволяет кассирам быстро находить товары по тем номерам, которые напечатаны на этикетках весов.