Структура отчёта и дерево метаданных — не одно и то же. У корневых настроек нет родителя, а группировка Детали принадлежит собственному корню.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
В отдельной учебной базе 8.5.1.1343 создайте серверный общий модуль УчебныеЗадачи. Фрагмент без директив вставьте в тело ВыполнитьПример() Экспорт и вызовите своей учебной командой.
Схема СКД строится программно, макет в конфигурации не нужен. Источник Local выполняет запрос из двух собственных константных строк, без справочников, документов и регистров.
Каждое упражнение запускайте отдельно. Книга: 3 × 250 = 750; Ручка: 1 × 50 = 50; общая сумма 800. Результат хранится в памяти, не записывается в файл или базу.
Для исследования поставьте точку останова перед последними проверками. ТаблицаЗначений и процессоры СКД здесь создаются и используются на сервере; напрямую в тонкий клиент таблица не возвращается.
Схема = Новый СхемаКомпоновкиДанных;
Источник = Схема.ИсточникиДанных.Добавить();
Источник.Имя = "УчебныйИсточник";
Источник.ТипИсточникаДанных = "Local";
Набор = Схема.НаборыДанных.Добавить(Тип("НаборДанныхЗапросСхемыКомпоновкиДанных"));
Набор.Имя = "УчебныеТовары";
Набор.ИсточникДанных = Источник.Имя;
Набор.АвтоЗаполнениеДоступныхПолей = Истина;
Набор.Запрос = "ВЫБРАТЬ
| ""Книга"" КАК Наименование,
| 3 КАК Количество,
| 250 КАК Цена,
| 750 КАК Сумма
|ОБЪЕДИНИТЬ ВСЕ
|ВЫБРАТЬ ""Ручка"", 1, 50, 50";
Настройки = Схема.НастройкиПоУмолчанию;
Для Каждого ИмяПоля Из СтрРазделить("Наименование,Количество,Цена,Сумма", ",") Цикл
Выбранное = Настройки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
Выбранное.Поле = Новый ПолеКомпоновкиДанных(ИмяПоля);
Выбранное.Использование = Истина;
КонецЦикла;
Детали = Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
Детали.Использование = Истина;
АвтоВыбор = Детали.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
АвтоВыбор.Использование = Истина;
Настройки.ДополнительныеСвойства.Вставить("УчебнаяЗадача", "Две константные строки");
Сообщить(Настройки.Родитель = Неопределено);
Сообщить(Настройки.ДополнительныеСвойства.УчебнаяЗадача = "Две константные строки");
Сообщить(Настройки.НастройкиЭлемента(Детали) = Настройки);
Идентификатор = Настройки.ПолучитьИдентификаторПоОбъекту(Детали);
Если Идентификатор = Неопределено Тогда
ВызватьИсключение "Собственная группировка не найдена в настройках";
КонецЕсли;
Сообщить(Настройки.ПолучитьОбъектПоИдентификатору(Идентификатор) = Детали);
ЧужиеНастройки = Новый НастройкиКомпоновкиДанных;
ЧужаяГруппировка = ЧужиеНастройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
Сообщить(Настройки.ПолучитьИдентификаторПоОбъекту(ЧужаяГруппировка) = Неопределено);Разбор по шагам
Схема создаётся полностью в коде: корень Настройки и принадлежащая ему группировка Детали.
ДополнительныеСвойства хранит служебную учебную метку, не поле строки отчёта.
НастройкиЭлемента возвращает настройки, которым принадлежит группировка, не саму группировку.
Проверяем идентификатор до обратного поиска. Отдельная чужая группировка не является частью первого корня.
Как проверить результат
Пять сравнений Истина: корневой родитель, метка, принадлежность, обратное получение, отсутствие чужого объекта.
Схема/настройки не записываются в конфигурацию или хранилище настроек.
Ожидаемый результат
Проверены принадлежность и адресация элементов собственного дерева СКД.
На что обратить внимание
Идентификатор элемента не является UUID товара или идентификатором строки результата.
ДополнительныеСвойства не создаёт автоматически колонку запроса/выбора.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.