|
Как вывести группы справочника иерархически? | ☑ | ||
---|---|---|---|---|
0
lanc2233
30.01.15
✎
22:42
|
ТекстЗапроса =
"ВЫБРАТЬ | Номенклатура.Ссылка КАК Ссылка |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | Номенклатура.ПометкаУдаления = ЛОЖЬ | И Номенклатура.ЭтоГруппа = ИСТИНА |ИТОГИ ПО | Ссылка ИЕРАРХИЯ" ; Запрос = Новый Запрос(ТекстЗапроса); Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл // ... сообщить КонецЦикла; Пробовал разные варианты, вроде ОбходРезультатаЗапросаПоГруппировкам, ставить внутри условия вроде Если Выборка.ТипЗаписи() = ТипЗаписиЗапроса.ИтогПоИерархии Тогда КонецЕсли; Все время вывод не такой получается. Задача просто получить группы как в форме списка справочника. можете подсказать как это сделать? |
|||
1
Sereja
30.01.15
✎
23:02
|
ПоГруппировкамСИерархией (ByGroupsWithHierarchy)
Это надо в выбрать писать |
|||
2
Sereja
30.01.15
✎
23:03
|
Результат = Запрос.Выполнить();
Дерево = Результат.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией); |
|||
3
lanc2233
30.01.15
✎
23:03
|
(1) выбираются только группы нулевого уровня
|
|||
4
Sereja
30.01.15
✎
23:13
|
Так это ж дерево получается. Обходи сейчас дерево. Каждый узел дерева, и все там будет. Я скинул кусок рабочего кода
|
|||
5
lanc2233
30.01.15
✎
23:27
|
ТекстЗапроса =
"ВЫБРАТЬ | Номенклатура.Ссылка КАК Ссылка, | Номенклатура.ЭтоГруппа |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | Номенклатура.ПометкаУдаления = ЛОЖЬ | И Номенклатура.ЭтоГруппа = ИСТИНА |ИТОГИ ПО | Ссылка ТОЛЬКО ИЕРАРХИЯ" ; Запрос = Новый Запрос(ТекстЗапроса); Дерево = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией); ОбойтиПодстроки(Дерево.Строки); Процедура ОбойтиПодстроки(СтрокиДерева) Для Каждого Строка Из СтрокиДерева Цикл Сообщить(ДобавитьУровниТабуляции(Строка)+"("+Строка.Ссылка.Уровень() +") - "+ Строка.Ссылка); ОбойтиПодстроки(Строка.Строки); КонецЦикла; КонецПроцедуры Получается такой результат : http://savepic.su/4888939.png |
|||
6
lanc2233
30.01.15
✎
23:31
|
хочу добиться такого http://savepic.su/4913514.png
|
|||
7
Sereja
30.01.15
✎
23:31
|
(5) Так а что не так?
|
|||
8
Sereja
30.01.15
✎
23:32
|
(6) Так ты уже добился. Если это на форме надо, то кидай на форму табличное поле. Ставь на 1 колонке Иерирхию и грузи в него результат запроса
|
|||
9
lanc2233
30.01.15
✎
23:35
|
та мне не на форму, я xml-файл формирую программно.
на скриншоте элемент "2" только шесть раз выводится |
|||
10
lanc2233
30.01.15
✎
23:36
|
пять
|
|||
11
Sereja
30.01.15
✎
23:37
|
Дерево = Результат.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
Запись.ЗаписатьНачалоЭлемента("ТМЦ"); ОбойтиУровеньДерева(Дерево.Строки, Запись); Запись.ЗаписатьКонецЭлемента(); Запись.ЗаписатьКонецЭлемента(); Запись.Закрыть(); |
|||
12
Sereja
30.01.15
✎
23:37
|
Процедура ОбойтиУровеньДерева(Строки,Запись) Экспорт
Для Каждого Строка из Строки Цикл СсылкаНаЭлемент = Строка.Ссылка; Запись.ЗаписатьНачалоЭлемента("Номенклатура"); Если Строка.ЭтоГруппа = Истина Тогда Запись.ЗаписатьАтрибут("ЭтоГруппа", СокрЛП(Строка.ЭтоГруппа)); Запись.ЗаписатьАтрибут("Код", СокрЛП(Строка(СсылкаНаЭлемент.Код))); Запись.ЗаписатьАтрибут("Наименование", СокрЛП(СсылкаНаЭлемент.Наименование)); Запись.ЗаписатьАтрибут("Артикул", СокрЛП(Строка(СсылкаНаЭлемент.Артикул))); Запись.ЗаписатьАтрибут("Родитель", СокрЛП(Строка.Ссылка.Родитель)); // Запись.ЗаписатьАтрибут("УИД", СокрЛП(Строка(СсылкаНаЭлемент.УникальныйИдентификатор()))); Запись.ЗаписатьАтрибут("УИДРодитель", СокрЛП(Строка.Ссылка.Родитель.УникальныйИдентификатор())); // ОбойтиУровеньДерева(Строка.Строки, Запись); Запись.ЗаписатьКонецЭлемента(); ИначеЕсли Строка.ЭтоГруппа = Ложь Тогда Запись.ЗаписатьАтрибут("ЭтоГруппа", СокрЛП(Строка.ЭтоГруппа)); Запись.ЗаписатьАтрибут("Код", СокрЛП(Строка(СсылкаНаЭлемент.Код))); Запись.ЗаписатьАтрибут("Наименование", СокрЛП(СсылкаНаЭлемент.Наименование)); Запись.ЗаписатьАтрибут("Артикул", СокрЛП(Строка(СсылкаНаЭлемент.Артикул))); Запись.ЗаписатьАтрибут("Родитель", СокрЛП(Строка.Ссылка.Родитель)); Запись.ЗаписатьАтрибут("ПутьКФото", СокрЛП(Строка.ПутьКФото)); // Запись.ЗаписатьАтрибут("УИД", СокрЛП(Строка(СсылкаНаЭлемент.УникальныйИдентификатор()))); Запись.ЗаписатьАтрибут("УИДРодитель", СокрЛП(Строка.Ссылка.Родитель.УникальныйИдентификатор())); // Запись.ЗаписатьКонецЭлемента(); КонецЕсли; КонецЦикла; КонецПроцедуры |
|||
13
Sereja
30.01.15
✎
23:37
|
Этой процедурой пишу xml
|
|||
14
lanc2233
30.01.15
✎
23:41
|
(13) я не об этом спрашиваю.
на скриншоте1 - 16 строк на скриншоте2 - 8 строк. как получить на первом скриншоте такой-же результат как на втором? |
|||
15
lanc2233
31.01.15
✎
11:17
|
Актуально ..
|
|||
16
lanc2233
31.01.15
✎
19:51
|
up
|
|||
17
iceman2112
31.01.15
✎
20:33
|
стесняюсь спросить, а ты потом куда это xml файл?
|
|||
18
iceman2112
31.01.15
✎
20:43
|
Вообще в гугле и на той же мисте в книге знаний, такие запросы есть, вроде там не ссылка выбирается а родитель
|
|||
19
lanc2233
31.01.15
✎
20:51
|
на сайт.
уже несколько часов потратил на все что в гугле и перебор разных вариантов. Про вариант с родителем в запросе правда не помню был или нет. В принципе сейчас нашел возможность получить нормально, если есть хотя-бы один элемент в каждой папке. Как временный вариант проканает. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |