Имя: Пароль:
1C
1С v8
Как написать запрос, с условием, где параметр запроса входит в группу переменной
0 haggart
 
08.01.13
13:48
Смысл запроса такой.

ВЫБРАТЬ
НаборыПравDepartments.ГруппаДоступа
ИЗ
Справочник.НаборыПрав.Departments
ГДЕ
(&Department) в иерархии  НаборыПравDepartments.ГруппаДоступа

Как написать так, чтобы работал.
1 Живой Ископаемый
 
08.01.13
13:54
ничего не понятно
2 Wobland
 
08.01.13
13:55
НаборыПравDepartments.ГруппаДоступа в иерархии (&Department)

ничего не понятно
3 haggart
 
08.01.13
14:14
есть переменная запроса, тип которой Департамент.
есть параметр запроса, тип которой департамент.
переменная может быть группа.
Нужно проверить входит ли параметр в иерарахию переменной.
4 Wobland
 
08.01.13
14:15
(3) нет в запросе переменных
5 haggart
 
08.01.13
14:16
условно говоря можно написать так

ВЫБРАТЬ
НаборыПравDepartments.ГруппаДоступа
ИЗ
Справочник.НаборыПрав.Departments
ГДЕ
НаборыПравDepartments.ГруппаДоступа = &Department
или НаборыПравDepartments.ГруппаДоступа = &Department.Родитель
или НаборыПравDepartments.ГруппаДоступа = &Department.Родитель.Родитель
или НаборыПравDepartments.ГруппаДоступа = &Department.Родитель.Родитель.Родитель
или НаборыПравDepartments.ГруппаДоступа =&Department.Родитель.Родитель.Родитель.Родитель
....
И так до полного самоудовлетворения
6 dmpl
 
08.01.13
14:19
(3) Выбери все группы, входящие в иерархию этой переменной и проверь на равенство с &Department.
7 1Сергей
 
08.01.13
14:19
(5)

ЫБРАТЬ
НаборыПравDepartments.ГруппаДоступа
ИЗ
Справочник.НаборыПрав.Departments
ГДЕ
НаборыПравDepartments.ГруппаДоступа в иерархии (&Department)
8 Wobland
 
08.01.13
14:19
(5) а я тебе что сказал?
9 haggart
 
08.01.13
14:20
(7)
с точностью до наоборот!
10 Wobland
 
08.01.13
14:20
(9) -> (1)
11 Wobland
 
08.01.13
14:21
опиши задачу литературным русским языком
12 haggart
 
08.01.13
14:21
повторяю, мне нужна проверка что не группа в иерархии элемента, а элемент в иерархии группы!!!!
13 Wobland
 
08.01.13
14:22
(12) ссылка в иерархии?
14 dmpl
 
08.01.13
14:22
(12) См. (6).
15 haggart
 
08.01.13
14:23
есть набор прав, там пользователь настраивает группы департаментов, они получаются запросом...
в качестве параметра запроса у меня элемент, который я проверяю на вхождение в группу набора прав.
16 haggart
 
08.01.13
14:23
(14) как это сделать?
17 1Сергей
 
08.01.13
14:24
(9) тогда создай массив, впихни туда всех родителей &Department. А в запросе проверяй на вхождение в массив
18 haggart
 
08.01.13
14:25
(17) так и буду делать, думал есть человеческий подход...
19 1Сергей
 
08.01.13
14:26
(18) я, конечно, новичок в восьмерке. Но не понимаю почему (0) не работает
20 haggart
 
08.01.13
14:27
(19) я не новичек, но я тоже не понимаю почему (0) не работает :)))
21 dmpl
 
08.01.13
14:28
(16) Выбери нужную группу доступа и левым соединением прикрепи к ней справочник групп доступа по условию, что ссылка из левого соединения в иерархии нужной группы доступа. Получишь список всех групп, входящих в иерархию этой группы. Ну а дальше уже банальное равенство.
22 dmpl
 
08.01.13
14:30
Но вообще это лучше отдельным регистром сведений решать, чтобы каждый раз левое соединение не выполнять.
23 acsent
 
08.01.13
14:33
НаборыПравDepartments.ГруппаДоступа В (&Department_СписокГрупп)

где Department - все группы &Department
24 Aprobator
 
08.01.13
14:34
Имхается мне, что у ГруппаДоступа нефига не тот же тип значения, что и у параметра Department. Другой причины не вижу.
25 1Сергей
 
08.01.13
14:34
Ну или ВТ забахать
26 dmpl
 
08.01.13
14:42
(25) Если это где-то в RLS - без регистра будут страшные тормоза.
27 haggart
 
08.01.13
14:45
Сделал проверкой на родитель.родитель.родитель до 10 уровня вложенности и быстро работает.  Так и оставлю.
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший