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