Имя: Пароль:
1C
1С v8
как получить в ЗАПРОСЕ уровень() ?
,
0 DES
 
14.02.17
21:41
Выбрать подразделение.Уровень() из справочник.подразделения

Дело в том что элементы на разных уровнях, я мне нужно сгруппировать их  по 2 уровню.

Возможно это в Запросе ?
1 trooba
 
14.02.17
21:43
(0) Владелец.владелец=Неопределено?
2 z80a
 
14.02.17
21:44
Добавить реквизит уровень
3 trooba
 
14.02.17
21:46
(1) ГДЕ владелец.владелец=Неопределено
4 trooba
 
14.02.17
21:49
(3) Стоп, вот так: ГДЕ
подразделение.Родитель.Родитель = ЗНАЧЕНИЕ(Справочник.подразделение.ПустаяСсылка)
5 Amra
 
14.02.17
21:50
(1) Ты хотел сказать Родитель, а не Владелец
6 trooba
 
14.02.17
21:51
(5) +1
7 DES
 
14.02.17
22:00
не, наверно не дообъяснил.
элементы находятся на разных уровнях
, а мне нужно их сгруппировать по 2 (или 3) уровню.
т.е. если уровень 3 - то его учесть, если 5- то подняться на 3 уровень и его учесть.
8 mkalimulin
 
14.02.17
22:25
(0) Используй постобработку. 1С-овский язык запросов мало что умеет делать с иерархией.
9 vi0
 
15.02.17
07:41
(7) тебе и говорят, используй родителя, для определения уровня
а дальше уже группируй или что там тебе надо
10 1dvd
 
15.02.17
08:05
При 3-х уровневом справочнике


ВЫБРАТЬ
    Контрагенты.Ссылка,
    ВЫБОР
        КОГДА Контрагенты.Родитель = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
            ТОГДА 1
        ИНАЧЕ NULL
    КОНЕЦ КАК Уровень
ПОМЕСТИТЬ Уровень1
ИЗ
    Справочник.Контрагенты КАК Контрагенты
ГДЕ
    Контрагенты.ЭтоГруппа
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Контрагенты.Ссылка,
    ВЫБОР
        КОГДА НЕ Уровень1.Уровень ЕСТЬ NULL
            ТОГДА Уровень1.Уровень + 1
        ИНАЧЕ 1
    КОНЕЦ КАК Уровень
ПОМЕСТИТЬ Уровень2
ИЗ
    Справочник.Контрагенты КАК Контрагенты
        ЛЕВОЕ СОЕДИНЕНИЕ Уровень1 КАК Уровень1
        ПО Контрагенты.Родитель = Уровень1.Ссылка
ГДЕ
    Контрагенты.ЭтоГруппа
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Контрагенты.Ссылка,
    ВЫБОР
        КОГДА НЕ Уровень2.Уровень ЕСТЬ NULL
            ТОГДА Уровень2.Уровень + 1
        ИНАЧЕ 1
    КОНЕЦ КАК Уровень
ИЗ
    Справочник.Контрагенты КАК Контрагенты
        ЛЕВОЕ СОЕДИНЕНИЕ Уровень2 КАК Уровень2
        ПО Контрагенты.Родитель = Уровень2.Ссылка
11 1dvd
 
15.02.17
08:14
или вот так проще

ВЫБРАТЬ
    Контрагенты.Ссылка,
    1 КАК Уровень
ПОМЕСТИТЬ Уровни
ИЗ
    Справочник.Контрагенты КАК Контрагенты
ГДЕ
    Контрагенты.ЭтоГруппа
    И Контрагенты.Родитель = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    Контрагенты.Ссылка,
    2
ИЗ
    Справочник.Контрагенты КАК Контрагенты
ГДЕ
    Контрагенты.ЭтоГруппа
    И НЕ Контрагенты.Родитель = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
    И Контрагенты.Родитель.Родитель = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    Контрагенты.Ссылка,
    3
ИЗ
    Справочник.Контрагенты КАК Контрагенты
ГДЕ
    Контрагенты.ЭтоГруппа
    И НЕ Контрагенты.Родитель = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
    И НЕ Контрагенты.Родитель.Родитель = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
    И Контрагенты.Родитель.Родитель.Родитель = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Контрагенты.Ссылка,
    ВЫБОР
        КОГДА НЕ Уровни.Уровень ЕСТЬ NULL
            ТОГДА Уровни.Уровень + 1
        ИНАЧЕ 1
    КОНЕЦ КАК Уровень
ИЗ
    Справочник.Контрагенты КАК Контрагенты
        ЛЕВОЕ СОЕДИНЕНИЕ Уровни КАК Уровни
        ПО Контрагенты.Родитель = Уровни.Ссылка
12 DailyLookingOnA Sunse
 
15.02.17
10:03
Смотреть публикации ildarovich, там есть.
13 DES
 
17.02.17
08:30
(11) Спс, попробую.
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший