Как программно открыть структуру подчиненности документа из строки табличной части в 1С

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

При разработке пользовательских форм в конфигурациях на базе Библиотеки Стандартных Подсистем (например, 1С:Комплексная автоматизация 2, 1С:ERP или 1С:Управление торговлей 11) часто возникает задача открыть структуру подчиненности (связанные документы) для объекта, выбранного в текущей строке табличной части.

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

Проверяем настройки метаданных в конфигураторе

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

  1. Состав критерия отбора: Проверим, входит ли тип проверяемого документа в критерий отбора КритерийОтбора.СвязанныеДокументы. Если реквизит или тип документа отсутствует в составе этого критерия, система не сможет найти связанные объекты в базе данных.
  2. Параметры общей команды: Проверим тип параметра общей команды ОбщаяКоманда.СвязанныеДокументы (или ОбщаяКоманда.СтруктураПодчиненности). Тип вашего документа должен быть внесен в список разрешенных параметров.

Получение ссылки из активной строки табличной части

Рассмотрим, как получить ссылку на документ из текущей выделенной строки табличной части управляемой формы. Для этого проанализируем обращение к свойству ТекущиеДанные элемента формы:


ТекущиеДанные = Элементы.ИмяТабличнойЧасти.ТекущиеДанные;

Если ТекущиеДанные <> Неопределено И ЗначениеЗаполнено(ТекущиеДанные.ИмяКолонкиДокумента) Тогда
    СсылкаНаДокумент = ТекущиеДанные.ИмяКолонкиДокумента;
КонецЕсли;

Важно: Выбранный документ обязательно должен быть записан в информационной базе. Для не записанного объекта выражение ЗначениеЗаполнено(Ссылка) вернет Ложь, и структура подчиненности не сформируется.

Способ 1. Прямое открытие общей формы

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


&НаКлиенте
Процедура КомандаОткрытьСтруктуруПодчиненности(Команда)
    
    ТекущиеДанные = Элементы.ТабличнаяЧасть.ТекущиеДанные;
    
    Если ТекущиеДанные = Неопределено Тогда
        Возврат;
    КонецЕсли;
    
    Если НЕ ЗначениеЗаполнено(ТекущиеДанные.Документ) Тогда
        ВызватьИсключение "Документ в текущей строке не выбран или не записан!";
    КонецЕсли;
    
    ПараметрыОткрытия = Новый Структура;
    ПараметрыОткрытия.Вставить("ЗначениеОтбора", ТекущиеДанные.Документ);
    
    ОткрытьФорму("ОбщаяФорма.СвязанныеДокументы", ПараметрыОткрытия);
    
КонецПроцедуры

Способ 2. Запрос к критерию отбора в коде

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


Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	СвязанныеДокументы.Ссылка КАК Ссылка
    |ИЗ
    |	КритерийОтбора.СвязанныеДокументы(&ИсходящийДокумент) КАК СвязанныеДокументы";

Запрос.УстановитьПараметр("ИсходящийДокумент", СсылкаНаДокумент);
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();

Пока Выборка.Следующий() Цикл
    // Обработка найденных подчиненных документов
КонецЦикла;

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

← На главную