Приветствую!
1с 8.0 УТ
Задача такая из справочника склады (иерархического) выбрать элементы (не группы) с нулевого уровня. Пишу запрос
ТекстЗапроса = "
|ВЫБРАТЬ
| Ссылка,
| Наименование
|ИЗ
| Справочник.Склады КАК Склады
|ГДЕ
| Склады.ЭтоГруппа = ЛОЖЬ
|УПОРЯДОЧИТЬ ПО
| ссылка ИЕРАРХИЯ
|";
Запр = новый запрос(ТекстЗапроса);
_ = запр.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
Пока _.Следующий() цикл
сообщить(_.наименование+" "+_.Уровень());
КонецЦикла;
И в результате я получаю все элементы со всех уровней, причем _.Уровень()) показывает, что уровень у них нулевой.
НО, что интересно если в запросе убрать условие, то выводятся элементы только первого уровня но правда с группами, а мне нужны без групп.
Я уже пробовал и так
ТекстЗапроса ="ВЫБРАТЬ
| Склады.Наименование КАК Наименование,
| Склады.Ссылка КАК Ссылка
|ИЗ
| (Выбрать
| Склады2.Наименование,
| Склады2.Ссылка КАК Ссылка
|ИЗ Справочник.Склады КАК Склады2
|ГДЕ
| Склады2.ЭтоГруппа = ЛОЖЬ ) КАК Склады
|УПОРЯДОЧИТЬ ПО
| Склады.Ссылка ИЕРАРХИЯ
|
| ";
И через всякие хитроумные соединения, результат один и тот же - все элементы, кроме групп, со всех уровней.
Я знаю, что можно использовать такой вариант и все будет работать правильно
ТекстЗапроса = "
|ВЫБРАТЬ
| Ссылка,
| Наименование
|ИЗ
| Справочник.Склады КАК Склады
|УПОРЯДОЧИТЬ ПО
| ссылка ИЕРАРХИЯ
|";
Запр = новый запрос(ТекстЗапроса);
_ = запр.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
Пока _.Следующий() цикл
Если _.Ссылка.ЭтоГруппа = ложь тогда
сообщить(_.наименование+" "+_.Уровень());
КонецЕсли;
КонецЦикла;
Но мне интересно, чисто для себя
не ужели если в запросе использовать ограничения ("ГДЕ"), то упорядочивание по иерархии не пашет