Как вывести список связанных документов в форме элемента справочника в 1С 8.3

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

В процессе разработки конфигураций на платформе 1С:Предприятие 8.3 часто возникает задача обеспечить удобную навигацию между объектами. Типичный пример — необходимость увидеть все документы, в которых фигурирует конкретный договор, контрагент или номенклатурная позиция, прямо из карточки этого элемента. В типовых решениях, таких как "Бухгалтерия предприятия 3.0", это реализовано через панель навигации или специальные кнопки. Разберем подробно, как реализовать такой функционал несколькими способами.

Способ 1: Использование объекта метаданных «Критерий отбора»

Механизм Критерии отбора — это стандартный инструмент платформы 1С, предназначенный именно для быстрого поиска ссылок на объект в различных документах и справочниках. Рассмотрим пошагово, как его настроить.

Во-первых, создадим новый объект КритерийОтбора в дереве метаданных (раздел «Общие»). Дадим ему понятное имя, например, ДокументыПоДоговору.

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

В-третьих, перейдем на вкладку Состав. Здесь мы должны отметить галочками все документы и их реквизиты, в которых может содержаться наш договор. Например, в документе РеализацияТоваровУслуг выберем реквизит Договор.

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

  1. Откроем форму элемента справочника (например, ФормаЭлемента справочника ДоговорыКонтрагентов).
  2. Перейдем на закладку Командный интерфейс (она находится в нижней части редактора формы).
  3. В левом дереве найдем раздел Панель навигации, а в нем ветку Перейти.
  4. Найдем в списке наш критерий ДокументыПоДоговору.
  5. Установим флаг в колонке Видимость. По умолчанию платформа может скрывать новые команды, поэтому их нужно активировать вручную.

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

Способ 2: Размещение динамического списка непосредственно на форме

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

Рассмотрим алгоритм реализации:

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

ВЫБРАТЬ
    Док.Ссылка КАК Ссылка,
    Док.Дата КАК Дата,
    Док.Номер КАК Номер,
    Док.СуммаДокумента КАК Сумма
ИЗ
    Документ.РеализацияТоваровУслуг КАК Док
ГДЕ
    Док.Договор = &СсылкаНаОбъект

Теперь нам нужно обеспечить передачу текущей ссылки справочника в параметр запроса. Для этого в модуле формы в обработчике ПриСозданииНаСервере пропишем следующий код:


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

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

Способ 3: Использование подсистемы «Связанные объекты» (БСП)

Если ваша конфигурация построена на базе Библиотеки стандартных подсистем (БСП), то наиболее правильным методом будет интеграция в механизм «Связанные документы». Этот метод позволяет выводить не только плоский список, но и строить целое дерево подчиненности (например: Договор -> Заказ -> Реализация -> Счет-фактура).

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

Важные технические нюансы

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

Также стоит обратить внимание на свойство критерия отбора Использовать стандартные команды. Если оно выключено, команда перехода не появится в интерфейсе автоматически, даже если вы настроили видимость в форме.

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

← На главную