|
СКД корректировка запроса программно | ☑ | ||
---|---|---|---|---|
0
Coldboy
24.02.16
✎
11:03
|
Здравствуйте. Нужно сделать, чтобы если у пользователя нет админской роли, отчет показывал, данные только по этому пользователю, а если есть роль, то всех пользователей. Думал, программно установить отбор, при открытии, допустим формы, но отбор можно изменить и все увидеть. Думаю, надо в запросе будет добавить, выборку по этому параметру, и программно подставить параметр. Вопрос как программно в запрос запихнуть это условие?
|
|||
1
geek
24.02.16
✎
11:10
|
РАЗРЕШЕННЫЕ не взлетит?
|
|||
2
mikecool
24.02.16
✎
11:12
|
(0) добавь ограничение в сам исходный запрос
(1) для этого рлс надо писать |
|||
3
aleks_default
24.02.16
✎
11:14
|
"Вопрос как программно в запрос запихнуть это условие?"-
написать текст |
|||
4
Coldboy
24.02.16
✎
11:14
|
(2) а пример можно данного ограничения?
|
|||
5
Coldboy
24.02.16
✎
11:15
|
(3) пример можно, как получить данные текста запроса их скорректировать ?
|
|||
6
aleks_default
24.02.16
✎
11:22
|
Где Запасы.Регистратор.Автор<>&ТекущийПользователь
|
|||
7
ЧеловекДуши
24.02.16
✎
11:24
|
(0) Используй Модуль отчета, предопределенную функцию "ПриКомпоновкеРезультата"
А уж как манипулировать запросом, можешь сам догадаться. Но есть хитрость. Если планируется в обоих запросах использовать различные параметры и отборы, то лучше всего в Макет положить Запрос "Шаблон", содержащий все параметры. А в модуле подставлять нужный. Хотя в твоем случае даже такое шаманство лишнее, хватит и предопределять параметры и нужным образом обрабатывать в макете СКД, на уровне запроса. :) http://www.miko.ru/blogs/metalblog/138/ Пример можно взять такой, только ТЗ не нужно подставлять. А остальное почти схоже http://1cskd.ru/2014/06/smena-tipa-nabora-dannyx-skd-s-soxraneniem-polej/ |
|||
8
Coldboy
24.02.16
✎
11:29
|
(6) не суть такая, что если у тебя админиские права, это условие вообще не нужно, и тебе нужно показать данные, а если нет админских прав, то условие ГДЕ Пользователь = &ТекущийПользователь
|
|||
9
Coldboy
24.02.16
✎
11:30
|
(7) как программно установить параметры, для запроса я знаю. А вот как программно добавить условие в запрос, если нужно вот это я спрашиваю.
|
|||
10
Tateossian
24.02.16
✎
11:34
|
(9) Это называется "Динамическое формирование запроса". Это уже вот это:
ТекстЗапроса = СгнеритьТекстСПараметрамиИ(); НаборДанных = СхемаКомпоновкиДанных.НаборыДанных.Добавить(Тип("НаборДанныхЗапросСхемыКомпоновкиДанных")); НаборДанных.Имя = "НаборДанных1"; НаборДанных.ИсточникДанных = "ИсточникДанных"; НаборДанных = СхемаКомпоновкиДанных.НаборыДанных.НаборДанных1; НаборДанных.АвтоЗаполнениеДоступныхПолей = Ложь; НаборДанных.Запрос = ТекстЗапроса; |
|||
11
Coldboy
24.02.16
✎
11:36
|
(10) здесь добавляется, а не подменяется предопреленный скд запрос правильно я понимаю, а можно подменить ?
|
|||
12
samozvanec
24.02.16
✎
11:39
|
(11) там набор уже будет и у него будет текст. с текстом работать как обычно
|
|||
13
Coldboy
24.02.16
✎
11:55
|
пока не нашел и не увидел четкого решения, сделал по старинке. поставил условие В(&Параметр), а в него передаю либо 1 значение, либо массив всех пользователей.
|
|||
14
ЧеловекДуши
24.02.16
✎
11:56
|
(9) Зачем? Пиши
"Я_Заглушка = 0" - Делаешь так "Я_Заглушка = 1" - Делаешь по другому. Даже текст запроса не надо трогать :) |
|||
15
ЧеловекДуши
24.02.16
✎
11:58
|
+(8) Для примера, для наглядности
ГДЕ (&Я_Адмнистратор = 0 И Пользователь = &ТекущийПользователь Или &Я_Адмнистратор = 1) А уже значения параметра "Я_Адмнистратор", назначаешь в "ПриКомпоновкеРезультата" Пользователь даже и духом не чует, что Отчет с секретом :) |
|||
16
ЧеловекДуши
24.02.16
✎
11:59
|
+(15) Так же там же можешь назначить значение "ТекущийПользователь"
|
|||
17
ЧеловекДуши
24.02.16
✎
12:01
|
(13) Фантазии нет, печалько :)
|
|||
18
Tateossian
24.02.16
✎
12:06
|
(12) Пожалуйста, установи текст запроса. И набор даже добавлять не надо, так как он есть. Делов-то.
|
|||
19
Tateossian
24.02.16
✎
12:06
|
(18) НаборДанных.Запрос = ТекстЗапроса;
|
|||
20
ЧеловекДуши
24.02.16
✎
12:10
|
(19) Параметры думаешь сами создаются? :)
|
|||
21
Necessitudo
24.02.16
✎
12:34
|
Зачем вообще тест запроса динамически править??? Прям в запросе что нельзя значение параметра анализировать?
|
|||
22
ЧеловекДуши
24.02.16
✎
12:37
|
(21) Для ТС, это слишком просто, ему бы извращение :)
|
|||
23
Coldboy
24.02.16
✎
13:08
|
(15) а я так в принципе и сделал ?
|
|||
24
samozvanec
24.02.16
✎
13:09
|
(18) спасибо, обойдусь как-нибудь
|
|||
25
EvgeniuXP
25.02.16
✎
00:44
|
РЛС - разрешенные - ничего сложного
|
|||
26
patria0muerte
25.02.16
✎
05:59
|
(15) Проще уж тогда:
ГДЕ Пользователь = &ТекущийПользователь ИЛИ &ТекущийПользователь = ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка) В параметр передавать или текущего пользователя или пустую ссылку. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |