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

Программист 1С v8.3 (Обычные формы) Управленческий учет Промышленность, строительство и АПК
← На главную

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

Метод 1. Использование единиц измерения и коэффициентов пересчета

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

Предположим, наш базовый учет ведется в м3. Мы создаем для номенклатуры дополнительные единицы измерения, называя их информативно, например, «шт (600х300х200)». Для каждой такой единицы мы рассчитываем коэффициент объема одного блока. Если размер блока 0.6м * 0.3м * 0.2м, то коэффициент будет равен 0.036.

Разберем по шагам, как это работает при продаже:

  1. Менеджер в документе Реализация товаров и услуг выбирает общую позицию «Газоблок».
  2. В колонке «Единица» выбирается конкретный размер, например, «шт (600х300х200)».
  3. Указывается количество в штуках.
  4. Программа автоматически рассчитывает количество в базовой единице (кубах) для списания со склада по регистру Товары на складах.

Преимущество: В печатной форме накладной (ТОРГ-12) клиент увидит именно выбранную единицу измерения и количество в штуках нужного размера, а складской остаток останется консолидированным в кубах. Выясним причину удобства: нам не нужно следить за остатками каждого конкретного типоразмера, если они пилятся под заказ из общего объема.

Метод 2. Использование скрытого поля Содержание в табличной части

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

Для вывода поля нажмем правой кнопкой мыши на табличной части документа, выберем пункт «Настройка списка» и установим галочку напротив поля Содержание. Теперь проанализируем алгоритм работы:

  1. В строку документа добавляется стандартный «Газоблок 1 куб.м».
  2. В поле Содержание вручную или выбором из шаблона вписывается текст: «Газоблок (размер 600х300х200)».
  3. При формировании стандартной печатной формы накладной система проверяет: если поле Содержание заполнено, то в колонку «Наименование товара» выводится именно этот текст вместо названия из справочника.

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

Метод 3. Справочное использование серий номенклатуры

Если нам необходимо не просто писать текст, а иметь возможность строить отчеты о том, блоки каких размеров продавались чаще всего, рассмотрим механизм серий. В 1С:УПП серии могут использоваться не только для учета сроков годности, но и как информационный разрез.

Настроим политику учета серий для номенклатуры так, чтобы они не участвовали в складских остатках (не стоял флаг «Вести складской учет по сериям»), но были доступны в документах. Теперь мы можем создать справочник СерииНоменклатуры, где элементами будут выступать размеры блоков.

Посмотрим на пример заполнения документа:


// Пример логики выбора серии в коде, если бы мы автоматизировали подстановку
СтрокаТЧ = ЭлементыФормы.Товары.ТекущиеДанные;
РазмерБлока = Справочники.СерииНоменклатуры.НайтиПоНаименованию("600х300х200");
Если НЕ РазмерБлока.Пустая() Тогда
    СтрокаТЧ.СерияНоменклатуры = РазмерБлока;
КонецЕсли;

В этом случае в накладную серию можно вывести через редактирование макета печатной формы. Это позволит анализировать продажи в разрезе размеров через стандартные отчета (например, «Продажи по сериям»), не разделяя при этом остатки на складе.

Метод 4. Дополнительные свойства объектов

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

Мы можем назначить свойство «Размер» для документа Реализация товаров и услуг или непосредственно для строки документа (если используется соответствующая подсистема). Рассмотрим, как это реализовать:

  1. Заходим в план видов характеристик СвойстваОбъектов.
  2. Добавляем новое свойство «Размер блока для печати», назначаем его справочнику Номенклатура или документу.
  3. В документе реализации заполняем это значение.

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


Функция ПолучитьРазмерИзСвойств(ОбъектСсылка)
    Запрос = Новый Запрос;
    Запрос.Текст = 
    "ВЫБРАТЬ
    |   ЗначенияСвойствОбъектов.Значение
    |ИЗ
    |   РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
    |ГДЕ
    |   ЗначенияСвойствОбъектов.Объект = &Объект
    |   И ЗначенияСвойствОбъектов.Свойство = &Свойство";
    
    Запрос.УстановитьПараметр("Объект", ОбъектСсылка);
    Запрос.УстановитьПараметр("Свойство", ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Размер"));
    
    Результат = Запрос.Выполнить();
    Если НЕ Результат.Пустой() Тогда
        Выборка = Результат.Выбрать();
        Выборка.Следующий();
        Возврат Выборка.Значение;
    КонецЕсли;
    Возврат "";
КонецФункции

Метод 5. Внешняя печатная форма с параметризацией через комментарий

Если задача стоит максимально остро и нужно решение «здесь и сейчас» без изменения настроек программы, разберем метод использования поля Комментарий строки документа. Это самый быстрый способ для программиста.

Менеджеру дается инструкция: в строке товара в колонке комментария писать размер в определенном формате, например, в квадратных скобках: [600x300x200]. Затем создается внешняя печатная форма, которая при формировании строки выполняет поиск по строке (парсинг).

Разберем алгоритм парсинга:


// Фрагмент кода для обработки строки в печатной форме
ИсходныйТекст = СтрокаТовара.Комментарий;
НачалоРазмера = Найти(ИсходныйТекст, "[");
КонецРазмера = Найти(ИсходныйТекст, "]");

Если НачалоРазмера > 0 И КонецРазмера > НачалоРазмера Тогда
    РазмерДляПечати = Сред(ИсходныйТекст, НачалоРазмера + 1, КонецРазмера - НачалоРазмера - 1);
    НаименованиеДляВывода = СокрЛП(СтрокаТовара.Номенклатура.НаименованиеПолное) + " (размер: " + РазмерДляПечати + ")";
Иначе
    НаименованиеДляВывода = СтрокаТовара.Номенклатура.НаименованиеПолное;
КонецЕсли;

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

← На главную