Как автоматически подставлять вес номенклатуры в табличную часть документа в УТ 10.3?

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

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

Почему не работают стандартные связи?

Многие разработчики, привыкшие к возможностям управляемых форм, ищут способы настроить связи параметров выбора или пути к данным через свойства элементов формы. Однако важно помнить, что конфигурация УТ 10.3 построена на обычных формах. В этой архитектуре механизм прямого вывода вложенных реквизитов через путь к данным в табличной части не реализован так, как это сделано в УФ. Поэтому попытки найти «галочку» для автозаполнения веса через настройки формы не приведут к результату.

Решение через событие «ПриИзменении»

Наиболее правильным и эффективным способом решения данной задачи является использование программного заполнения значения при выборе номенклатуры. Мы рекомендуем использовать событие ПриИзменении для колонки Номенклатура в табличной части документа. Этот метод позволяет не просто визуально отобразить данные, но и записать их в реквизит, что критически важно для дальнейшего использования в расчетах или печатных формах.

Разберем шаги по реализации этого подхода:

  1. Добавьте реквизит Вес в табличную часть документа ЗаказПоставщику.
  2. Выведите созданный реквизит на форму документа в виде колонки табличного поля.
  3. В модуле формы документа найдите (или создайте) процедуру-обработчик события ПриИзменении для колонки Номенклатура.

Пример программного кода, который необходимо вставить в обработчик:


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

Учет особенностей единиц измерения

Необходимо учитывать, что в УТ 10.3 Вес часто является параметром, зависящим не только от номенклатуры, но и от выбранной единицы измерения. Если у вас для одного товара заведено несколько единиц (например, «штука» и «упаковка»), логично хранить вес именно в разрезе справочника ЕдиницыИзмерения.

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

Альтернативные методы отображения данных

Если по какой-то причине вы не хотите хранить данные в реквизитах табличной части, а хотите только видеть их при просмотре списка, можно использовать методы ПриВыводеСтроки или ПриПолученииДанных. Однако стоит учитывать, что эти методы работают только в контексте отображения (интерфейса) и не сохраняют значение в базе данных. Для большинства учетных задач это является недостатком, так как эти данные нельзя будет использовать в отчетах или при печати накладных.

Заключение и рекомендации

Подводя итог, можно сделать следующие выводы для вашей задачи:

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

← На главную