Есть ДеревоЗначений, утрируя структуру по полям:
1.Наименование - Строка
2.Ветка - Булево (Истина если есть подчиненные элементы)
2.ГУИД - УникальныйИдентификатор
3.РодительГУИД - УникальныйИдентификатор

Не получается разобраться с организацией связи наборов данных(переходить на число в полях ГУИД и РодительГУИД нежелательно!):

```1c
    СвязьНабора = СхемаКомпоновки.СвязиНаборовДанных.Добавить();
    СвязьНабора.НаборДанныхИсточник = "НаборДанных";
    СвязьНабора.НаборДанныхПриемник = "НаборДанных";
    СвязьНабора.ВыражениеИсточник = "ГУИД";
    СвязьНабора.ВыражениеПриемник = "РодительГУИД";
    СвязьНабора.УсловиеСвязи = "Ветка";
    СвязьНабора.НачальноеВыражение = "00000000-0000-0000-0000-000000000000";
```

Помогите пож!
---
Быть может у Вас неправильно задано "НачальноеВыражение". Это же выражение на языке компоновки данных. Может нужно что-то вроде этого:

```1c
    СвязьНабора.НачальноеВыражение = ""00000000-0000-0000-0000-000000000000"";
```
---
Судя по описанию все в порядке, кроме одного момента. Зачем Вы указали условие связи?
---
Увы не работает и с условием и без оного... Прикрепил ДеревоЗначений настроек отчета.
---
Суть в том что если использую вместо УникальногоИдентификатора число и начальное значение связи 0 тогда всё работает до тех пор пока ГУИДЫ строк пронумерованы по порядку без разрывов (от 0 до 100 к примеру) если же есть два диапазона или более (0-50 60-70 80-100) то СКД ломает вариативно ломает вывод
---
Покажите, пожалуйста, а как Вы выводите данные?
---
```1c
    ИсточникиДанных = Новый Структура("ДанныеДерева", ДанныеДерева);
    СхемаКомпоновки = ПолучитьСхемуКомпоновкиПоДереву(ДанныеДерева);

    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    НастройкиКомпоновкиДанных = СхемаКомпоновки.НастройкиПоУмолчанию;
    ЭлементОформления = НастройкиКомпоновкиДанных.УсловноеОформление.Элементы.Добавить();

    ЭлементОформления.Использование = Истина;
    ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора.Использование = Истина;
    ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Ветка");
    ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
    ЭлементОтбора.ПравоеЗначение = Истина;
    ЭлементОформления.Оформление.УстановитьЗначениеПараметра("ЦветФона", Новый Цвет(255, 126, 126));

    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновки, НастройкиКомпоновкиДанных);

    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, ИсточникиДанных);

    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ЭтаФорма.ТД_Результат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновки);
```

Ну и ...

```1c
    &НаСервере
    Функция ПолучитьСхемуКомпоновкиПоДереву(ДанныеДерева, ВыбранныеПоляДерева = Неопределено, ПолеИД = "ГУИД", ПолеРодительИД = "РодительГУИД")

    Если ВыбранныеПоляДерева = Неопределено Тогда
    ВыбранныеПоляДерева = Новый Массив;
    КонецЕсли;
    ЗаполнитьВыбранныеПоляДерева = НЕ ВыбранныеПоляДерева.Количество();

    СхемаКомпоновки = Новый СхемаКомпоновкиДанных;
    НастройкиКомпоновки = СхемаКомпоновки.НастройкиПоУмолчанию;

    ИсточникДанных = СхемаКомпоновки.ИсточникиДанных.Добавить();
    ИсточникДанных.Имя = "ИсточникДанных";
    ИсточникДанных.ТипИсточникаДанных = "Local";

    НаборДанных = СхемаКомпоновки.НаборыДанных.Добавить(Тип("НаборДанныхОбъектСхемыКомпоновкиДанных"));
    НаборДанных.ИмяОбъекта = "ДанныеДерева";
    НаборДанных.Имя = "НаборДанных";
    НаборДанных.ИсточникДанных = "ИсточникДанных";

    Для Каждого КолонкаДерева Из ДанныеДерева.Колонки Цикл

    ИмяПоля = КолонкаДерева.Имя;
    Если ИмяПоля = "НПП" Тогда
    ЗаголовокПоля = "№";
    ИначеЕсли ИмяПоля = "НаименованиеПечати" Тогда
    ЗаголовокПоля = "Наименование";
    ИначеЕсли ИмяПоля = "Результат" Тогда
    ЗаголовокПоля = "Информация из 1С";
    Иначе
    ЗаголовокПоля = КолонкаДерева.Заголовок;
    КонецЕсли;

    ПолеНабора = НаборДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
    ПолеНабора.Заголовок = ЗаголовокПоля;
    ПолеНабора.Поле = ИмяПоля;

    Если ЗаполнитьВыбранныеПоляДерева И НЕ (ИмяПоля = ПолеИД ИЛИ ИмяПоля = ПолеРодительИД ИЛИ ИмяПоля = "Ветка")Тогда
    ВыбранныеПоляДерева.Добавить(Новый Структура("Имя, Заголовок", ИмяПоля, ЗаголовокПоля));
    КонецЕсли;

    КонецЦикла;

    СвязьНабора = СхемаКомпоновки.СвязиНаборовДанных.Добавить();
    СвязьНабора.НаборДанныхИсточник = "НаборДанных";
    СвязьНабора.НаборДанныхПриемник = "НаборДанных";
    СвязьНабора.ВыражениеИсточник = ПолеИД;
    СвязьНабора.ВыражениеПриемник = ПолеРодительИд;
    //СвязьНабора.УсловиеСвязи = "Ветка";
    СвязьНабора.НачальноеВыражение = "00000000-0000-0000-0000-000000000000";

    ВыбранныеПоля = НастройкиКомпоновки.Выбор.Элементы;
    Для Каждого ПолеДерева Из ВыбранныеПоляДерева Цикл
    ПолеОтчет = ВыбранныеПоля.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
    ПолеОтчет.Поле = Новый ПолеКомпоновкиДанных(ПолеДерева.Имя);
    ПолеОтчет.Заголовок = ПолеДерева.Заголовок;
    КонецЦикла;

    СтруктураГруппировки = НастройкиКомпоновки.Структура;
    ЭлементГруппировки = СтруктураГруппировки.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
    ЭлементГруппировки.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));

    Возврат СхемаКомпоновки;

    КонецФункции// ПолучитьСхемуКомпоновкиПоДереву()
```
---
Быть может у Вас неправильно задано "НачальноеВыражение". Это же выражение на языке компоновки данных. Может нужно что-то вроде этого:

```1c
    СвязьНабора.НачальноеВыражение = ""00000000-0000-0000-0000-000000000000"";
```
---
"""00000000-0000-0000-0000-000000000000"""

ТЫ ЛУЧШИЙ!!!! Как я мог про это забыть.... ;%:;?:%??:;%;№%: куча ПИПИПИ
Спасибо тебе!
---
странно что ошибку не выдавало. по идее это же некорректное выражение.
---
Вполне корректное. :) Это же разность нолей.
---
да уж. вот это подлянка
---
Что-то первый раз я вижу, чтобы иерархию строили через объект набор. Ведь она строится поэтапно и конкретно в этом случае для иерархии детальных записей сначала выбираются группы верхнего уровня (через начальное значение связи), затем список этих групп передается как параметр в запрос набора для получения элементов следующего уровня.

Как в вашем случае работать будет? Допустим через начальное значение связи из набора будут выбраны группы первого уровня. Хотя тоже не совсем понятно (мне) как это начальное значение работает. Мне почему-то всегда думалось, что оно передается опять же в параметр запроса. Хотя может быть просто делается отбор по значению выражения источника. Но это лирическое отступление. Допустим, что так и список групп первого уровня есть - дальше-то как будет работать в вашем случае? В описаннии выше запрос должен вернуть элементы следующего уровня, а у вас вернет весь набор, потому что отбора по списку нет.
---
Хм. Прикольно, но работает без параметра в запросе. Сделал на примере справочника номенклатуры. Но без программного создания.
---
Если в поле ГУИД число и начальное значение связи ставить "0" шикарно работает! Вот для Теста прикрепляю... Мной честно спёртая обработка!
---
В наборе данных объект важно определять тип значения у поля. Попробуйте там где создаются поля набора задавать тип у поля.
---
Минутку
---
Типизация не помогла
---
Мне не понятно почему при связи по полям с типом УникальныйИдентификатор не работает...
---
Видимо придётся вернуться на числовой тип ГУИДа и замонстрячить перенумерацию ГУИДов при окончании редактирования... Жаль!