Как в 1С:ERP использовать номенклатуру и её свойства в качестве характеристики другого товара

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

В практике работы с 1С:ERP часто возникает задача создания сложных иерархических характеристик. Например, когда характеристикой готового изделия (ручки) является комплектующая номенклатура (стержень), которая сама обладает набором уникальных свойств (цвет, тип чернил, толщина линии). Основная сложность здесь заключается в автоматизации формирования рабочего наименования и минимизации ручного ввода данных.

Рассмотрим подробно, как решить эту задачу в рамках типового функционала 1С:ERP 2.2 и какие ограничения платформы необходимо учитывать.

Метод 1. Использование механизма общих дополнительных реквизитов

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

Наиболее эффективным типовым решением будет использование общих дополнительных реквизитов. Разберем этот процесс по шагам:

  1. Перейдем в раздел Администрирование — Общие настройки — Дополнительные реквизиты и сведения.
  2. Создадим новый дополнительный реквизит, например, «Тип чернил стержня».
  3. В настройках этого реквизита укажем, что он используется сразу для нескольких наборов свойств: для характеристик вида номенклатуры «Стержни» и для характеристик вида номенклатуры «Ручки».
  4. Таким образом, и у стержня, и у ручки будет один и тот же список значений (например: «Гелевый», «Шариковый», «Масляный»).

Посмотрим на результат: теперь при создании характеристики для ручки мы выбираем «Тип чернил» из того же списка, что и для стержня. Это позволяет использовать данный реквизит в Конструкторе рабочих наименований для обоих видов номенклатуры без необходимости обращения к свойствам вложенных объектов.

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

Если руководство занимает жесткую позицию относительно изменения основной конфигурации, оптимальным выходом станет использование расширений конфигурации. Это штатный механизм платформы «1С:Предприятие», который позволяет дорабатывать логику, не снимая систему с поддержки и не изменяя ядро программы.

Выясним причину, почему это необходимо: стандартный конструктор формул в ERP 2.2 ограничен глубиной обращения. Он может извлечь Характеристика.ДопРеквизит1, но не может извлечь Характеристика.ДопРеквизит1.СвойствоОбъекта.

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


// Пример логики для извлечения свойств вложенной номенклатуры
Если ЗначениеЗаполнено(Объект.Владелец) Тогда
    СтерженьСсылка = СвойствоЛогика.ПолучитьЗначениеДопРеквизита(Объект, "Стержень");
    Если ЗначениеЗаполнено(СтерженьСсылка) Тогда
        ТипЧернил = СвойствоЛогика.ПолучитьЗначениеДопРеквизита(СтерженьСсылка, "ТипЧернил");
        Объект.НаименованиеПолное = "Ручка со стержнем " + ТипЧернил;
    КонецЕсли;
КонецЕсли;

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

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

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

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

  1. В окне обработки выберем объект Номенклатура.
  2. Перейдем в Дополнительные параметры и включим возможность выполнения кода на встроенном языке.
  3. Напишем скрипт, который будет перебирать характеристики конкретной номенклатуры и записывать их значения в соответствующие доп. реквизиты владельца.

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

Рекомендации по автоматизации

Чтобы минимизировать ручной труд, о котором упоминалось в обсуждении, проанализируем использование Шаблонов наименований. В настройках Вида номенклатуры на закладке «Шаблоны наименований» следует настроить формулу для рабочих наименований характеристик. Если вы используете Метод 1 (общие реквизиты), формула будет выглядеть стандартно, например:

[Цвет] + ", " + [ТипЧернил] + ", " + [ТолщинаЛинии]

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

← На главную