СКД корректировка запроса программно #766072


#0 by Coldboy
Здравствуйте. Нужно сделать, чтобы если у пользователя нет админской роли, отчет показывал, данные только по этому пользователю, а если есть роль, то всех пользователей. Думал, программно установить отбор, при открытии, допустим формы, но отбор можно изменить и все увидеть. Думаю, надо в запросе будет добавить, выборку по этому параметру, и программно подставить параметр. Вопрос как программно в запрос запихнуть это условие?
#1 by geek
РАЗРЕШЕННЫЕ не взлетит?
#2 by mikecool
добавь ограничение в сам исходный запрос для этого рлс надо писать
#3 by aleks_default
"Вопрос как программно в запрос запихнуть это условие?"- написать текст
#4 by Coldboy
а пример можно данного ограничения?
#5 by Coldboy
пример можно, как получить данные текста запроса их скорректировать ?
#6 by aleks_default
Где Запасы.Регистратор.Автор<>&ТекущийПользователь
#7 by ЧеловекДуши
Используй Модуль отчета, предопределенную функцию "ПриКомпоновкеРезультата" А уж как манипулировать запросом, можешь сам догадаться. Но есть хитрость. Если планируется в обоих запросах использовать различные параметры и отборы, то лучше всего в Макет положить Запрос "Шаблон", содержащий все параметры. А в модуле подставлять нужный. Хотя в твоем случае даже такое шаманство лишнее, хватит и предопределять параметры и нужным образом обрабатывать в макете СКД, на уровне запроса. :) Пример можно взять такой, только ТЗ не нужно подставлять. А остальное почти схоже
#8 by Coldboy
не суть такая, что если у тебя админиские права, это условие вообще не нужно, и тебе нужно показать данные, а если нет админских прав, то условие ГДЕ Пользователь = &ТекущийПользователь
#9 by Coldboy
как программно установить параметры, для запроса я знаю. А вот как программно добавить условие в запрос, если нужно вот это я спрашиваю.
#10 by Tateossian
Это называется "Динамическое формирование запроса". Это уже вот это:
#11 by Coldboy
здесь добавляется, а не подменяется предопреленный скд запрос правильно я понимаю, а можно подменить ?
#12 by samozvanec
там набор уже будет и у него будет текст. с текстом работать как обычно
#13 by Coldboy
пока не нашел и не увидел четкого решения, сделал по старинке. поставил условие В(&Параметр), а в него передаю либо 1 значение, либо массив всех пользователей.
#14 by ЧеловекДуши
"Я_Заглушка = 0" - Делаешь так "Я_Заглушка = 1" - Делаешь по другому. Даже текст запроса не надо трогать :)
#15 by ЧеловекДуши
+ Для примера, для наглядности ГДЕ (&Я_Адмнистратор = 0 А уже значения параметра "Я_Адмнистратор", назначаешь в "ПриКомпоновкеРезультата" Пользователь даже и духом не чует, что Отчет с секретом :)
#16 by ЧеловекДуши
+ Так же там же можешь назначить значение "ТекущийПользователь"
#17 by ЧеловекДуши
Фантазии нет, печалько :)
#18 by Tateossian
Пожалуйста, установи текст запроса. И набор даже добавлять не надо, так как он есть. Делов-то.
#19 by Tateossian
НаборДанных.Запрос = ТекстЗапроса;
#20 by ЧеловекДуши
Параметры думаешь сами создаются? :)
#21 by Necessitudo
Зачем вообще тест запроса динамически править??? Прям в запросе что нельзя значение параметра анализировать?
#22 by ЧеловекДуши
Для ТС, это слишком просто, ему бы извращение :)
#23 by Coldboy
а я так в принципе и  сделал ?
#24 by samozvanec
спасибо, обойдусь как-нибудь
#25 by EvgeniuXP
РЛС - разрешенные - ничего сложного
#26 by patria0muerte
Проще уж тогда: ГДЕ Пользователь = &ТекущийПользователь ИЛИ &ТекущийПользователь = ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка) В параметр передавать или текущего пользователя или пустую ссылку.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С