В типовой конфигурации «1С:Управление торговлей 10.3» (УТ 10.3) пользователи часто сталкиваются с логистической дилеммой: в карточке товара предусмотрено только одно поле для веса. При этом для корректного оформления отгрузочных документов, таких как ТОРГ-12 или транспортная накладная, необходимо указывать оба значения — и массу нетто (чистый вес товара), и массу брутто (вес товара с упаковкой). Рассмотрим подробнее, как устроена эта система, и разберем способы решения задачи по учету массы брутто.
Прежде всего, нам необходимо разобраться, где именно в базе данных хранятся сведения о весовых характеристиках. В отличие от многих других справочников, в УТ 10.3 вес не является прямым реквизитом справочника Номенклатура. Проанализируем структуру метаданных:
ЕдиницыИзмерения.Вес (тип Число).ЕдиницыИзмерения указывается свой собственный вес.Это гибкая система, позволяющая системе автоматически рассчитывать общий вес документа. Однако проблема заключается в том, что поле Вес в системе только одно. Исторически сложилось, что в УТ 10.3 оно используется как масса нетто, так как именно эти данные чаще всего попадают в регламентированную отчетность.
Выясним, какие существуют стратегии для добавления веса брутто, если стандартного функционала недостаточно. Мы можем выделить три основных подхода.
Способ 1: Перераспределение ролей штатных полей
Как упоминалось в обсуждении на форуме, некоторые компании используют стандартное поле Вес для хранения массы брутто (так как это важнее для расчета загрузки транспорта), а для массы нетто создают дополнительный реквизит. Это требует минимальных правок, но может затронуть алгоритмы печати стандартных форм.
Способ 2: Использование дополнительных свойств (без программирования)
Если вам нужно просто видеть массу брутто в карточке номенклатуры для справки, можно воспользоваться механизмом «Свойства объектов».
Число.Минус этого способа — сложность извлечения данных для автоматических расчетов в документах и печатных формах без написания программного кода.
Способ 3: Доработка конфигурации (Программный метод)
Для полноценной работы логистики правильнее всего будет модифицировать структуру справочника ЕдиницыИзмерения. Разберем этот процесс по шагам.
Рассмотрим, как внести изменения в конфигурацию, чтобы система поддерживала оба вида веса.
Шаг 1: Изменение метаданных
Откроем конфигуратор и найдем справочник ЕдиницыИзмерения. Добавим в него новый реквизит ВесБрутто (длина 15, точность 3). Это позволит нам хранить массу упаковки вместе с товаром для каждой единицы измерения отдельно.
Шаг 2: Модификация экранных форм
Необходимо вывести созданное поле на форму элемента справочника ЕдиницыИзмерения, а также, для удобства пользователя, на основную форму справочника Номенклатура.
Шаг 3: Написание кода для получения данных
Для того чтобы получить массу брутто программно, например, в модуле печатной формы, нам потребуется обратиться к единице измерения, указанной в строке документа. Посмотрим на пример кода, который вычисляет общий вес брутто по строке табличной части документа РеализацияТоваровУслуг:
Функция РассчитатьВесБруттоСтроки(ТекущаяСтрока) Экспорт
// Получаем коэффициент единицы измерения
Коэффициент = ТекущаяСтрока.ЕдиницаИзмерения.Коэффициент;
// Получаем значение веса брутто из единицы измерения
// Предполагаем, что реквизит ВесБрутто уже добавлен в справочник
ВесБруттоЕдиницы = ТекущаяСтрока.ЕдиницаИзмерения.ВесБрутто;
// Расчет: Количество в строке * Вес брутто конкретной единицы
ОбщийВесБрутто = ТекущаяСтрока.Количество * ВесБруттоЕдиницы;
Возврат ОбщийВесБрутто;
КонецФункции
Проанализируем ситуацию с печатью документов. В типовой ТОРГ-12 есть колонки «Масса нетто» и «Масса брутто». По умолчанию 1С подставляет значение из поля Вес в колонку нетто, а колонка брутто остается пустой или дублируется.
Для корректного заполнения нам нужно отредактировать модуль менеджера документа или процедуру печати в общем модуле. Найдем фрагмент кода, где заполняются параметры области печати МассаНетто и МассаБрутто. Обычно это происходит в цикле обхода табличной части товара.
Пример логики заполнения данных для печати:
// В цикле формирования строк для печатной формы
ОбластьМакета.Параметры.МассаНетто = СтрокаТовары.Количество * СтрокаТовары.ЕдиницаИзмерения.Вес;
// Если мы добавили свой реквизит ВесБрутто
Если СтрокаТовары.ЕдиницаИзмерения.ВесБрутто <> 0 Тогда
ОбластьМакета.Параметры.МассаБрутто = СтрокаТовары.Количество * СтрокаТовары.ЕдиницаИзмерения.ВесБрутто;
Иначе
// Если брутто не задано, можно приравнять его к нетто
ОбластьМакета.Параметры.МассаБрутто = ОбластьМакета.Параметры.МассаНетто;
КонецЕсли;
Проанализировав опыт внедрений, мы рекомендуем придерживаться следующих правил при работе с весом в УТ 10.3:
ЕдиницыИзмерения процедуру ПриЗаписи, которая будет автоматически рассчитывать брутто на основании введенного нетто.Таким образом, для получения массы брутто в УТ 10.3 наиболее эффективным является путь добавления нового реквизита в справочник ЕдиницыИзмерения с последующей модификацией процедур печати. Это обеспечит точность данных и избавит от путаницы при работе складского персонала и бухгалтерии.