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

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

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

Архитектурные особенности хранения веса в 1С:УТ 11

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

  1. В карточке номенклатуры: реквизиты справочника Номенклатура (поля Вес, либо ВесЧислитель и ВесЗнаменатель).
  2. В упаковках и единицах измерения: если на предприятии используются индивидуальные или типовые упаковки, вес привязывается к справочнику УпаковкиНоменклатуры. В этом случае простое изменение реквизита в самой номенклатуре не дадут желаемого результата — потребуется обновлять подчиненный справочник упаковок.
  3. В дополнительных реквизитах: если вес заведен как пользовательское доп. свойство через механизм ДополнительныеРеквизитыИСведения.

Способ 1. Загрузка данных из файла Excel через типовой помощник

Разберем самый простой и безопасный способ для пользователей без опыта программирования. В УТ 11 предусмотрен встроенный инструмент загрузки из табличных документов.

Для загрузки веса выполним следующие шаги:

  1. Подготовим файл Excel, содержащий минимум две колонки: ключевой идентификатор (например, Артикул, Код или Штрихкод) и новое значение Вес.
  2. В программе откроем раздел НСИ и администрирование — Загрузка номенклатуры из файла (или перейдем в справочник Номенклатура и выберем команду загрузки из файла).
  3. Скопируем данные из таблицы Excel и вставим их в форму помощника.
  4. На этапе сопоставления колонок укажем соответствие полей: колонку с кодом сопоставим с реквизитом Артикул (или Код), а колонку с весом — с реквизитом Вес.
  5. В настройках поиска установим режим обновления существующих позиций при совпадении ключевых реквизитов.
  6. Нажмем кнопку продолжения и завершим загрузку данных.

Способ 2. Использование универсальной обработки «Загрузка данных из табличного документа»

Если требуется более гибкая настройка поиска и заполнения реквизитов, выберем универсальную обработку с портала ИТС — «Загрузка данных из табличного документа».

Рассмотрим порядок работы с ней:

  1. Запустим обработку через меню Файл — Открыть.
  2. В поле «Настройка» выберем объект загрузки: справочник Номенклатура.
  3. Скопируем данные из файла Excel на вкладку «Таблица загрузки».
  4. На вкладке «Настройки» зададим колонки сопоставления. Для поля Артикул установим флаг Условие связи, чтобы система искала позицию в базе.
  5. Для колонки с весом укажем реквизит Вес (или ВесЧислитель).
  6. Нажмем кнопку Загрузить данные. Обработка найдет товары и перезапишет только указанные поля.

Способ 3. Выполнение произвольного алгоритма в обработке «Групповое изменение реквизитов»

Выясним, как поступить, если вес нужно пересчитать по формуле прямо в базе (например, вычислить вес на основе объема или пересчитать значения из других полей). В этом случае применим обработку ГрупповоеИзменениеРеквизитов с включенным режимом разработчика.

Разберем по шагам выполнение алгоритма:

  1. Откроем обработку Групповое изменение реквизитов (раздел Администрирование — Обслуживание — Корректировка данных).
  2. Выберем элемент для изменения — справочник Номенклатура и настроим отбор по нужным позициям.
  3. В окне параметров включим режим эксперта/разработчика для открытия возможности выполнения кода.
  4. В специальном окне «Выполнить произвольный алгоритм» напишем программный код.

Рассмотрим пример кода, если вес рассчитывается на основе объема товара:


// Пример пересчета веса на основе объема с коэффициентом
Объект.ВесЧислитель = Объект.Объем * 1.5;
Объект.ВесЗнаменатель = 1;

Если вес хранится непосредственно в числовом реквизите Вес, используем простой вариант:


// Прямое присвоение или расчет значения
Объект.Вес = Объект.Длина * Объект.Ширина * Объект.Высота * 0.0002;

Если же вес привязан к упаковкам товара, проанализируем пример кода с обращением к подчиненному справочнику УпаковкиНоменклатуры:


Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	Упаковки.Ссылка КАК Ссылка
    |ИЗ
    |	Справочник.УпаковкиНоменклатуры КАК Упаковки
    |ГДЕ
    |	Упаковки.Владелец = &Номенклатура";

Запрос.УстановитьПараметр("Номенклатура", Объект.Ссылка);
Результат = Запрос.Выполнить().Выбрать();

Пока Результат.Следующий() Цикл
    УпаковкаОбъект = Результат.Ссылка.ПолучитьОбъект();
    УпаковкаОбъект.Вес = Объект.Вес; // Или другое рассчитанное значение
    УпаковкаОбъект.Записать();
КонецЦикла;

Подведение итогов

Мы рассмотрели три основных подхода к обновлению разрозненных значений веса номенклатуры в 1С:Управление торговлей 11:

  1. Загрузка из Excel через встроенный помощник — лучший вариант для пользователей без навыков программирования, когда есть готовый прайс-лист с весом.
  2. Обработка «Загрузка данных из табличного документа» — подходит для сложных условий загрузки и сопоставления.
  3. Произвольный алгоритм в групповом изменении реквизитов — идеален для программистов и администраторов, когда вес можно рассчитать математически по формуле прямо из реквизитов базы.
← На главную