Как программно создать упаковку и привязать к ней штрихкод в 1С:Управление торговлей 11

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

В процессе автоматизации складского учета в 1С:Управление торговлей 11 часто возникает задача массовой загрузки данных из внешних файлов, например, из Excel. Для этих целей часто применяется специализированная загрузка номенклатуры из Excel, позволяющая автоматически создавать группы и виды товаров — для этого есть загрузка и обновление номенклатуры из Excel. Одной из наиболее ответственных задач является корректное создание упаковок для товаров и их последующая привязка к штрихкодам. Это критически важно для корректной работы терминалов сбора данных (ТСД), чтобы при сканировании штрихкода система понимала, какое именно количество товара и в какой таре (штуки, коробки, паллеты) принимается или отгружается.

В данной статье мы подробно разберем, как реализовать этот процесс с помощью встроенного языка 1С, проанализируем структуру необходимых объектов и выясним, как избежать типичных ошибок при работе с регистром штрихкодов.

Шаг 1. Создание элемента справочника Упаковки

Прежде чем присвоить штрихкод упаковке, нам необходимо создать саму упаковку в справочнике УпаковкиЕдиницыИзмерения. Проанализируем ключевые реквизиты, которые необходимо заполнить программно. Особое внимание следует уделить владельцу упаковки, так как в УТ 11 существует два способа ведения упаковок: индивидуальные наборы и общие наборы.

Рассмотрим пример кода для создания индивидуальной упаковки для конкретной номенклатуры:


// Создаем новый объект упаковки
Упаковка = Справочники.УпаковкиЕдиницыИзмерения.СоздатьЭлемент();

// Указываем базовую единицу измерения (например, шт)
Упаковка.ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию("шт");

// Указываем владельца. Для индивидуальных упаковок это ссылка на Номенклатуру
Упаковка.Владелец = СсылкаНаНоменклатуру;

// Устанавливаем коэффициенты пересчета (например, в коробке 10 штук)
Упаковка.Числитель = 10;
Упаковка.Знаменатель = 1;

// Определяем тип упаковки и измеряемой величины
Упаковка.ТипИзмеряемойВеличины = Перечисления.ТипыИзмеряемыхВеличин.Упаковка;
Упаковка.ТипУпаковки = Перечисления.ТипыУпаковокНоменклатуры.Конечная; 

// Задаем наименование, которое будет отображаться в интерфейсе
Упаковка.Наименование = "Коробка (10 шт)";

// Записаем объект в базу данных
Упаковка.Записать();

Важно помнить: если в системе используются Наборы упаковок, то в качестве Владельца должна выступать ссылка на элемент справочника НаборыУпаковок, а не на саму номенклатуру. Проанализируйте настройки вашей конфигурации перед запуском обработки.

Шаг 2. Привязка штрихкода к созданной упаковке

После того как объект упаковки успешно записан и у него появилась уникальная ссылка, мы можем приступить к созданию записи в регистре сведений ШтрихкодыНоменклатуры. Чтобы упростить этот процесс в будущем, можно реализовать автоматическое создание штрихкодов при регистрации новых позиций — для этого подойдёт массовая загрузка номенклатуры и штрихкодов из Excel. Основная ошибка начинающих разработчиков заключается в том, что они забывают указать ссылку на упаковку в соответствующем измерении регистра, из-за чего штрихкод привязывается ко всей номенклатуре в целом.

Разберем, как правильно связать штрихкод и упаковку, используя МенеджерЗаписи:


// Создаем менеджер записи для регистра штрихкодов
НовыйШтрихкод = РегистрыСведений.ШтрихкодыНоменклатуры.СоздатьМенеджерЗаписи();

// Заполняем ключевые измерения
НовыйШтрихкод.Номенклатура = СсылкаНаНоменклатуру;
НовыйШтрихкод.Штрихкод = ЗначениеШтрихкодаИзExcel;

// ПРИВЯЗКА: Передаем ссылку на только что созданную упаковку
НовыйШтрихкод.Упаковка = Упаковка.Ссылка; 

// Если на предприятии используется учет по характеристикам, 
// крайне рекомендуется заполнять и это поле, иначе возникнут проблемы на ТСД
НовыйШтрихкод.Характеристика = СсылкаНаХарактеристику;

// Записываем данные
Попытка
    НовыйШтрихкод.Записать();
Исключение
    Сообщить("Ошибка при записи штрихкода: " + ОписаниеОшибки());
КонецПопытки;

Шаг 3. Оптимизация загрузки через Набор Записей

Если вы планируете загружать тысячи позиций, использование СоздатьМенеджерЗаписи() внутри цикла может существенно замедлить работу. В таких случаях мы рекомендуем использовать НаборЗаписей. Подобные алгоритмы применяет комплексная обработка для загрузки справочника Номенклатура, которая позволяет эффективно переносить штрихкоды, дополнительные реквизиты и цены из внешних файлов.

Рассмотрим подробнее, как реализовать запись набором:


// Создаем набор записей
НаборШтрихкодов = РегистрыСведений.ШтрихкодыНоменклатуры.СоздатьНаборЗаписей();

// Устанавливаем фильтр, чтобы не перезаписать лишнего
НаборШтрихкодов.Отбор.Номенклатура.Установить(СсылкаНаНоменклатуру);
НаборШтрихкодов.Прочитать();

// Добавляем новую запись в набор
НоваяЗапись = НаборШтрихкодов.Добавить();
НоваяЗапись.Номенклатура = СсылкаНаНоменклатуру;
НоваяЗапись.Штрихкод = ЗначениеШтрихкода;
НоваяЗапись.Упаковка = Упаковка.Ссылка;

// Записываем весь набор разом
НаборШтрихкодов.Записать(Ложь); // Параметр Ложь означает, что мы не замещаем существующие записи

Важные нюансы при работе с ТСД и иерархией упаковок

Выясним причину, почему важно разделять индивидуальные, групповые и транспортные упаковки. В контексте складской логистики это работает следующим образом:

  1. Индивидуальная упаковка (Пачка): Потребительская единица, которую покупает конечный клиент.
  2. Групповая упаковка (Блок): Объединяет несколько индивидуальных упаковок. Сканирование штрихкода блока на ТСД должно автоматически добавлять в документ количество, равное коэффициенту (например, 10 пачек) — для массовой работы с документами подойдёт загрузка данных из Excel в документы поступления.
  3. Транспортная упаковка (Короб, Паллета): Используется для оптовых перемещений.

Стоит учитывать, что в типовых формах УТ 11 работа со сканером может быть ограничена. Например, стандартно не предусмотрено сканирование штрихкодов в форме подбора, что требует либо доработки, либо использования внешних инструментов, таких как расширение для поиска номенклатуры по штрихкоду в списках и подборах.

Посмотрим на типичные ошибки:

Проанализировав вышеописанные методы, мы видим, что программное создание упаковок — это комплексная задача по связыванию данных. Правильное использование Упаковка.Ссылка в качестве значения измерения гарантирует надежную работу системы.

← На главную