|
Получить дерево категорий запросом по товару | ☑ | ||
---|---|---|---|---|
0
apdate by
13.07.21
✎
10:34
|
Подскажите текст запроса
имеем в итерации товар необходимо получить все группы начиная от нулевого уровня до родителя товара |
|||
1
ДенисЧ
13.07.21
✎
10:37
|
В простом запросе - только
родитель, родитель.родитель... И так далее до максимального уровня вложенности |
|||
2
Йохохо
13.07.21
✎
10:38
|
до максимального уровня вложенности - 1
же |
|||
3
Мультук
гуру
13.07.21
✎
10:39
|
(0) Если нужен список именно ссылок на всех родителей, то нужно читать про транзитивные замыкания
https://infostart.ru/1c/articles/158512/ |
|||
4
apdate by
13.07.21
✎
10:40
|
РодительТовара = Товар.Родитель;
Пока РодительТовара <> Справочники.Номенклатура.ПустаяСсылка() Цикл куда то пишеу родителя РодительТовара = Родитель? КонецЦикла; т ак верно будет? |
|||
5
mistеr
13.07.21
✎
10:40
|
(0) ИТОГИ ПО Товар ИЕРАРХИЯ?
|
|||
6
apdate by
13.07.21
✎
10:41
|
(5) я уже в интерации
|
|||
7
apdate by
13.07.21
✎
10:41
|
+(6) ссылка на товар уже есть
|
|||
8
apdate by
13.07.21
✎
10:42
|
(4) простите набросал в уме ))) но суть думаю понятна? верно ли так будет?
|
|||
9
apdate by
13.07.21
✎
10:42
|
ааа блин а как получить родителя по номеру уровня? можно ли?
|
|||
10
ДенисЧ
13.07.21
✎
10:43
|
(9) нет
|
|||
11
mistеr
13.07.21
✎
10:45
|
(6) В чем ты? Не важно, вылезай оттуда и объясни толком, чего хочешь.
|
|||
12
apdate by
13.07.21
✎
10:46
|
(11)
хочу пример это Родитель = Товар.родитель; Пока Родитель <> Справочники.Номенклатура.ПустаяСсылка() Цикл //Пишу Родитель в ТЗ к примеру и ставлю число его уровня (дабы потом понимать кто папа а кто мама Родитель = Родитель.Родитель; КонецЦикла; |
|||
13
ДенисЧ
13.07.21
✎
10:47
|
(12) Хоти.
|
|||
14
apdate by
13.07.21
✎
10:47
|
(12) по идеии здесь я получу список групп в обратном порядке верно? затем как в ТЗ перетусить список на обратный порядок?
|
|||
15
ДенисЧ
13.07.21
✎
10:49
|
Я ни слова не скажу про методы сортировки ТЗ....
|
|||
16
dubolom
13.07.21
✎
10:52
|
(12) ВЫБОР КОГДА
Родитель = ЗНАЧЕНИЕ(Справочник.ВашСправочник.ПустаяСсылка) ТОГДА ЗНАЧЕНИЕ(Справочник.ВашСправочник.ПустаяСсылка) КОГДА Родитель.Родитель = ЗНАЧЕНИЕ(Справочник.ВашСправочник.ПустаяСсылка) ТОГДА ЗНАЧЕНИЕ(Справочник.ВашСправочник.ПустаяСсылка) ТОГДА Родитель ... Прописать для всех уровней иерархии, с запасом (вряд ли их больше 10) |
|||
17
dubolom
13.07.21
✎
10:53
|
Там есть ещё нюанс, насколько я помню - в запросе родитель пустой ссылки не пустая ссылка, а null. Надо учитывать.
|
|||
18
apdate by
13.07.21
✎
11:01
|
Родитель = Товар.родитель;
ДеревоГрупп = Новый ТаблицаЗначений; ДеревоГрупп.Колонки.Добавить("Группа"); ДеревоГрупп.Колонки.Добавить("Уровень"); Пока Родитель <> Справочники.Номенклатура.ПустаяСсылка() Цикл СтрДерева = ДеревоГрупп.Добавить(); СтрДерева.Группа = Родитель; СтрДерева.Уровень = Родитель.Уровень(); Родитель = Родитель.Родитель; КонецЦикла; ДеревоГрупп.Сортировать("Группа,Уровень","Уровень Возр"); что то ругается у меня на ДеревоГрупп.Сортировать("Группа,Уровень","Уровень Возр"); кричит Ошибка при вызове метода контекста (Сортировать) ДеревоГрупп.Сортировать("Группа,Уровень","Уровень Возр"); по причине: Несоответствие типов (параметр номер '2') Несоответствие типов (параметр номер '2') |
|||
19
apdate by
13.07.21
✎
11:01
|
+(18) что не так подскажите пожалуйста
|
|||
20
dubolom
13.07.21
✎
11:02
|
(19) Колонки типизировать надо для сортировки.
|
|||
21
apdate by
13.07.21
✎
11:03
|
(20) ДеревоГрупп.Колонки.Добавить("Уровень","Число");
так верно? |
|||
22
ДенисЧ
13.07.21
✎
11:04
|
(19) А ты чаще называй переменные ключевыми словами 1с, дождёшься - она из монитора вылезет и начнёт рукоприкладствовать
(20) в данном случае не обязательно |
|||
23
apdate by
13.07.21
✎
11:05
|
(22)+(19) Родитель? :-) ок переименовал
(22) (20) подскажите что сделать что не верно то? |
|||
24
ДенисЧ
13.07.21
✎
11:07
|
О да. Родитель - это совершенно не ключевое 1сное слово...
|
|||
25
acht
13.07.21
✎
11:08
|
(23) Заглянуть в синтакс-помощник, например
|
|||
26
apdate by
13.07.21
✎
11:08
|
Родитель_ = Товар.родитель;
ДеревоГрупп = Новый ТаблицаЗначений; ДеревоГрупп.Колонки.Добавить("ГруппаТовара"); ДеревоГрупп.Колонки.Добавить("УровеньГруппы"); Пока Родитель_ <> Справочники.Номенклатура.ПустаяСсылка() Цикл СтрДерева = ДеревоГрупп.Добавить(); СтрДерева.ГруппаТовара = Родитель_; СтрДерева.УровеньГруппы = Родитель_.Уровень(); Родитель_ = Родитель_.Родитель; КонецЦикла; ДеревоГрупп.Сортировать("ГруппаТовара,УровеньГруппы Возр"); Ругни нет и сортировки то-же ( |
|||
27
dubolom
13.07.21
✎
11:10
|
(26) Так у вас все значения колонки УровеньГруппы - единицы.
Цикл же доходит до самого верхнего уровня. |
|||
28
ДенисЧ
13.07.21
✎
11:10
|
ДеревоГрупп.Сортировать("ГруппаТовара,УровеньГруппы Возр");
Какую сортировку ты тут ожидал увидеть? Сначала по группе, а внутри её по её же уровню? |
|||
29
ДенисЧ
13.07.21
✎
11:11
|
(27) Чо??
|
|||
30
dubolom
13.07.21
✎
11:12
|
(29) Копчо. Код невнимательно читал.
|
|||
31
acht
13.07.21
✎
11:15
|
(28) Ты слишком многого хочешь от человека, у которого интересы - читать новости сидя на унитазе.
|
|||
32
apdate by
13.07.21
✎
11:17
|
(28) Спасибо все работает
Родитель_ = Товар.родитель; ОписаниеУровеньГруппы = Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(12,0)); ДеревоГрупп = Новый ТаблицаЗначений; ДеревоГрупп.Колонки.Добавить("ГруппаТовара"); ДеревоГрупп.Колонки.Добавить("УровеньГруппы",ОписаниеУровеньГруппы); Пока Родитель_ <> Справочники.Номенклатура.ПустаяСсылка() Цикл СтрДерева = ДеревоГрупп.Добавить(); СтрДерева.ГруппаТовара = Родитель_; СтрДерева.УровеньГруппы = Родитель_.Уровень(); Родитель_ = Родитель_.Родитель; КонецЦикла; ДеревоГрупп.Сортировать("УровеньГруппы Возр"); Подскажите как сделать то-же но одним запросом? (31) :-) |
|||
33
ДенисЧ
13.07.21
✎
11:17
|
(31) А когда их ещё читать? За компом работать надо. В крайнем случае эти сайты рассматривать...
|
|||
34
ДенисЧ
13.07.21
✎
11:17
|
(32) "Подскажите как сделать то-же но одним запросом?"
Я уже ответил, в самом начале ветки. |
|||
35
apdate by
13.07.21
✎
11:18
|
(28) думал что будет так же ка ки с методом Свернуть тогда если не указываю колонки то после свертки их не будет в цикле (
|
|||
36
mistеr
13.07.21
✎
11:19
|
(14) Если нужно в обратном порядке, сверх вниз, используй (5).
|
|||
37
apdate by
13.07.21
✎
11:20
|
(34) в (16) ? Прописать для всех уровней иерархии, с запасом (вряд ли их больше 10) (мне не подходит!)
я имел в виду так что бы не прописывать! иначе нафига мне тогда запрос? |
|||
38
dubolom
13.07.21
✎
11:21
|
(37) Какая у вас вообще формулировка задачи?
|
|||
39
apdate by
13.07.21
✎
11:21
|
(5) я бы заюзал это но, я не очень хочу переписывать запрос ну или дописывать я ж написал ниже что мне нужно получить список групп уже в итерации (в цикле)
|
|||
40
Йохохо
13.07.21
✎
11:22
|
(37) из метаданных возьми уровень вложенности и собери текст запроса "в интерации"
|
|||
41
ДенисЧ
13.07.21
✎
11:23
|
(39) Ты уж определись. В итерации тебе надо или в запросе...
|
|||
42
apdate by
13.07.21
✎
11:23
|
(38) я ж даже код рабочий предоставил (так как не могу устно обьяснить что хочу)
но попробую есть товар (ссылка) он лежит в гурппе Ц но группа Ц лежит в группе Б а группа Б в группе А ну а группа А нулевая так вот мне нужно имея только ссылку на товар получить его группы с ноля по уровень товара А Б Ц Товар |
|||
43
mistеr
13.07.21
✎
11:24
|
(39) Ну сделай отдельный запрос, в цикле. Тебя потом за это побьют, но если лень-матушка сильнее, что поделать.
|
|||
44
apdate by
13.07.21
✎
11:24
|
(43) ну так я не знаю как сделать этот запрос
|
|||
45
dubolom
13.07.21
✎
11:26
|
(42) ЕСТЬNULL(Родитель.Родитель...Родитель, ЗНАЧЕНИЕ(Справочник.ТвойСправочник.ПустаяСсылка)
Так n раз по убыванию вплоть до родителя первого уровня. Потом из этой таблицы вырезаешь строки с непустым значением группы |
|||
46
apdate by
13.07.21
✎
11:26
|
(41)
К пример есть результат выборки запроса лежит он в переменной Рез имеется код Для Каждого Товар из Рез Цикл Вот здесь уже лежит мой метод Родитель_ = Товар.родитель; ОписаниеУровеньГруппы = Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(12,0)); ДеревоГрупп = Новый ТаблицаЗначений; ДеревоГрупп.Колонки.Добавить("ГруппаТовара"); ДеревоГрупп.Колонки.Добавить("УровеньГруппы",ОписаниеУровеньГруппы); Пока Родитель_ <> Справочники.Номенклатура.ПустаяСсылка() Цикл СтрДерева = ДеревоГрупп.Добавить(); СтрДерева.ГруппаТовара = Родитель_; СтрДерева.УровеньГруппы = Родитель_.Уровень(); Родитель_ = Родитель_.Родитель; КонецЦикла; ДеревоГрупп.Сортировать("УровеньГруппы Возр"); можно ли в место моего кода получения групп товара но запросом КонецЦикла |
|||
47
apdate by
13.07.21
✎
11:26
|
(45) судя по этому лучше оставить как я написал?
|
|||
48
ДенисЧ
13.07.21
✎
11:27
|
(47) Боги... Сколько же раз надо повторять... (((
Хуже только антиваксеры... |
|||
49
dubolom
13.07.21
✎
11:28
|
(47) Так вы не объяснили, зачем вам именно запрос. Если надо, чтобы просто работало - оставляйте, конечно, а то ещё полдня с запросом прокопаетесь.
|
|||
50
apdate by
13.07.21
✎
11:30
|
(49) для того что бы поместить группы в XML и отправить в приложение На андроид да не важно куда отправить и все
мне нужно получить дерево категорий где лежит товар и поместить это добро в XML файл вот и пошел на форму дабы узнать можно ли простой запрос напистаь что бы получить это долбаное дерево ( но судя по предложеным вариантам запрос даже сложнее получается чем то что я написал :-) |
|||
51
apdate by
13.07.21
✎
11:31
|
что касаемо 950 я думал от этом но мне так лень лезть в тот запрос что получает товары
там запрос на большое кол-во строчек а я не люблю запросы ( |
|||
52
dubolom
13.07.21
✎
11:32
|
(50) Оставляйте, как есть, и не парьтесь, короче.
|
|||
53
apdate by
13.07.21
✎
11:32
|
+(51) 950 = (5)
|
|||
54
apdate by
13.07.21
✎
11:32
|
(52) ок спасибо
|
|||
55
mistеr
13.07.21
✎
11:38
|
(44)
ВЫБРАТЬ Номенклатура.Ссылка КАК Ссылка ИЗ Справочник.Номенклатура КАК Номенклатура ГДЕ Номенклатура.Ссылка = &Ссылка ИТОГИ ПО Ссылка ТОЛЬКО ИЕРАРХИЯ |
|||
56
dubolom
13.07.21
✎
11:39
|
(55) У человека только душевная гармония установилась. Не сбивайте, пожалуйста.
|
|||
57
apdate by
13.07.21
✎
11:40
|
(58) пипец )
Спасибо! |
|||
58
apdate by
13.07.21
✎
11:42
|
тьфу слепой! +(57) для (55) :-)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |