Имя: Пароль:
1C
1С v8
Массив в RLS вместо В ИЕРАРХИИ
0 marshalbratsk
 
27.04.17
11:58
Как можно передать список значений в параметр сеанса? Надо ограничить доступ пользователю только к его подразделению, а у этого подразделения есть ещё дочерние подразделения. "В ИЕРАРХИИ" в ограничении доступа к данным нет, задать параметру сеанса тип "Список значений" и вручную забить в него все подразделения тоже нельзя. Как быть? Не создавать же на каждое подразделение отдельный параметр сеанса. Хелп
1 marshalbratsk
 
27.04.17
11:59
Доступ к сотрудникам только из его подразделения. Конфигурация типовая с доработками ЗУП 2.5.155
2 Naf2017
 
27.04.17
12:00
сделать параметр сеанса с типом "фиксированный массив"
3 marshalbratsk
 
27.04.17
12:10
(2) Попробовал, всё равно ошибка. До этогокогда одно подразделение передавал и тип ставил ПодразделенияОрганизаций, то всё норм работало

Несоответствие типов
{МодульСеанса(65)}: Ошибка при установке значения атрибута контекста (СГМ)
        ПараметрыСеанса.СГМ = МассивПодразделений;
по причине:
Несоответствие типов

До этого код:

    ИначеЕсли ИмяПараметра = "СГМ" Тогда
        МассивПодразделений = Новый Массив;
        МассивПодразделений.Добавить(Справочники.ПодразделенияОрганизаций.НайтиПоКоду("000000050"));
        МассивПодразделений.Добавить(Справочники.ПодразделенияОрганизаций.НайтиПоКоду("000000051"));
        МассивПодразделений.Добавить(Справочники.ПодразделенияОрганизаций.НайтиПоКоду("000000052"));
        МассивПодразделений.Добавить(Справочники.ПодразделенияОрганизаций.НайтиПоКоду("000000053"));
        МассивПодразделений.Добавить(Справочники.ПодразделенияОрганизаций.НайтиПоКоду("000000054"));
        МассивПодразделений.Добавить(Справочники.ПодразделенияОрганизаций.НайтиПоКоду("000000055"));
        МассивПодразделений.Добавить(Справочники.ПодразделенияОрганизаций.НайтиПоКоду("000000056"));
        МассивПодразделений.Добавить(Справочники.ПодразделенияОрганизаций.НайтиПоКоду("000000057"));
        МассивПодразделений.Добавить(Справочники.ПодразделенияОрганизаций.НайтиПоКоду("000000058"));
        МассивПодразделений.Добавить(Справочники.ПодразделенияОрганизаций.НайтиПоКоду("000000059"));
        МассивПодразделений.Добавить(Справочники.ПодразделенияОрганизаций.НайтиПоКоду("000000111"));
        МассивПодразделений.Добавить(Справочники.ПодразделенияОрганизаций.НайтиПоКоду("000000113"));
        ПараметрыСеанса.СГМ = МассивПодразделений;
//        ПараметрыСеанса.СГМ = Справочники.ПодразделенияОрганизаций.НайтиПоКоду("000000051");    
        УстановленныеПараметры.Вставить("СГМ");
4 Naf2017
 
27.04.17
12:18
ПараметрыСеанса.ВидимыеМенеджерыПродаж = Новый ФиксированныйМассив(МассивВидимыхМенеджеровПродаж);
5 marshalbratsk
 
27.04.17
12:21
(4) Да, спасибо, уже понял, что не обычный массив надо передавать, а фиксированный. Всё теперь работает, спасибо

    ИначеЕсли ИмяПараметра = "СГМ" Тогда
        МассивПодразделений = Новый Массив;
        МассивПодразделений.Добавить(Справочники.ПодразделенияОрганизаций.НайтиПоКоду("000000050"));
        МассивПодразделений.Добавить(Справочники.ПодразделенияОрганизаций.НайтиПоКоду("000000051"));
        МассивПодразделений.Добавить(Справочники.ПодразделенияОрганизаций.НайтиПоКоду("000000052"));
        МассивПодразделений.Добавить(Справочники.ПодразделенияОрганизаций.НайтиПоКоду("000000053"));
        МассивПодразделений.Добавить(Справочники.ПодразделенияОрганизаций.НайтиПоКоду("000000054"));
        МассивПодразделений.Добавить(Справочники.ПодразделенияОрганизаций.НайтиПоКоду("000000055"));
        МассивПодразделений.Добавить(Справочники.ПодразделенияОрганизаций.НайтиПоКоду("000000056"));
        МассивПодразделений.Добавить(Справочники.ПодразделенияОрганизаций.НайтиПоКоду("000000057"));
        МассивПодразделений.Добавить(Справочники.ПодразделенияОрганизаций.НайтиПоКоду("000000058"));
        МассивПодразделений.Добавить(Справочники.ПодразделенияОрганизаций.НайтиПоКоду("000000059"));
        МассивПодразделений.Добавить(Справочники.ПодразделенияОрганизаций.НайтиПоКоду("000000111"));
        МассивПодразделений.Добавить(Справочники.ПодразделенияОрганизаций.НайтиПоКоду("000000113"));
        ФиксМассив = Новый ФиксированныйМассив(МассивПодразделений);
        ПараметрыСеанса.СГМ = ФиксМассив;
//        ПараметрыСеанса.СГМ = Справочники.ПодразделенияОрганизаций.НайтиПоКоду("000000051");    
        УстановленныеПараметры.Вставить("СГМ");
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший