Имя: Пароль:
1C
1С v8
Права на установку отбора в СКД
0 Natalika
 
22.01.15
11:46
Есть отчет на СКД. Нужно, чтобы пользователи с ограниченными правами, могли его формировать только по своему подразделению. Подразделение устанавливается в отборе. В процедуре ПриОткрытии() я это делаю следующим образом:

НастройкиПодразделение = КомпоновщикНастроек.Настройки.Отбор.Элементы.Получить(0);
    НастройкиПодразделение.ВидСравнения    = ВидСравненияКомпоновкиДанных.ВСписке;
    НастройкиПодразделение.ПравоеЗначение = СписокЗначений;
    НастройкиПодразделение.Использование = Использование;
    НастройкиПодразделение.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;

При этом устанавливается отбор по списку доступных подразделений, но проблема в том, что РежимОтображения не становится недоступным, т.е. пользователь может откорректировать список подразделений или отключить этот отбор. Как сделать, чтобы эта строка отбора была недоступна или не видна для определенных пользователей?
1 DrZombi
 
гуру
22.01.15
12:21
(0) Схитри, установи предопределенные условия в зависимости от роли, через вот это: "ПриКомпоновкеРезультата()" (предопределенная процедура в модуле отчета)
http://1cskd.ru/2010/07/vneshnie-nabori-dannyh/

там укажи вместо таблицы значения:


    СтандартнаяОбработка = Ложь;

    //-------------------------
    НастройкиКомпоновщика = ЭтотОбъект.КомпоновщикНастроек.ПолучитьНастройки();
    
    ЭлемПользНастр = ЭтотОбъект.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы;
    
    //ПрибавлятьФильтр=Ложь; // настройка период
    Если НастройкиКомпоновщика.ПараметрыДанных.Элементы.Количество()>0 ТОгда
        Для каждого Элемент Из НастройкиКомпоновщика.ПараметрыДанных.Элементы Цикл
            
            Если Сокрлп(Элемент.Параметр)="ВариантЗапроса" тогда
                Элемент.Использование = Истина;
                
                //Отобразим для пользователя
                НайденЭлемент = ЭлемПользНастр.Найти(Элемент.ИдентификаторПользовательскойНастройки);
                Если НайденЭлемент <> Неопределено Тогда
                    НайденЭлемент.Использование = Истина;
                КонецЕсли;
                
///.... и т.д.

            КонецЕсли;
            
        КонецЦикла;
    КонецЕсли;
    //ТЗИтог= СформироватьОтчет(ДатаНачала,ДатаОкончания,Календарь);
    
    //Связь между таблицей значений и именами в СКД
    ВнешниеНаборыДанных = Новый Структура;
    //ВнешниеНаборыДанных.Вставить("ТЗИтог",ТЗИтог);
    
    //Макет компоновки
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(ЭтотОбъект.СхемаКомпоновкиДанных, НастройкиКомпоновщика, ДанныеРасшифровки);
    
    //Компоновка данных
    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, ДанныеРасшифровки);
    
    //Вывод результата ДокументРезультат.Очистить();
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновки);
2 DrZombi
 
гуру
22.01.15
12:21
+(1) А как использовать в запросе свой параметр ты сама додумаешь :)
3 DrZombi
 
гуру
22.01.15
12:23
+(1) Установить значение параметру: Элемент.Значение = <Твое значение>.
4 Адский плющ
 
22.01.15
12:44
РЛС? Не, не слышал...
5 Natalika
 
22.01.15
12:53
(1) А попроще как-нибудь можно? Т.е. я хочу просто заблокировать это поле отбора для определенных пользователей, но почему-то установка режима отображения не дает желаемого результата. РежимОтображенияЭлементаНастройкиКомпоновкиДанных (DataCompositionSettingsItemViewMode)
Недоступный (Inaccessible)
Описание:

Этот элемент настройки не предназначен для изменения в составе пользовательской настройки.

Есть ли другой метод установки видимости или доступности отбора?
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.