Как организовать иерархию (группировку) характеристик номенклатуры в 1С

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

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

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

Почему справочник характеристик не имеет иерархии по умолчанию?

Прежде чем мы приступим к изменениям, давайте проанализируем ситуацию. Характеристики в 1С — это не просто строковые описания, а ключевой разрез учета остатков. Каждая характеристика — это отдельный элемент справочника, который имеет своего владельца (номенклатуру или вид номенклатуры). Отключение иерархии продиктовано следующими причинами:

  1. Учет остатков: Система хранит остатки в разрезе конкретных значений. Если разрешить создание групп, неопытный пользователь может случайно выбрать группу вместо элемента в документе поступления или реализации, что приведет к ошибкам в регистрах накопления.
  2. Типовые алгоритмы: Многие механизмы автоматического заполнения (например, заполнение по шаблонам или при обмене с сайтом) ожидают плоскую структуру данных.
  3. Производительность: Запросы к иерархическим справочникам при подборе товаров могут работать чуть медленнее, если требуется постоянный обход дерева групп.

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

Метод 1: Изменение структуры через Конфигуратор (прямое вмешательство)

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

Разберем по шагам:

  1. Откроем дерево объектов метаданных и найдем Справочники -> ХарактеристикиНоменклатуры.
  2. Перейдем на закладку Иерархия в окне редактирования объекта.
  3. Установим галочку Иерархический справочник.
  4. В поле Вид иерархии выберем значение Иерархия групп и элементов.
  5. Обновим конфигурацию базы данных (клавиша F7).

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

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


Если Характеристика.ЭтоГруппа Тогда
    Сообщить("В документе нельзя выбирать группу характеристик!");
    Отказ = Истина;
КонецЕсли;

Метод 2: Использование расширения конфигурации (рекомендуемый способ)

Чтобы не «ломать» типовую конфигурацию и сохранить возможность легкого обновления, воспользуемся механизмом расширений. Это позволит нам изменить свойства справочника ХарактеристикиНоменклатуры, не затрагивая основной код системы.

Проанализируем алгоритм действий:

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

Этот способ предпочтительнее, так как при обновлении основной конфигурации 1С от поставщика ваше изменение останется в силе и не будет затерто.

Метод 3: Использование дополнительных реквизитов (без программирования)

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

Выполним следующие шаги:

  1. Перейдем в раздел Администрирование -> Общие настройки -> Дополнительные реквизиты и сведения.
  2. Найдем набор реквизитов для характеристик номенклатуры.
  3. Добавим новый реквизит с названием, например, ГруппаХарактеристик (тип значения — Дополнительное значение).
  4. Заполним этот реквизит у каждой характеристики (например, для "Роза 1" укажем группу "Розы", для "Мишка 1" — "Тэдди").
  5. В форме списка или подбора нажмем Еще -> Настроить список.
  6. На закладке Группировка добавим наше поле ГруппаХарактеристик.

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

Метод 4: Настройка шаблонов наименований

Часто хаос в характеристиках возникает из-за разрозненного именования. Выясним, как это решить административно. В 1С можно настроить Шаблоны рабочих наименований характеристик. Например, настроим шаблон так, чтобы название всегда начиналось с категории:

[Группа] / [Цвет] / [Размер]

Если все характеристики будут называться единообразно:

То обычная алфавитная сортировка в списке автоматически сгруппирует их по первому слову. При вводе первых букв «ТЕД...» в поле поиска, система сразу покажет все характеристики этой группы.

Метод 5: Использование «Наборов характеристик» (для ERP/УТ)

Рассмотрим еще одну штатную возможность. В крупных системах характеристики можно привязывать не к конкретной номенклатуре, а к Виду номенклатуры. Это называется «Использование общих характеристик для вида номенклатуры».

Если вы распределите товары по разным видам (например, вид «Мягкие игрушки» и вид «Цветы»), то у них будут разные наборы характеристик. Пользователь, выбирая мишку, не увидит в списке характеристик «Длину стебля розы». Это значительно сокращает объем списка и отпадает необходимость в глубокой иерархии внутри одного справочника.

Резюме и рекомендации

Мы рассмотрели несколько подходов к решению задачи. Подведем итоги:

Если вам нужно строгое визуальное дерево папок — используйте Метод 2 (Расширение). Это наиболее профессиональный путь для программиста 1С, сохраняющий чистоту основной конфигурации.

Если вы хотите избежать программирования и проблем с обновлениями — используйте Метод 3 (Доп. реквизиты) или Метод 4 (Шаблоны имен). Эти способы решают проблему удобства поиска, не меняя структуру данных в базе.

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

← На главную