В процессе автоматизации розничной торговли часто возникает задача массовой подготовки товаров к продаже. Особенно это актуально для таких категорий, как одежда или аксессуары (например, носки), где одна и та же модель может иметь десятки характеристик (размеры, цвета). Присваивать штрихкод каждой позиции вручную через карточку товара — процесс крайне трудозатратный. В данной статье мы разберем, как реализовать массовую генерацию штрихкодов в типовом функционале программы «1С:Розница 2.3», проанализируем возможности стандартных обработок и затронем программные методы решения задачи.
Рассмотрим наиболее эффективный и простой способ, который не требует изменения конфигурации. Многие пользователи забывают, что обработка Печать этикеток и ценников предназначена не только для вывода данных на принтер, но и для предварительной подготовки этих самых данных. Проанализируем алгоритм действий:
В этот момент программа автоматически обратится к механизмам БСП (Библиотеки стандартных подсистем) и создаст записи в регистре сведений ШтрихкодыНоменклатуры для каждой комбинации «Товар + Характеристика». Это самый быстрый способ «оцифровать» большое поступление товара без единой строчки кода. Для автоматизации данного процесса непосредственно в документе поступления можно использовать расширение для автоматического присвоения штрихкодов в поступлении товаров.
Разберем ситуацию, когда список товаров уже сформирован в стороннем приложении (например, в Excel) и нам нужно массово загрузить их в 1С, одновременно присвоив штрихкоды. Выясним, как это сделать штатными средствами:
Воспользуемся помощником Загрузка данных из файла (раздел Администрирование — Обслуживание). При загрузке в справочник Номенклатура или напрямую в регистр Штрихкоды номенклатуры, мы можем оставить колонку со штрихкодом пустой. Однако более надежным методом будет предварительная генерация кодов в самом Excel (если планируются внутренние коды формата EAN-13, начинающиеся на "2") или использование расширения, которое инициирует создание кодов после записи объектов. Тем не менее, для массовой генерации «с нуля» встроенная печать ценников остается приоритетным инструментом. Для импорта списка номенклатуры из табличного документа с автоматической генерацией ценников и кодов подойдет обработка загрузки номенклатуры и цен из Excel.
Если перед нами стоит задача кастомизировать процесс (например, добавить кнопку «Сгенерировать ШК» прямо в форму списка номенклатуры), нам придется прибегнуть к программным методам. Рассмотрим пример кода, который можно использовать в обработке или расширении. Основная логика заключается в обращении к менеджеру регистра сведений ШтрихкодыНоменклатуры.
Проанализируем пример кода для генерации внутреннего штрихкода EAN-13:
Процедура СгенерироватьШтрихкодыДляВыделенных(МассивОбъектов)
Для Каждого ТекущийОбъект Из МассивОбъектов Цикл
// Проверяем, есть ли уже штрихкод у данной позиции
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| ШтрихкодыНоменклатуры.Штрихкод
|ИЗ
| РегистрСведений.ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры
|ГДЕ
| ШтрихкодыНоменклатуры.Номенклатура = &Номенклатура
| И ШтрихкодыНоменклатуры.Характеристика = &Характеристика";
Запрос.УстановитьПараметр("Номенклатура", ТекущийОбъект.Номенклатура);
Запрос.УстановитьПараметр("Характеристика", ТекущийОбъект.Характеристика);
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
// Используем типовую функцию для генерации нового кода EAN-13
НовыйШтрихкод = РегистрыСведений.ШтрихкодыНоменклатуры.СформироватьШтрихкодEAN13();
// Записываем новый штрихкод в регистр
МенеджерЗаписи = РегистрыСведений.ШтрихкодыНоменклатуры.СоздатьМенеджерЗаписи();
МенеджерЗаписи.Номенклатура = ТекущийОбъект.Номенклатура;
МенеджерЗаписи.Характеристика = ТекущийОбъект.Характеристика;
МенеджерЗаписи.Штрихкод = НовыйШтрихкод;
МенеджерЗаписи.ТипШтрихкода = ПланыВидовХарактеристик.ТипыШтрихкодов.EAN13;
МенеджерЗаписи.Записать();
КонецЕсли;
КонецЦикла;
КонецПроцедуры
В данном примере мы используем метод СформироватьШтрихкодEAN13(), который автоматически подбирает свободный код в диапазоне внутренних префиксов, установленных в настройках системы. Это гарантирует отсутствие дублей в базе данных.
Посмотрим на ситуацию шире. Если речь идет о носках (трикотажные изделия), то простого присвоения внутреннего штрихкода может быть недостаточно. Выясним причину: с 2024 года большинство товаров легкой промышленности подлежат обязательной маркировке средствами DataMatrix.
Присваивая обычный EAN-13, вы создаете лишь внутренний идентификатор для складского учета. Для легальной продажи товаров, подлежащих маркировке, необходимо:
В «1С:Розница 2.3» для массового получения кодов маркировки используется документ Заказ на эмиссию кодов маркировки СУЗ. Здесь также реализован механизм массового заполнения и генерации запросов на основе остатков или документов поступления.
Подведем итоги нашего анализа. Для массового присвоения штрихкодов в «1С:Розница 2.3» не обязательно нанимать программиста. Типовая обработка печати ценников полностью закрывает потребность в генерации внутренних кодов. Однако, если ваша задача выходит за рамки стандарта — например, вы хотите автоматизировать процесс при создании каждой новой характеристики — использование расширений конфигурации с программным вызовом методов регистра штрихкодов будет наиболее правильным техническим решением.
Всегда проверяйте настройки префиксов в разделе Администрирование — Настройки номенклатуры. Неправильно настроенный префикс может привести к тому, что сгенерированные коды будут пересекаться с заводскими штрихкодами других товаров, что создаст хаос при сканировании на кассе.