Имя: Пароль:
1C
1С v8
Запрос по иерархии
,
0 Sharmon
 
22.10.13
10:36
Запрос. Нужно сделать проверку по подразделению (на сам элемент или все ниже по иерархии). Но работает как-то некорректно. Срабатывает и на элементы выше по иерархии (((

    Запрос.Текст = "ВЫБРАТЬ
                   |    УполномоченныеЛица.УполномоченноеЛицо,
                   |    УполномоченныеЛица.ЗаКогоПодписывает,
                   |    УполномоченныеЛица.НомерДатаПриказа,
                   |    УполномоченныеЛица.Подразделение,
                   |    ВЫБОР
                   |        КОГДА УполномоченныеЛица.Пользователь = ЗНАЧЕНИЕ(Справочник.ФизическиеЛица.ПустаяСсылка)
                   |            ТОГДА 0
                   |        ИНАЧЕ 1
                   |    КОНЕЦ КАК ТипПользователя
                   |ИЗ
                   |    РегистрСведений.УполномоченныеЛицаОрганизаций КАК УполномоченныеЛица
                   |ГДЕ
                   |    УполномоченныеЛица.Организация = &Организация
                   |    И УполномоченныеЛица.Пользователь В(&Пользователи)
                   |    И УполномоченныеЛица.Подразделение В ИЕРАРХИИ(&Подразделение)
                   |
                   |УПОРЯДОЧИТЬ ПО
                   |    ТипПользователя";
1 Sharmon
 
22.10.13
10:38
Точнее даже наоборот, срабатывает только выше по иерархии. А нужно наоборот
2 Maxus43
 
22.10.13
10:40
Не может быть чтобы выше работало
3 Sharmon
 
22.10.13
10:45
Ну вот так работает. Голову сломал
4 Defender aka LINN
 
22.10.13
10:49
(3) Все просто - ты нам врешь.
5 Maxus43
 
22.10.13
10:49
Итоги по  УполномоченныеЛица.Подразделение
иерархические сделай в консоли, погляди как будет, имхо путаешь что-то
6 Sharmon
 
22.10.13
10:50
Вот для отладки упростил запрос (убрал пока все лишнее):
ВЫБРАТЬ
    УполномоченныеЛица.УполномоченноеЛицо,
    УполномоченныеЛица.ЗаКогоПодписывает,
    УполномоченныеЛица.НомерДатаПриказа,
    УполномоченныеЛица.СМ_Подразделение
ИЗ
    РегистрСведений.УполномоченныеЛицаОрганизаций КАК УполномоченныеЛица
ГДЕ
    УполномоченныеЛица.Организация = &Организация
    И УполномоченныеЛица.СМ_Подразделение В ИЕРАРХИИ(&Подразделение)

Возвращает в консоли запросов все выше по иерархии
7 Defender aka LINN
 
22.10.13
10:51
(5) Как раз итоги все, что выше, и подтянут.
А аффтар нам тут мозг пудрит
8 Maxus43
 
22.10.13
10:51
скрин справочника и результата в консоли. Ну не верим мы
9 Sharmon
 
22.10.13
10:54
Как тут скрин прикреплять? )
10 Defender aka LINN
 
22.10.13
10:54
(9) Ссылку на файл
11 Maxus43
 
22.10.13
10:57
(7) это да, но другие поля будут только в "ниже" по иерархии, в остальных группах выше пустые, и будет видно что работает на "ниже")
12 Sharmon
 
22.10.13
10:58
13 Sharmon
 
22.10.13
11:00
Скрин справочника:
http://files.mail.ru/102B17B9F03F4467998ECD4784DB7CF0
14 Maxus43
 
22.10.13
11:01
15 Sharmon
 
22.10.13
11:01
Нужно что бы при данных параметрах запроса выводило УСП и все что ниже по иерархии
16 Sharmon
 
22.10.13
11:02
17 Maxus43
 
22.10.13
11:04
И? результат по УСП в запросе, всё правильно
18 Бледно Золотистый
 
22.10.13
11:04
(16) И где здесь выше по иерархии?
19 Sharmon
 
22.10.13
11:05
Да. Но если я выберу самый верхний уровень в справочнике, мне выведет то же самое (а должен быть пустой результат). Если же выбираю ниже по иерархии - то пустой результат
20 Maxus43
 
22.10.13
11:05
У тебя в регистре нет этих данных, конечно не выводит.
задача (15) к запросу отношения не имеет жеж
21 Бледно Золотистый
 
22.10.13
11:05
(19) Все верно.
22 Maxus43
 
22.10.13
11:06
>>если я выберу самый верхний уровень в справочнике
дак опять правильно, УСП ниже самого верхнего
23 Defender aka LINN
 
22.10.13
11:07
Аффтар нуп и опозорился.
24 Maxus43
 
22.10.13
11:08
Имхо автор просто плохо понимает что значит В ИЕРАРХИИ, всё правильно работает
25 Sharmon
 
22.10.13
11:08
Блин. Все понял. Т.е. нужно тогда в запросе подтягивать левым соединением справочник "Подразделения", а в нем уже делать условие по Иерархии?
26 Salimbek
 
22.10.13
11:11
(25) Ну это смотря что тебе нужно в итоге. Вполне может быть что ты прав.
27 Defender aka LINN
 
22.10.13
11:13
(25) А как ты его соединишь, если не секрет?
Ты вообще задачу-то опиши.
28 Sharmon
 
22.10.13
11:14
Мне нужно получить все элементы справочника "Подразделения", которые ниже по иерархии измерения "Подразделение" в регистре сведений "УполномоченныеЛицаОрганизаций"
(по нужной организации конечно)
29 Sharmon
 
22.10.13
11:15
Т.е. сейчас запрос ниже работает, но подразделений очень много стало, и трудоемко добавлять каждое. Хотелось бы в регистр добавить только узловое подразделение.

Запрос.Текст = "ВЫБРАТЬ
                   |    УполномоченныеЛица.УполномоченноеЛицо,
                   |    УполномоченныеЛица.ЗаКогоПодписывает,
                   |    УполномоченныеЛица.НомерДатаПриказа,
                   |    УполномоченныеЛица.СМ_Подразделение,
                   |    ВЫБОР
                   |        КОГДА УполномоченныеЛица.Пользователь = ЗНАЧЕНИЕ(Справочник.ФизическиеЛица.ПустаяСсылка)
                   |            ТОГДА 0
                   |        ИНАЧЕ 1
                   |    КОНЕЦ КАК ТипПользователя
                   |ИЗ
                   |    РегистрСведений.УполномоченныеЛицаОрганизаций КАК УполномоченныеЛица
                   |ГДЕ
                   |    УполномоченныеЛица.Организация = &Организация
                   |    И УполномоченныеЛица.Пользователь В(&Пользователи)
                   |    И УполномоченныеЛица.СМ_Подразделение В (&Подразделение)
                   |
                   |УПОРЯДОЧИТЬ ПО
                   |    ТипПользователя";
        
    УстановитьПривилегированныйРежим(Истина);
30 Maxus43
 
22.10.13
11:19
в соединение условие нельзя в ИЕРАРХИИ.
Тебе надо в вт поместить сначала таблицу подразделений а потом соеденить по ИСТИНА просто
31 Sharmon
 
22.10.13
11:25
Спасибо. Буду делать по последнему совету
32 Sharmon
 
22.10.13
11:39
Не совсем понял фразу "Соединить по ИСТИНА". Вот такой запрос получился, осталось соединить:

Запрос.Текст = "ВЫБРАТЬ
                   |    Подразделения.Ссылка
                   |ПОМЕСТИТЬ ИерархияПодразделения
                   |ИЗ
                   |    Справочник.Подразделения КАК Подразделения
                   |ГДЕ
                   |    Подразделения.Ссылка В ИЕРАРХИИ(&Подразделение)
                   |;
                   |
                   |////////////////////////////////////////////////////////////////////////////////
                   |ВЫБРАТЬ
                   |    УполномоченныеЛица.УполномоченноеЛицо,
                   |    УполномоченныеЛица.ЗаКогоПодписывает,
                   |    УполномоченныеЛица.НомерДатаПриказа,
                   |    УполномоченныеЛица.СМ_Подразделение,
                   |    ВЫБОР
                   |        КОГДА УполномоченныеЛица.Пользователь = ЗНАЧЕНИЕ(Справочник.ФизическиеЛица.ПустаяСсылка)
                   |            ТОГДА 0
                   |        ИНАЧЕ 1
                   |    КОНЕЦ КАК ТипПользователя
                   |ИЗ
                   |    РегистрСведений.УполномоченныеЛицаОрганизаций КАК УполномоченныеЛица,
                   |    ИерархияПодразделения КАК ИерархияПодразделения
                   |ГДЕ
                   |    УполномоченныеЛица.Организация = &Организация
                   |    И УполномоченныеЛица.Пользователь В(&Пользователи)
                   |
                   |УПОРЯДОЧИТЬ ПО
                   |    ТипПользователя";
33 Maxus43
 
22.10.13
11:45
соединяй левым соединением РегистрСведений.УполномоченныеЛицаОрганизаций и ВТ, условие соединения Истина
34 Maxus43
 
22.10.13
11:46
и поле УполномоченныеЛица.СМ_Подразделение тяни из ВТ
35 Sharmon
 
22.10.13
11:51
"условие соединения Истина" - как это установить? В условиях связи нужно выбрать поле. "Истина" - написать не получается? Пробовал и поле Истина добавлять
36 Sharmon
 
22.10.13
11:52
Все получилось. Спасибо!!!!
2 + 2 = 3.9999999999999999999999999999999...