При работе в крупных конфигурациях, таких как 1С:ERP Управление предприятием 2.5, часто возникает необходимость не просто хранить ссылки между объектами, но и удобно отображать их в интерфейсе. Рассмотрим типичную ситуацию: в справочнике Номенклатура есть реквизит ЭталоннаяНоменклатура. Нам нужно сделать так, чтобы, открыв карточку «эталонной» позиции, пользователь мог сразу увидеть список всех других товаров, которые на нее ссылаются.
Проанализируем ситуацию. Нам нужно реализовать переход к списку элементов, отфильтрованных по конкретному значению. В платформе «1С:Предприятие 8.3» существует несколько способов добиться этого: от стандартных механизмов метаданных до программного вывода данных непосредственно на форму. Разберем каждый метод подробно.
Это самый «чистый» и рекомендуемый платформенный способ для создания связей типа «где используется этот объект». Критерий отбора автоматически создает команду перехода в панели навигации формы, что избавляет нас от написания лишнего кода.
Выполним следующие шаги для настройки:
НоменклатураПоЭталону.СправочникСсылка.Номенклатура.ЭталоннаяНоменклатура справочника Номенклатура. Это укажет системе, в каких полях искать нашу ссылку.Номенклатура.НоменклатураПоЭталону и установим флажок Видимость.Результат: В верхней части формы (в панели навигации) появится гиперссылка. При нажатии на нее откроется стандартная форма списка с уже установленным фильтром по текущему элементу.
Если нам нужно более гибкое управление (например, изменить заголовок в зависимости от условий или выполнять дополнительные проверки), мы можем создать собственную команду непосредственно в объекте метаданных.
Рассмотрим алгоритм действий:
Номенклатура создадим новую команду.СправочникСсылка.Номенклатура.Панель навигации формы.Перейти.Проанализируем пример кода для модуля команды:
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
// Формируем структуру отбора, где ключ — имя реквизита, по которому фильтруем,
// а значение — ссылка на текущий элемент (параметр команды).
ПараметрыОтбора = Новый Структура("Отбор", Новый Структура("ЭталоннаяНоменклатура", ПараметрКоманды));
// Открываем форму списка справочника Номенклатура с установленным фильтром
ОткрытьФорму("Справочник.Номенклатура.ФормаСписка",
ПараметрыОтбора,
ПараметрыВыполненияКоманды.Источник,
ПараметрыВыполненияКоманды.Уникальность,
ПараметрыВыполненияКоманды.Окно,
ПараметрыВыполненияКоманды.НавигационнаяСсылка);
КонецПроцедуры
Такой подход позволяет нам полностью контролировать процесс открытия и даже открывать не стандартную, а специально подготовленную форму списка.
Иногда пользователи хотят видеть связанные данные не в отдельном окне, а прямо «внутри» карточки на отдельной закладке. В этом случае панель навигации нам не подходит, и мы будем использовать Динамический список.
Разберем, как это реализовать:
СписокПоЭталону, тип данных — Динамический список.
ВЫБРАТЬ
СправочникНоменклатура.Ссылка КАК Ссылка,
СправочникНоменклатура.Код КАК Код,
СправочникНоменклатура.Наименование КАК Наименование
ИЗ
Справочник.Номенклатура КАК СправочникНоменклатура
ГДЕ
СправочникНоменклатура.ЭталоннаяНоменклатура = &Эталон
СписокПоЭталону на форму, создав таблицу.&Эталон в запрос. Сделаем это в серверном обработчике.Рассмотрим программную установку параметров в модуле формы:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// Устанавливаем значение параметра запроса динамического списка
// Объект.Ссылка — это текущий элемент, который мы открыли
СписокПоЭталону.Параметры.УстановитьЗначениеПараметра("Эталон", Объект.Ссылка);
КонецПроцедуры
Важный нюанс: Если вы создаете новый элемент справочника (который еще не записан в базу), Объект.Ссылка будет пустой. В этом случае список будет пуст, что логично. Не забудьте обновить список после первой записи объекта, если это необходимо.
В современных конфигурациях 1С, таких как ERP 2.5 или Комплексная автоматизация, активно используется механизм подключаемых команд. Это означает, что интерфейс часто строится динамически при открытии формы.
Выясним, на что стоит обратить внимание в ERP:
...Переопределяемый (например, УправлениеНоменклатуройПереопределяемый). В некоторых случаях команды нужно регистрировать в программном коде конфигурации, чтобы они попали в общий механизм отрисовки интерфейса.Проанализировав все способы, можно сделать вывод: для быстрого добавления ссылки в панель навигации лучше всего подходит Критерий отбора. Если же требуется интеграция данных непосредственно в интерфейс карточки — используйте Динамический список на отдельной странице формы.