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

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

В типовой конфигурации «1С:Управление торговлей 10.3» (УТ 10.3) пользователи часто сталкиваются с логистической дилеммой: в карточке товара предусмотрено только одно поле для веса. При этом для корректного оформления отгрузочных документов, таких как ТОРГ-12 или транспортная накладная, необходимо указывать оба значения — и массу нетто (чистый вес товара), и массу брутто (вес товара с упаковкой). Рассмотрим подробнее, как устроена эта система, и разберем способы решения задачи по учету массы брутто.

Анализ стандартной архитектуры хранения веса

Прежде всего, нам необходимо разобраться, где именно в базе данных хранятся сведения о весовых характеристиках. В отличие от многих других справочников, в УТ 10.3 вес не является прямым реквизитом справочника Номенклатура. Проанализируем структуру метаданных:

  1. Данные о весе хранятся в подчиненном справочнике ЕдиницыИзмерения.
  2. Реквизит называется Вес (тип Число).
  3. Каждая позиция номенклатуры может иметь несколько единиц измерения (штуки, коробки, палеты), и для каждой из них в справочнике ЕдиницыИзмерения указывается свой собственный вес.

Это гибкая система, позволяющая системе автоматически рассчитывать общий вес документа. Однако проблема заключается в том, что поле Вес в системе только одно. Исторически сложилось, что в УТ 10.3 оно используется как масса нетто, так как именно эти данные чаще всего попадают в регламентированную отчетность.

Варианты реализации массы брутто

Выясним, какие существуют стратегии для добавления веса брутто, если стандартного функционала недостаточно. Мы можем выделить три основных подхода.

Способ 1: Перераспределение ролей штатных полей
Как упоминалось в обсуждении на форуме, некоторые компании используют стандартное поле Вес для хранения массы брутто (так как это важнее для расчета загрузки транспорта), а для массы нетто создают дополнительный реквизит. Это требует минимальных правок, но может затронуть алгоритмы печати стандартных форм.

Способ 2: Использование дополнительных свойств (без программирования)
Если вам нужно просто видеть массу брутто в карточке номенклатуры для справки, можно воспользоваться механизмом «Свойства объектов».

  1. Зайдите в меню «Операции» — «Планы видов характеристик» — «Свойства объектов».
  2. Добавьте новое свойство «ВесБрутто» с типом Число.
  3. В карточке номенклатуры на закладке «Свойства» укажите значение.

Минус этого способа — сложность извлечения данных для автоматических расчетов в документах и печатных формах без написания программного кода.

Способ 3: Доработка конфигурации (Программный метод)
Для полноценной работы логистики правильнее всего будет модифицировать структуру справочника ЕдиницыИзмерения. Разберем этот процесс по шагам.

Пошаговое руководство по программному добавлению массы брутто

Рассмотрим, как внести изменения в конфигурацию, чтобы система поддерживала оба вида веса.

Шаг 1: Изменение метаданных
Откроем конфигуратор и найдем справочник ЕдиницыИзмерения. Добавим в него новый реквизит ВесБрутто (длина 15, точность 3). Это позволит нам хранить массу упаковки вместе с товаром для каждой единицы измерения отдельно.

Шаг 2: Модификация экранных форм
Необходимо вывести созданное поле на форму элемента справочника ЕдиницыИзмерения, а также, для удобства пользователя, на основную форму справочника Номенклатура.

Шаг 3: Написание кода для получения данных
Для того чтобы получить массу брутто программно, например, в модуле печатной формы, нам потребуется обратиться к единице измерения, указанной в строке документа. Посмотрим на пример кода, который вычисляет общий вес брутто по строке табличной части документа РеализацияТоваровУслуг:


Функция РассчитатьВесБруттоСтроки(ТекущаяСтрока) Экспорт
    
    // Получаем коэффициент единицы измерения
    Коэффициент = ТекущаяСтрока.ЕдиницаИзмерения.Коэффициент;
    
    // Получаем значение веса брутто из единицы измерения
    // Предполагаем, что реквизит ВесБрутто уже добавлен в справочник
    ВесБруттоЕдиницы = ТекущаяСтрока.ЕдиницаИзмерения.ВесБрутто;
    
    // Расчет: Количество в строке * Вес брутто конкретной единицы
    ОбщийВесБрутто = ТекущаяСтрока.Количество * ВесБруттоЕдиницы;
    
    Возврат ОбщийВесБрутто;

КонецФункции

Особенности вывода в печатную форму ТОРГ-12

Проанализируем ситуацию с печатью документов. В типовой ТОРГ-12 есть колонки «Масса нетто» и «Масса брутто». По умолчанию 1С подставляет значение из поля Вес в колонку нетто, а колонка брутто остается пустой или дублируется.

Для корректного заполнения нам нужно отредактировать модуль менеджера документа или процедуру печати в общем модуле. Найдем фрагмент кода, где заполняются параметры области печати МассаНетто и МассаБрутто. Обычно это происходит в цикле обхода табличной части товара.

Пример логики заполнения данных для печати:


// В цикле формирования строк для печатной формы
ОбластьМакета.Параметры.МассаНетто = СтрокаТовары.Количество * СтрокаТовары.ЕдиницаИзмерения.Вес;

// Если мы добавили свой реквизит ВесБрутто
Если СтрокаТовары.ЕдиницаИзмерения.ВесБрутто <> 0 Тогда
    ОбластьМакета.Параметры.МассаБрутто = СтрокаТовары.Количество * СтрокаТовары.ЕдиницаИзмерения.ВесБрутто;
Иначе
    // Если брутто не задано, можно приравнять его к нетто
    ОбластьМакета.Параметры.МассаБрутто = ОбластьМакета.Параметры.МассаНетто;
КонецЕсли;

Важные рекомендации по заполнению данных

Проанализировав опыт внедрений, мы рекомендуем придерживаться следующих правил при работе с весом в УТ 10.3:

Таким образом, для получения массы брутто в УТ 10.3 наиболее эффективным является путь добавления нового реквизита в справочник ЕдиницыИзмерения с последующей модификацией процедур печати. Это обеспечит точность данных и избавит от путаницы при работе складского персонала и бухгалтерии.

← На главную