В таблице Справочник.УчебныйКаталог поле Детали имеет тип РезультатЗапроса. Для него создаётся собственная выборка.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Создайте справочник УчебныеВладельцы и иерархический справочник УчебныйКаталог: иерархия групп и элементов, владелец УчебныеВладельцы, использование подчинения Для групп и элементов.
В УчебныйКаталог добавьте Цена (Число 15.2), использование реквизита Для групп и элементов. Код — Строка 10 с автонумерацией, Наименование — Строка 100.
В отдельной учебной конфигурации создайте общий реквизит УчебныйИсточник типа Строка 20. Разделение данных — Не использовать. В составе явно включите только учебный объект этого урока; использование — Использовать.
Если общий реквизит не выведен на форму, его пустое строковое значение допустимо. Запрос всё равно покажет именованную колонку УчебныйИсточник. Это не разделитель данных и не механизм ограничения доступа.
Обновите учебную базу. Создайте владельца Учебный магазин, под ним группу Книги и элемент Справочник 1С: родитель Книги, цена 450. Предопределённых элементов не создавайте.
Запрос выполняйте в серверной процедуре учебной обработки. Результат содержит группу и элемент; порядок строк здесь не задан.
Дополните только подготовленный учебный объект: Справочники → УчебныйКаталог → Табличные части → Детали. Добавьте Наименование (Строка 100) и Количество (Число 10.0). Для иерархических объектов табличную часть используйте для элементов, не для групп.
Выведите Детали на основную форму объекта, обновите учебную базу. В одном подготовленном элементе, счёте, узле или документе вручную заполните две строки: Книга, 2; Ручка, 3. Запишите объект.
В модуле объекта отдельный код чтения не нужен: основной запрос запускается в серверной процедуре учебной обработки.
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Данные.Ссылка,
| Данные.Детали.(НомерСтроки, Наименование, Количество) КАК Детали
|ИЗ Справочник.УчебныйКаталог КАК Данные";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить("Объект: " + Строка(Выборка.Ссылка));
СтрокиДеталей = Выборка.Детали.Выбрать();
Пока СтрокиДеталей.Следующий() Цикл
Сообщить(Строка(СтрокиДеталей.НомерСтроки) + ": "
+ СтрокиДеталей.Наименование + ", количество "
+ Строка(СтрокиДеталей.Количество));
КонецЦикла;
КонецЦикла;Разбор по шагам
Внешняя выборка получает ссылку объекта и один вложенный результат по его строкам.
Скобки после Детали явно задают три поля вложенного результата.
Второй цикл читает строки только текущего объекта; пустая табличная часть даёт пустой внутренний цикл.
Как проверить результат
У заполненного объекта показаны 1: Книга, количество 2 и 2: Ручка, количество 3.
У объекта с пустыми Детали показана его ссылка, но строки деталей не выдумываются.
Ожидаемый результат
Табличная часть прочитана в виде отдельного вложенного результата, без разворачивания объекта в дублирующиеся внешние строки.
На что обратить внимание
Поле Детали не является строкой и не является сразу ТаблицаЗначений: это вложенный РезультатЗапроса.
Имена табличной части и её реквизитов должны точно совпадать с подготовкой; создание их выполняется в конфигураторе, не в запросе.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.