Имя: Пароль:
1C
1С v8
Использование рекурсии при записи в справочник
0 bUbA
 
28.10.13
14:27
Запросом выбрал нужную номенклатуру из справочника, результат выгрузил ОбходРезультатаЗапроса.ПоГруппировкамСИерархией. Теперь этот результат записываю в другой справочник в таком же виде, в каком он был в первом (т.е. ввиде дерева, по папкам). Но поле родителя всегда имеет тип Неопределено, из-за чего и записывается в новый справочник все в один уровень, без папок. В чем причина может быть?
1 shuhard
 
28.10.13
14:28
(0)[В чем причина может быть?]
в кривом коде
ибо нельзя в один проход это реализовать
2 Wobland
 
28.10.13
14:28
а что такое рекурсия?
3 bUbA
 
28.10.13
14:33
(1) но при выгрузке запроса в дерево поле Родитель разве не должно быть заполнено?
4 1dvd
 
28.10.13
14:35
(2) это когда с помощью машины времени зачинаешь сам себя
5 Михаил Козлов
 
28.10.13
14:35
Должно быть, но Вы можете записывать элемент, не записав нужного родителя.
6 Jolly Roger
 
28.10.13
14:36
(0) ОбменДанными.Загрузка = истина
7 1dvd
 
28.10.13
14:36
можно и без рекурсии, кстати
8 bUbA
 
28.10.13
14:51
(5) я просто запросом выбираю нужные поля

Запрос.Текст = "ВЫБРАТЬ
               |    Номенклатура.Ссылка,
               |    Номенклатура.Код,
               |    Номенклатура.Артикул,
               |    Номенклатура.БазоваяЕдиница,
               |    Номенклатура.Наименование,
               |    Номенклатура.ПолноеНаименование,
               |    Номенклатура.Родитель КАК Родитель
               |ИЗ
               |    Справочник.Номенклатура КАК Номенклатура
               |ГДЕ
               |    Номенклатура.ВидТМЦ = &ВидТМЦ
               |    И Номенклатура.ПометкаУдаления = ЛОЖЬ;
дзНоменклатура = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);

В результате у строки получается 2 поля родителя, одно заполненное, которое Номенклатура.Родитель в запросе, а второе пустое, которое Неопределено. И используется при записи то, которое Неопределено.
9 Михаил Козлов
 
28.10.13
14:52
а в ИТОГИ в запросе что стоит?
10 Капюшон
 
28.10.13
14:57
(2)вы не можете не знать этого.
11 НЕА123
 
28.10.13
14:57
ну, родителя-то надо конкретизировать - Мама или Папа.
12 1dvd
 
28.10.13
14:58
(8) синхронизация по какому полю идёт? по Коду?
13 bUbA
 
28.10.13
15:03
добавил

|ИТОГИ
|    КОЛИЧЕСТВО(Наименование)
|ПО
|    Родитель ИЕРАРХИЯ";

но на результат это не повлияло
14 1dvd
 
28.10.13
15:09
телепатирую

Если Выборка.ТипЗаписи() = ТипЗаписиЗапроса.ИтогПоГруппировке Тогда
15 bUbA
 
28.10.13
15:18
(14) Выборка.ТипЗаписи() = Неопределено
16 1dvd
 
28.10.13
15:19
(15) мало кода
17 hhhh
 
28.10.13
15:25
(15) ну а каким способом вы из родителя справочника Номенклатура, получаете родителя другого справочника?
18 bUbA
 
28.10.13
15:47
(17) родителя другого справочника я никаким способом не получаю, потому что здесь родителем выступают папки в справочнике Номенклатура
19 hhhh
 
28.10.13
15:53
(18) родитель имеет тот же тип что и сам элемент. Не может родитель быть папкой Номенклатуры.
20 bUbA
 
28.10.13
16:10
(19) у родителя, которого я записываю тип справочник Номенклатура, а у второго родителя, который после выгрузки в дерево получается, тип то Неопределено, то СтрокаДереваЗначений
21 hhhh
 
28.10.13
16:13
(20) вы пишете "результат записываю в другой справочник". В другом справочнике не может быть родитель типа справочник Номенклатура.
22 User_Agronom
 
28.10.13
16:16
(2) Когда подпрограмма вызывает сама себя.

Код кривой. Определите порядок записи (порядок создания родителей и элементов. Должно идти от корня)

Я бы действительно сделал бы рекурсией: но тут не писано про соответствие элементов справочников. Или это в двух разных базах?
23 vinogradъ
 
28.10.13
16:20
(0) выгрузить с уровнем и родителем, отсортировать по уровню и записывать в этом порядке не предлагали?
24 ptiz
 
28.10.13
17:03
Итоги По
Ссылка ИЕРАРХИЯ
25 НЕА123
 
29.10.13
07:51
(20)
>тип то Неопределено, то СтрокаДереваЗначений
(11)
26 Лефмихалыч
 
29.10.13
08:17
(1) да можно, нужно просто созданных родителей запоминать и правильно использовать
27 Maggie
 
29.10.13
09:23
|    И Номенклатура.ЭтоГруппа = ЛОЖЬ
УПОРЯДОЧИТЬ ПО
    Ссылка
ИТОГИ ПО
    Родитель ИЕРАРХИЯ
АВТОУПОРЯДОЧИВАНИЕ