При ведении учета в конфигурации 1С:Управление торговлей 11 (УТ 11) часто возникает необходимость массово заполнить или обновить весогабаритные характеристики товаров. Если значение одинаковое для группы товаров, то задача решается за пару кликов. Однако как поступить, если значения у всех позиций разнятся и менять вес вручную в каждой карточке слишком долго? Рассмотрим подробнее все доступные варианты решения этой задачи.
Перед тем как приступать к массовому обновлению данных, проанализируем, где именно в вашей базе хранится вес номенклатуры. В зависимости от настроек и релиза конфигурации параметр может находиться в разных объектах:
Номенклатура (поля Вес, либо ВесЧислитель и ВесЗнаменатель).УпаковкиНоменклатуры. В этом случае простое изменение реквизита в самой номенклатуре не дадут желаемого результата — потребуется обновлять подчиненный справочник упаковок.ДополнительныеРеквизитыИСведения.Разберем самый простой и безопасный способ для пользователей без опыта программирования. В УТ 11 предусмотрен встроенный инструмент загрузки из табличных документов.
Для загрузки веса выполним следующие шаги:
Артикул, Код или Штрихкод) и новое значение Вес.Номенклатура и выберем команду загрузки из файла).Артикул (или Код), а колонку с весом — с реквизитом Вес.Если требуется более гибкая настройка поиска и заполнения реквизитов, выберем универсальную обработку с портала ИТС — «Загрузка данных из табличного документа».
Рассмотрим порядок работы с ней:
Номенклатура.Артикул установим флаг Условие связи, чтобы система искала позицию в базе.Вес (или ВесЧислитель).Выясним, как поступить, если вес нужно пересчитать по формуле прямо в базе (например, вычислить вес на основе объема или пересчитать значения из других полей). В этом случае применим обработку ГрупповоеИзменениеРеквизитов с включенным режимом разработчика.
Разберем по шагам выполнение алгоритма:
Номенклатура и настроим отбор по нужным позициям.Рассмотрим пример кода, если вес рассчитывается на основе объема товара:
// Пример пересчета веса на основе объема с коэффициентом
Объект.ВесЧислитель = Объект.Объем * 1.5;
Объект.ВесЗнаменатель = 1;
Если вес хранится непосредственно в числовом реквизите Вес, используем простой вариант:
// Прямое присвоение или расчет значения
Объект.Вес = Объект.Длина * Объект.Ширина * Объект.Высота * 0.0002;
Если же вес привязан к упаковкам товара, проанализируем пример кода с обращением к подчиненному справочнику УпаковкиНоменклатуры:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Упаковки.Ссылка КАК Ссылка
|ИЗ
| Справочник.УпаковкиНоменклатуры КАК Упаковки
|ГДЕ
| Упаковки.Владелец = &Номенклатура";
Запрос.УстановитьПараметр("Номенклатура", Объект.Ссылка);
Результат = Запрос.Выполнить().Выбрать();
Пока Результат.Следующий() Цикл
УпаковкаОбъект = Результат.Ссылка.ПолучитьОбъект();
УпаковкаОбъект.Вес = Объект.Вес; // Или другое рассчитанное значение
УпаковкаОбъект.Записать();
КонецЦикла;
Мы рассмотрели три основных подхода к обновлению разрозненных значений веса номенклатуры в 1С:Управление торговлей 11: