Имя: Пароль:
1C
 
Сортировка иерархического справочника в запросе
,
0 diesell
 
28.03.17
15:52
если запрос по справочнику принимает в качестве условия

|    Справочник.Номенклатура В ИЕРАРХИИ(&ВыбНом)

А ВыбНом является списком групп этого справочника.
Можно ли отсортировать результат по иерархии и по списку. Что бы вначале шла иерархия первого элемента списка групп, потом второго и т.д.
1 rabbidX
 
28.03.17
16:00
Если ВыбНом не упорядочен по какому-либо признаку, нужна нумерация строк.
2 diesell
 
28.03.17
16:04
(1) пример можно какой нибудь
3 dezss
 
28.03.17
16:07
(1) а разве есть разница, упорядочен он или нет?
4 1dvd
 
28.03.17
16:07
(3) +1

(0) в общем случае нельзя
5 dezss
 
28.03.17
16:10
(4) а почему нельзя?

упорядочить по
родитель,
номенклатура
6 FIXXXL
 
28.03.17
16:10
попробуй

"ВЫБРАТЬ
|    Номенклатура.Ссылка КАК Ссылка
|ИЗ
|    Справочник.Номенклатура КАК Номенклатура
|
|УПОРЯДОЧИТЬ ПО
|    Ссылка ИЕРАРХИЯ"
7 diesell
 
28.03.17
16:13
Там проблема в другом. Упорядовачивать надо
8 diesell
 
28.03.17
16:14
(7) случайно ушло.
Так вот, упорядочить надо по группам справочника разных уровней. Данные с регистра. Во входном списке могут быть и корневые группы, и средние. Так что по родителю не пойдет
9 1dvd
 
28.03.17
16:16
(5)
как запрос поймёт какая позиция у элемента в &ВыбНом?
10 diesell
 
28.03.17
16:17
пришлось программно сделать все.
11 Волшебник
 
модератор
28.03.17
16:17
УПОРЯДОЧИТЬ ПО Ссылка ИЕРАРХИЯ
12 dezss
 
28.03.17
16:18
(9) согласен...при глубокой иерархии не пойдет...

правильно в (6) и в (11)
13 dezss
 
28.03.17
16:19
(8) там есть одна тонкость, описанная в справке. Чтоб была иерархия, надо обязательно цеплять сам справочник левым соединением и выводить именно
Номенклатура.Ссылка, как показано в (6)
14 dezss
 
28.03.17
16:21
(13) Так что если твой "Справочник" не является Справочник.Номенклатура, то иерархии не получится.
15 diesell
 
28.03.17
16:23
(14) там все с регистров тянется
16 dezss
 
28.03.17
16:23
(15) цепляй Справочник.Номенклатура и будет тебе иерархия
17 rabbidX
 
29.03.17
10:26
(2) (3) (4)
  ВЫБРАТЬ
    Номенклатура.Ссылка,
    (ВЫБОР
        КОГДА Номенклатура.Родитель В (&ВыбНом)
            ТОГДА Номенклатура.Родитель
        КОГДА Номенклатура.Родитель.Родитель В (&ВыбНом)
            ТОГДА Номенклатура.Родитель.Родитель
        КОГДА Номенклатура.Родитель.Родитель.Родитель В (&ВыбНом)
            ТОГДА Номенклатура.Родитель.Родитель.Родитель
    КОНЕЦ).Код КАК РеквизитДляУпорядочивания
ИЗ
    Справочник.Номенклатура КАК Номенклатура
ГДЕ
    Номенклатура.Ссылка В ИЕРАРХИИ(&ВыбНом)

УПОРЯДОЧИТЬ ПО
    РеквизитДляУпорядочивания
18 rabbidX
 
29.03.17
10:37
Если реквизита нет, делаем из списка ВыбНом ТЗ: Первая колонка - номер строки, вторая - номенклатура. Выбираем ТЗ в запросе, потом соединяем со справочником Номенклатура внутренним соединением По Номенклатура.Родитель = ТЗ.Номенклатура Или  Номенклатура.Родитель.Родитель = ТЗ.Номенклатура Или Номенклатура.Родитель.Родитель.Родитель =  ТЗ.Номенклатура
И Упорядочить по ТЗ.НомерСтроки
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший