Имя: Пароль:
1C
 
СКД корректировка запроса программно
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) Проще уж тогда:

ГДЕ Пользователь = &ТекущийПользователь ИЛИ &ТекущийПользователь = ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка)

В параметр передавать или текущего пользователя или пустую ссылку.