Перебор результата запроса в иерархии #607749


#0 by artprog
Добрый день. Получаю результат запроса методом Выгрузить. Подскажите, как получить этот резултат в виде: Родитель 0 -Родитель 1 и т.д. Т.е. чтобы перебирая строки я по порядку получал родительский элемент, затем его дочерние элементы
#1 by Ненавижу 1С
выгрузи в дерево
#2 by salvator
ОбходРезультатаЗапроса
#3 by fisher
Обходы результата запросов по группировкам и иерархиям кажись разжевывались в учебнике Митичкина по 8.1 Он даже в электронной версии есть и его можно в 5 мин у 1С смс-кой купить (вышлют на почту). Ну или бесплатно украсть :)
#4 by fisher
Не, вру. Новая его редакция под 8.1 уже под СКД заточена.
#5 by artprog
Уважаемые, напомню - я не 1сник.Пишу под .NET поэтому прошу проявите снисхождение. Вот набросал такой код в 1с: В результате мне вернулось только содержимое родительской группы, а как получить более вложенные  элементы?
#6 by butterbean
ГДЕ Номенклатура.Ссылка В ИЕРАРХИИ(&Родитель)
#7 by salvator
Только у ТабличноеПоле1 установи тип "Дерево значений"
#8 by salvator
+ Сорри, не в кассу. В верный ответ.
#9 by artprog
6,7 исправил на ГДЕ Номенклатура.Ссылка В ИЕРАРХИИ(&Родитель) Выбрал все подчиненные элементы, но беспорядочно элементы в перемешку с группами. Пробовал и "Таблица значений" и "Дерево значений" у ТабличноеПоле1
#10 by hhhh
ИТОГИ в запросе забыл.
#11 by artprog
Дописал: Теперь у меня как то так получилось: - --Элемент1 --Элемент2 --Элемент3 - --Элемент1 --Элемент2 - --Родитель1 --Родитель2 --Родитель3 И есть еще вариант - мне не столько важно, как это отображается на форме, сколько важно, как это выгружается запросом - потому что я буду через ком перебирать поочереди все строки запроса, и именно поэтому пытаюсь добиться, чтобы они шли в иерархически-правильном порядке.
#12 by salvator
...    Номенклатура.Родитель В ИЕРАРХИИ(&Родитель)    И НЕ Номенклатура.ЭтоГруппа ИТОГИ ПО    Ссылка ТОЛЬКО ИЕРАРХИЯ
#13 by butterbean
вместо ИТОГИ... напиши УПОРЯДОЧИТЬ ПО Ссылка ИЕРАРХИЯ
#14 by Alex S D
и не надо там никуда выгружать
#15 by fisher
Не надо ИТОГИ. И УПОРЯДОЧИТЬ ПО Ссылка ИЕРАРХИЯ тоже не надо (не по алфавиту будет). Просто добавь в конце АВТОУПОРЯДОЧИВАНИЕ и все.
#16 by artprog
так?: Работает так: но не по алфавиту.
#17 by fisher
Да, так. А выполнить и проверить рука не поднимается? :)
#18 by fisher
Только условие на родительскую группу тоже ж надо.
#19 by fisher
Можно и в запрос с итогами добавить автоупорядочивание и будет работать. Но для этой задачи итоги лишние.
#20 by artprog
(17-19) Спасибо! Теперь как надо. Только остался самый наверное главный вопрос. Как мне теперь результат этого запроса обойти по строкам? Таким мокаром не проходит: foreach (dynamic product in result)            {                MessageBox.Show(product.Наименование);            }
#21 by artprog
Невозможно привести COM-объект типа "System.__ComObject" к интерфейсному типу "System.Collections.IEnumerable". Операция завершилась со сбоем, поскольку вызов QueryInterface COM-компонента для интерфейса с IID "{496B0ABE-CDEE-11D3-88E8-00902754C43A}" возвратил ошибку "Интерфейс не поддерживается (Исключение из HRESULT: 0x80004002 (E_NOINTERFACE))" и COM-компонент не поддерживают вызовы IDispatch::Invoke для DISPID_NEWENUM.
#22 by le_
По индексам можно...
#23 by artprog
Код можешь подкинуть?
#26 by artprog
(23-25) у меня в result Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Поэтому не получается. Твой вариант работает если результат выгрузки список, я так понимаю. а у меня результат выгрузки - дерево значений. или я не прав?
#27 by le_
Дерево рекурсией обходить нужно. } } showrows(result.rows);
#28 by artprog
сделал вот так:        static void getpodstroka(dynamic result)        {            foreach (dynamic podstroka in result.Строки)            {            }        }
#29 by artprog
ВСЕМ УЧАСТВОВАВШИМ - БОЛЬШОЕ СПАСИБО!
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С