Как добавить отображение связанных данных на форму элемента в 1С:ERP 2.5

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

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

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

Способ 1. Использование механизма «Критерии отбора»

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

Выполним следующие шаги для настройки:

  1. В дереве метаданных найдем ветку Общие и выберем Критерии отбора. Создадим новый объект, назовем его, например, НоменклатураПоЭталону.
  2. На вкладке Данные укажем тип значения, по которому будет идти поиск. В нашем случае это СправочникСсылка.Номенклатура.
  3. Перейдем на вкладку Состав. Здесь нужно поставить галочку напротив реквизита ЭталоннаяНоменклатура справочника Номенклатура. Это укажет системе, в каких полях искать нашу ссылку.
  4. Теперь нам нужно убедиться, что команда появилась в форме. Откроем форму элемента справочника Номенклатура.
  5. Перейдем на закладку Командный интерфейс. В группе Перейти найдем наш критерий отбора НоменклатураПоЭталону и установим флажок Видимость.

Результат: В верхней части формы (в панели навигации) появится гиперссылка. При нажатии на нее откроется стандартная форма списка с уже установленным фильтром по текущему элементу.

Способ 2. Создание параметризованной команды объекта

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

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

  1. В дереве метаданных у справочника Номенклатура создадим новую команду.
  2. В свойствах команды установим Тип параметра команды — СправочникСсылка.Номенклатура.
  3. Укажем группу команды: Панель навигации формы.Перейти.
  4. В модуле команды пропишем программный код для открытия формы с отбором.

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


&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
    
    // Формируем структуру отбора, где ключ — имя реквизита, по которому фильтруем,
    // а значение — ссылка на текущий элемент (параметр команды).
    ПараметрыОтбора = Новый Структура("Отбор", Новый Структура("ЭталоннаяНоменклатура", ПараметрКоманды));
    
    // Открываем форму списка справочника Номенклатура с установленным фильтром
    ОткрытьФорму("Справочник.Номенклатура.ФормаСписка", 
                 ПараметрыОтбора, 
                 ПараметрыВыполненияКоманды.Источник, 
                 ПараметрыВыполненияКоманды.Уникальность, 
                 ПараметрыВыполненияКоманды.Окно, 
                 ПараметрыВыполненияКоманды.НавигационнаяСсылка);

КонецПроцедуры

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

Способ 3. Размещение динамического списка на форме (вкладка)

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

Разберем, как это реализовать:

  1. Откроем форму элемента справочника в редакторе.
  2. Добавим новый Реквизит формы (не путать с реквизитом объекта). Назовем его СписокПоЭталону, тип данных — Динамический список.
  3. В свойствах реквизита установим флажок Произвольный запрос и откроем конструктор запроса. Текст запроса будет выглядеть так:
    
    ВЫБРАТЬ
        СправочникНоменклатура.Ссылка КАК Ссылка,
        СправочникНоменклатура.Код КАК Код,
        СправочникНоменклатура.Наименование КАК Наименование
    ИЗ
        Справочник.Номенклатура КАК СправочникНоменклатура
    ГДЕ
        СправочникНоменклатура.ЭталоннаяНоменклатура = &Эталон
    
  4. Перетащим реквизит СписокПоЭталону на форму, создав таблицу.
  5. Теперь нам нужно передать параметр &Эталон в запрос. Сделаем это в серверном обработчике.

Рассмотрим программную установку параметров в модуле формы:


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    // Устанавливаем значение параметра запроса динамического списка
    // Объект.Ссылка — это текущий элемент, который мы открыли
    СписокПоЭталону.Параметры.УстановитьЗначениеПараметра("Эталон", Объект.Ссылка);
    
КонецПроцедуры

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

Особенности для конфигураций на базе ERP 2.5

В современных конфигурациях 1С, таких как ERP 2.5 или Комплексная автоматизация, активно используется механизм подключаемых команд. Это означает, что интерфейс часто строится динамически при открытии формы.

Выясним, на что стоит обратить внимание в ERP:

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

← На главную