Имя: Пароль:
1C
1С v8
Как справиться с проверкой 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
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
Нет, пользователи не видят этот склад
Основная теорема систематики: Новые системы плодят новые проблемы.