![]() |
|
Как справиться с проверкой rls | ☑ | ||
---|---|---|---|---|
0
msk-07
26.06.14
✎
11:42
|
Запускаю отчет в в конфе, использующей RLS, ошибка из-за ограничения прав, а нужно чтобы и ограничения были, и отчет формировался.
Не расширяя права пользователей, как можно обойти это? Какие могут быть решения этой задачи? База на сервере крутится. |
|||
1
Холодильник
26.06.14
✎
11:42
|
в запросе пишем
ВЫБРАТЬ РАЗРЕШЕННЫЕ |
|||
2
Холодильник
26.06.14
✎
11:43
|
+ или написать в отчете УстановитьПРивилегированныйрежим(ИСТИНА) - на серве
|
|||
3
msk-07
26.06.14
✎
11:47
|
Ни фига не понимаюю..
{Форма.ФормаОтчета.Форма(84)}: Ошибка при вызове метода контекста (НайтиПоКоду) Запрос.УстановитьПараметр("Склад", Справочники.Склады.НайтиПоКоду("123")); по причине: У пользователя недостаточно прав на исполнение операции над базой данных. |
|||
4
SUA
26.06.14
✎
11:50
|
(3)нельзя пользователю этот склад
значит не расширяя прав - нельзя и отчет |
|||
5
msk-07
26.06.14
✎
11:50
|
Ребят, помогите, может кто встречался с такой задачей ?:(
|
|||
6
msk-07
26.06.14
✎
11:51
|
В нете нашел, вот что, но не пойму как это было реализовано
"Пошел по другому пути. Разрешил пользователям менять параметр сеанса "Использовать ограничение прав доступа" и перед запросом устанавливаю его в ЛОЖЬ, а затем возвращаю в ИСТИНУ. Интерактивно этот параметр пользователи менять не могут." |
|||
7
SUA
26.06.14
✎
11:53
|
так можно пользователю склад в этом отчете или нет?
если можно см (2) перед строкой ошибки если нельзя см (3) |
|||
8
msk-07
26.06.14
✎
11:57
|
(7) стой, стой, стой...
Ну установил я УстановитьПРивилегированныйрежим(ИСТИНА); Запрос.УстановитьПараметр("Склад", Справочники.Склады.НайтиПоКоду("123")); А ошибка все присутствует.. |
|||
9
msk-07
26.06.14
✎
11:58
|
Склад пипец, как нужен, так как по нему делается проверка....и они должны видеть остатки с этого склада, только по моему отчету.
|
|||
10
SUA
26.06.14
✎
11:59
|
так отчет в конфе как в (0) написано или нет (внешний)?
если нет то не сработает |
|||
11
msk-07
26.06.14
✎
12:00
|
Да он внешний..Чего работать не будет?
|
|||
12
msk-07
26.06.14
✎
12:00
|
Ну я имею ввиду его делать через конфигурацию нужно?
|
|||
13
msk-07
26.06.14
✎
12:00
|
ооо, пипец, описался.
|
|||
14
msk-07
26.06.14
✎
12:00
|
Блин, сам дурак
|
|||
15
PR
26.06.14
✎
12:02
|
(0) Ты что, блеать, издеваешься?
v8: Подскажите как обойти во внешнем отчете запрет на rls |
|||
16
msk-07
26.06.14
✎
12:03
|
ДА, я так и не понял как это делать...Решил еще раз спросить
|
|||
17
SUA
26.06.14
✎
12:05
|
кактус вкусный оказался наверное
|
|||
18
PR
26.06.14
✎
12:05
|
(16) А что непонятного-то? Изучай подключение внешних отчетов.
|
|||
19
timurhv
26.06.14
✎
12:13
|
(8) Насколько знаю, найти по коду и найти по наименованию не работает для справочников, где включен RLS, передавай параметром код справочника в запрос, там получай ссылку по коду и используй.
|
|||
20
msk-07
26.06.14
✎
12:26
|
Все отчет сделала как внутренний...Сейчас буду узать...
|
|||
21
msk-07
26.06.14
✎
12:26
|
не мой день //сделал
|
|||
22
Бешеная Нога
26.06.14
✎
12:28
|
при наличии РЛС нельзя использовать ВыбратьЭлементы, НайтиПоКоду и т.п.
проще всего переписать запрос и в запрос передавать именно код. А уже в запросе устанавливать условие Где Склад.Код = ТвойКод |
|||
23
Бешеная Нога
26.06.14
✎
12:29
|
ну и в принципе должно быть понимание, что НайтиПоКоду - это для дилетантов или редких случаев
|
|||
24
msk-07
26.06.14
✎
12:29
|
ДА, уже так сделал, сейчас посмотрю, что получится
|
|||
25
timurhv
26.06.14
✎
12:33
|
(23) Если совсем по-уму, то и передавать код справочника в запрос не очень красиво :)
|
|||
26
scanduta
26.06.14
✎
12:34
|
Используй привилигерованный режим на крайняк
|
|||
27
scanduta
26.06.14
✎
12:34
|
в отчете
|
|||
28
Бешеная Нога
26.06.14
✎
12:36
|
(25) ну речь была не про НайтиПоКоду, а в принципе про привязку к конкретным объектам в коде
|
|||
29
msk-07
26.06.14
✎
12:47
|
Так...Туплю...передавать код справочника в запрос не очень красиво :)
А как красиво? Так ужасно? | СвободныеОстаткиОстатки.Склад.Код = &Склад | И СвободныеОстаткиОстатки.Номенклатура.Родитель В ИЕРАРХИИ(&ГруппаНоменклатуры) | |УПОРЯДОЧИТЬ ПО | НоменклатураНаименование"; Запрос.УстановитьПараметр("Склад", 123); Так еще и не работает, результат не выводит:( |
|||
30
SUA
26.06.14
✎
13:13
|
RLS - потому так и не выводит
какой вкусный кактус |
|||
31
msk-07
26.06.14
✎
13:34
|
(30)
Слушай, ну если знаешь помоги, я в долгу не останусь, мне бы понять как это решить... |
|||
32
Бешеная Нога
26.06.14
✎
13:42
|
(31) код кода справочника Склады - Число или Строка? Если строка - нет ли перед "123" пары тройки нулей?
|
|||
33
jk3
26.06.14
✎
13:44
|
(3) Если есть RLS в конфе, то НайтиПоКоду(), НайтиПоНаименованию() лучше не юзать, т.к. даже если есть доступ к тому элементу, который ищем, всё равно отвалится, если нет прав хотя бы на 1 элемент справочника.
|
|||
34
jk3
26.06.14
✎
13:44
|
(32) +1
|
|||
35
acsent
26.06.14
✎
13:46
|
пользователь видит этот склад?
|
|||
36
msk-07
26.06.14
✎
13:55
|
не, здесь я исправил...
Процедура Отчет(ТабДок) Экспорт //Начало Отчет Макет = ОтчетОбъект.ПолучитьМакет("Макет"); Строки = Макет.ПолучитьОбласть("Строка"); Итого = Макет.ПолучитьОбласть("Итого"); Шапка = Макет.ПолучитьОбласть("Шапка"); УстановитьПРивилегированныйрежим(ИСТИНА); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | СвободныеОстаткиОстатки.Склад КАК Склад, | СвободныеОстаткиОстатки.Номенклатура, | СвободныеОстаткиОстатки.КоличествоОстаток КАК КоличествоОстаток, | СвободныеОстаткиОстатки.Номенклатура.Наименование КАК НоменклатураНаименование, |ИЗ | РегистрНакопления.СвободныеОстатки.Остатки(&Период, ) КАК СвободныеОстаткиОстатки |ГДЕ | СвободныеОстаткиОстатки.Склад.Наименование = &НаименованиеСклада | И СвободныеОстаткиОстатки.Номенклатура.Родитель В ИЕРАРХИИ(&ГруппаНоменклатуры) | |УПОРЯДОЧИТЬ ПО | НоменклатураНаименование"; Запрос.УстановитьПараметр("НаименованиеСклада", Строка("Название склада")); Запрос.УстановитьПараметр("Период", ТекущаяДата()); Запрос.УстановитьПараметр("Период", ТекущаяДата()); Запрос.УстановитьПараметр("ГруппаНоменклатуры",ГруппаНоменклатуры); ТабДок.Очистить(); ТабДок.Вывести(Шапка); РезультатЗапроса = Запрос.Выполнить().Выбрать(); ИтогКолРезерв=0; Пока РезультатЗапроса.Следующий() Цикл Сообщить(РезультатЗапроса.Склад); Строки.Параметры.Номернлатура =РезультатЗапроса.Номенклатура; Строки.Параметры.Количество = РезультатЗапроса.КоличествоОстаток; ИтогКолРезерв = ИтогКолРезерв+РезультатЗапроса.КоличествоОстаток; ТабДок.Вывести(Строки); Итого.Параметры.ИтогКол = ИтогКолРезерв; КонецЦикла; ТабДок.Вывести(Итого); КонецПроцедуры |
|||
37
msk-07
26.06.14
✎
13:55
|
Нет, пользователи не видят этот склад
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |