В розничной торговле часто возникает необходимость продавать фасованный товар с уникальным весом каждого кусочка (например, сыр, колбасы, мясо или кондитерские изделия). В супермаркетах этот процесс автоматизирован: товар взвешивается, на него наклеивается этикетка со штрихкодом, в котором зашифрован вес, а на кассе при сканировании программа автоматически определяет товар, его массу и рассчитывает стоимость.
В этой статье мы подробно разберем, как устроен этот механизм в программе «1С:Розница», как правильно настроить систему для корректного дешифрования таких штрихкодов на кассе и как решить проблему печати весовых этикеток непосредственно из программы без использования дорогих весов с печатью этикеток.
Для кодирования весовых товаров в розничной торговле применяется международный стандарт штрихкодов EAN-13. Давайте проанализируем структуру такого штрихкода, чтобы понять, как программа расшифровывает данные при сканировании:
2 + П + ЧЧЧЧЧ + ВВВВВ + К
Разберем назначение каждого символа в этой структуре:
01250.Таким образом, если мы закодируем товар с кодом SKU 00123 и весом 1 кг 450 г с использованием префикса 1, мы получим штрихкод вида: 210012301450К (где К — контрольный символ).
Для того чтобы кассовый модуль (РМК) при сканировании такого штрихкода не выдавал ошибку «Штрихкод не найден», а корректно распознавал номенклатуру и подставлял нужный вес в чек, выполним предварительную настройку системы. Проанализируем этот процесс по шагам:
21 или 22.кг (килограммы) и установим признак Весовой.После проведения этих настроек сканер на кассовом узле будет мгновенно расшифровывать любые отсканированные штрихкоды данного формата, автоматически добавляя товар в чек с точным указанием веса.
Как справедливо отмечают практикующие специалисты, стандартная обработка печати этикеток и ценников в «1С:Розница» не предназначена «из коробки» для генерации этикеток с динамическим весом. Давайте выясним причину этого ограничения.
В стандартном механизме 1С поле Количество в обработке печати этикеток указывает программе, сколько копий этикеток нужно распечатать на принтере. Оно принципиально не поддерживает дробные значения (нельзя напечатать 1.345 копии этикетки). Кроме того, стандартный генератор штрихкодов ищет штрихкод в регистре сведений ШтрихкодыНоменклатуры, где хранятся только статические (фиксированные) штрихкоды.
Тем не менее, существует три основных способа решить эту задачу в зависимости от ваших бизнес-процессов.
Рассмотрим ситуацию, когда товар фасуется заранее, но на фиксированные порции. Например, вы раскладываете конфеты, сухофрукты или орехи в пакеты строго по 200, 300 и 500 грамм. В этом случае использовать сложный механизм весовых штрихкодов вообще не требуется.
Вы можете настроить учет по следующему алгоритму:
0.2 относительно базовой единицы (кг).0.5.Если вес каждого кусочка уникален (например, вы нарезаете сыр или колбасу на произвольные куски на складе или в фасовочном цехе), вам потребуется доработка системы с помощью внешнего расширения или обработки.
При таком подходе логика работы выглядит следующим образом:
Давайте посмотрим на пример программного кода, который используется во внешних обработках для сборки правильной строки штрихкода перед выводом на печать:
Функция СформироватьВесовойШтрихкод(КодТовара, ВесВГраммах) Экспорт
// Префикс весового товара в нашей базе
Префикс = "21";
// Форматируем код товара до 5 знаков, дополняя нулями слева
КодСтрокой = Формат(КодТовара, "ЧЦ=5; ЧГ=0");
КодСтрокой = СтрЗаменить(КодСтрокой, " ", "0");
// Форматируем вес (в граммах) до 5 знаков, дополняя нулями слева
ВесСтрокой = Формат(ВесВГраммах, "ЧЦ=5; ЧГ=0");
ВесСтрокой = СтрЗаменить(ВесСтрокой, " ", "0");
// Собираем первые 12 цифр штрихкода
ШтрихкодБезКонтрольного = Префикс + КодСтрокой + ВесСтрокой;
// Вычисляем контрольный символ EAN-13
Четные = 0;
Нечетные = 0;
Для Инд = 1 По 12 Цикл
Цифра = Число(Сред(ШтрихкодБезКонтрольного, Инд, 1));
Если Инд % 2 = 0 Тогда
Четные = Четные + Цифра;
Иначе
Нечетные = Нечетные + Цифра;
КонецЕсли;
КонецЦикла;
Сумма = Нечетные + (Четные * 3);
Остаток = Сумма % 10;
КонтрольныйРазряд = ?(Остаток = 0, 0, 10 - Остаток);
Возврат ШтрихкодБезКонтрольного + Строка(КонтрольныйРазряд);
КонецФункции
Эта функция формирует готовую строку из 13 символов, которую стандартная компонента печати штрихкодов 1С легко преобразует в графическое изображение штрихкода для термопринтера этикеток.
Проанализируем еще одну частую ситуацию: фасовка товара происходит непосредственно в момент продажи на кассе, и наклеивать этикетки заранее не требуется. В этом случае вы можете полностью отказаться от печати этикеток.
Для реализации этого сценария сделайте следующее:
Этот способ является наиболее экономичным, так как исключает затраты на расходные материалы (ленты термоэтикеток) и экономит время на предварительную фасовку товара в подсобном помещении.
Мы выяснили, что программа «1С:Розница» обладает мощным встроенным функционалом для работы со штрихкодированием весового товара. Главное — правильно настроить префиксы штрихкодов и диапазоны кодов SKU в настройках программы. Если вам требуется маркировать весовой товар заранее без использования специализированных весов с печатью этикеток, наилучшим решением будет использование несложного внешнего расширения для печати динамических этикеток или организация учета через механизм упаковок с фиксированным весом.