Как вывести вес номенклатуры в табличной части Заказа клиента в 1С:УТ 11?

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

При работе с заказами в Управление торговлей 11 часто возникает потребность видеть суммарный вес товаров непосредственно в интерфейсе документа. Это критически важно для расчета стоимости логистики и выбора транспорта. Давайте разберем, как подойти к этой задаче, учитывая архитектуру типовой конфигурации.

Понимание типового механизма учета веса

Прежде чем приступать к доработкам, проанализируем, как система хранит данные. В УТ 11 реализован функционал Вес и объем товара. Убедитесь, что в разделе НСИ и администрирование — Продажи установлена соответствующая опция. После этого в карточке Номенклатура становится доступным поле Вес (нетто). Важно понимать, что система хранит вес единицы товара, а не итоговое значение для конкретной строки заказа.

Решение через внешнюю печатную форму

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

Разберем алгоритм действий:

  1. Создайте внешнюю печатную форму для документа Заказ клиента.
  2. В модуле объекта формы подготовьте запрос к табличной части Товары.
  3. В запросе необходимо связаться с таблицей Справочник.Номенклатура для получения веса.
  4. Используйте формулу для вывода значения в макет: Вес = Количество * ВесНоменклатуры.

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

Решение через расширение конфигурации (для отображения в табличной части)

Если же бизнес-процесс требует видеть вес непосредственно в табличной части Товары, вам потребуется Расширение. Рассмотрим подробный план реализации:

  1. Создайте новое расширение и добавьте в него документ Заказ клиента.
  2. В табличную часть Товары добавьте новый реквизит ВесСправочно (тип Число).
  3. Для корректного отображения веса при выборе товара или изменении количества, создайте обработчик события ПриИзменении для реквизита Количество и Номенклатура.

Пример логики для кода в расширении:


// В обработчике ПриИзменении количества
Процедура ТоварыКоличествоПриИзменении(Элемент)
    СтрокаТабличнойЧасти = Элементы.Товары.ТекущиеДанные;
    Если ЗначениеЗаполнено(СтрокаТабличнойЧасти.Номенклатура) Тогда
        // Получаем вес из номенклатуры или упаковки
        ВесЕдиницы = ПолучитьВесТовара(СтрокаТабличнойЧасти.Номенклатура, СтрокаТабличнойЧасти.Упаковка);
        СтрокаТабличнойЧасти.ВесСправочно = СтрокаТабличнойЧасти.Количество * ВесЕдиницы;
    КонецЕсли;
КонецПроцедуры

Учет упаковки

При расчете веса всегда учитывайте, что в УТ 11 вес зависит от упаковки. Если товар продается коробками, система должна брать коэффициент веса именно из записи Справочник.УпаковкиЕдиницыИзмерения. Используйте типовые функции общего назначения, такие как НоменклатураКлиентСервер.ПолучитьВес, чтобы корректно извлекать данные с учетом выбранной упаковки.

Альтернативный вариант: Использование отчетов

Часто задачу можно решить без модификации документов вообще. Если менеджеру нужно видеть вес для принятия решения, создайте вариант отчета на основе Ведомости по товарам на складах. Добавьте в запрос отчета вычисляемое поле, где будет произведено умножение количества на вес. Это позволит получать актуальные данные в любой момент времени без нагрузки на основной документ Заказ клиента.

Заключение: для работы в облаке рекомендуем использовать внешние печатные формы. Если же без колонки в табличной части не обойтись — применяйте Расширение с тщательной обработкой событий изменения количества и выбора упаковки.

← На главную