Как реализовать подбор номенклатуры с группами и элементами в одном списке, как в 1С 7.7?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

Анализ текущей архитектуры управляемых форм

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

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

Решение 1: Создание специализированной формы подбора

Если для бизнес-процессов критически важно иметь интерфейс, максимально приближенный к 1С 7.7, штатных настроек формы будет недостаточно. Мы рекомендуем создать собственную внешнюю форму подбора. Рассмотрим основные подходы к её реализации:

  1. Использование дерева значений: Этот объект позволяет программно управлять иерархией. Вы можете самостоятельно считывать данные из справочника Номенклатура и заполнять дерево. Преимущество — полный контроль над внешним видом каждой строки. Недостаток — необходимость загрузки всех данных в оперативную память, что может снизить производительность при работе с десятками тысяч позиций.
  2. Использование двух связанных списков: Классический подход для управляемых форм — слева разместить дерево групп, а справа — таблицу с элементами выбранной группы. Для удобства пользователей можно добавить кнопку «Показать всё», которая сбрасывает фильтр, создавая иллюзию плоского списка.

Как реализовать кастомную логику навигации

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


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

// Обработка клика по строке
&НаКлиенте
Процедура СписокПриАктивизацииСтроки(Элемент)
    // Дополнительная логика для отслеживания выбранного элемента
    Если Элемент.ТекущиеДанные.ЭтоГруппа Тогда
        // Разворачиваем группу программно
        Элемент.Развернуть(Элемент.ТекущаяСтрока);
    КонецЕсли;
КонецПроцедуры

Почему не стоит пытаться «докрутить» стандартную форму?

Мы настоятельно не рекомендуем пытаться модифицировать стандартный Динамический список через расширения или изменения кода типовых форм. Причины кроются в архитектурных особенностях платформы:

Рекомендации по альтернативным методам поиска

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

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

Подводя итог: если бизнес-требование «хотим как в 7.7» является критичным, единственным надежным путем остается разработка отдельной формы на основе ДереваЗначений. В остальных случаях — используйте стандартный полнотекстовый поиск и механизмы отборов, встроенные в типовые конфигурации 1С.

← На главную