ВзаимозачетЗадолженности.ДебиторскаяЗадолженность.Партнер участвует в критерии. Его непосредственный родитель — табличная часть, не корневое описание документа.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Запускайте в учебной копии конфигурации. Примеры читают структуру метаданных, но не создают объекты, не записывают регистры и не проводят документы.
Сверяйте вывод с деревом конфигурации в Конфигураторе. Имена, длины и настройки в УНФ, КА2, БП, УТ 11 и УТ 10.3 могут различаться.
Имена объектов взяты из XML КА2 Progress: C:\claude\KA2\Progress\XML_CF_KA2_PROGRESS. Исходные XML не изменяйте. Выполняйте код только в своей учебной копии соответствующей конфигурации.
В другой конфигурации предварительно найдите аналогичный объект в Конфигураторе и замените только строку имени в поиске. Отсутствие имени обрабатывается до чтения свойств; оно не доказывает отсутствие аналогичной возможности.
Каждый урок запускайте отдельно. Код не вызывает бизнес-функции модулей и обработчики команд, не переключает привилегированный режим и не меняет параметры сеанса.
Описание = Метаданные.КритерииОтбора.Найти("ДокументыПоПартнеру");
Если Описание = Неопределено Тогда
ВызватьИсключение "В учебной конфигурации отсутствует КритерииОтбора.ДокументыПоПартнеру";
КонецЕсли;
Документ = Метаданные.Документы.Найти("ВзаимозачетЗадолженности");
Если Документ = Неопределено Тогда
ВызватьИсключение "В учебной конфигурации отсутствует Документы.ВзаимозачетЗадолженности";
КонецЕсли;
Таблица = Документ.ТабличныеЧасти.Найти("ДебиторскаяЗадолженность");
Если Таблица = Неопределено Тогда
ВызватьИсключение "В учебном взаимозачёте ожидалась табличная часть ДебиторскаяЗадолженность";
КонецЕсли;
Поле = Таблица.Реквизиты.Найти("Партнер");
Если Поле = Неопределено Тогда
ВызватьИсключение "В учебной табличной части ожидался Партнер";
КонецЕсли;
Сообщить(Описание.Состав.Содержит(Поле));
Сообщить(Поле.Родитель() = Таблица);
Сообщить(Таблица.Родитель() = Документ);
Сообщить(Поле.Родитель() <> Документ);
Сообщить(Поле.ПолноеИмя());Разбор по шагам
Находим описание документа, затем табличную часть; каждый результат проверяется.
У поля Партнер проверяем непосредственного родителя. Реквизит таблицы не ищется в Документ.Реквизиты.
Подтверждаем участие точного описания поля в Состав. Ни одну строку табличной части не читаем.
Как проверить результат
Четыре сравнения Истина; полное имя содержит документ, табличную часть и реквизит.
Схемное поле найдено даже без получения ссылок или строк реальных документов взаимозачёта.
Ожидаемый результат
Разобран конкретный вложенный источник критерия.
На что обратить внимание
Одноимённые Партнер в разных табличных частях — разные описания источников.
Родитель схемного реквизита не является объектом документа с данными.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.