Имя: Пароль:
1C
1С v8
отбор иерархия
, , ,
0 legol90
 
18.07.17
13:09
Пишу код:
Результат.Загрузить(ТаблицаЗначений);
Отбор = Новый Структура();
Отбор.Вставить("Номенклатура",Справочники.Номенклатура.ВыбратьИерархически("Родитель", Справочники.Номенклатура.НайтиПоКоду("Код"));  РезазультатСОтбором = Результат.НайтиСтроки(Отбор);
Для Каждой строки из РезазультатСОтбором Цикл
//......
КонецЦикла;
Подскажите пожалуйста, как будет правильно записать отбор по номенклаиуре в иерархии?
1 1dvd
 
18.07.17
13:10
Отбор.Вставить("Номенклатура",Справочники.Номенклатура.ВыбратьИерархически("Родитель", Справочники.Номенклатура.НайтиПоКоду("Код"));

Вот это очень сильно! на 5 баллов
2 legol90
 
18.07.17
13:12
(1) знаю что не правильно, вот и обратился, может кто что подскажет?
3 Рэйв
 
18.07.17
13:12
(0) ты точно это на 1С писал?
4 1dvd
 
18.07.17
13:12
(2) Результат - это что? Таблица значений? Табличная часть?
5 legol90
 
18.07.17
13:15
(4) таблицаЗначений
6 1dvd
 
18.07.17
13:16
(5) ок. Значит, тебе нужно выбрать Из ТаблицаЗначений те строки, в которых Номенклатура входит в некую группу?
7 legol90
 
18.07.17
13:17
(6) так точно
8 1dvd
 
18.07.17
13:19
(7) вижу как минимум два варианта:
1. Простой перебор с условием. Писать быстро, работает медленно
2. Запросом. Писать немного сложнее, но будет работать в разы быстрее и это будет более правильный вариант
9 legol90
 
18.07.17
13:25
а можно о первом варианте по подробней
10 1dvd
 
18.07.17
13:28
Для Каждого СтрокаТЗ Из ТаблицаЗначений Цикл

    Если СтрокаТЗ.Номенклатура.ПринадлежитЭлементу(НоменклатураГруппа) Тогда
11 legol90
 
18.07.17
13:46
(10) У меня почему то этот вариант  не работал раньше, вот и начал химичить, сейчас попробую
12 1dvd
 
18.07.17
13:46
(11) Через НайтиСтроки не получится, там условие только на равенство
13 organizm
 
18.07.17
14:32
удали все, напиши запрос.