Имя: Пароль:
1C
1С v8
БСП: RLS: как скрыть "пустые" группы?
,
0 conscious
 
31.08.21
18:07
В самописной конфигурации на базе БСП (3.1.4.280) используется RLS.
Для одного из справочников текст ограничения в модуле менеджера прописан так:
Ограничение.Текст =
    "РазрешитьЧтениеИзменение
    |ГДЕ
    |    ЭтоГруппа
    |    ИЛИ
    |ЗначениеРазрешено(Ссылка)";


В роли пользователя для этого справочника прописаны шаблоны ДляОбъекта и ПоЗначениям.
Справочник иерархический, используется иерархия групп и элементов.
Пользователи выдали такую задачу: не выводить группу, если внутри этой группы нет разрешенных элементов.
Вопрос: как такое сделать?
1 DrShad
 
31.08.21
18:23
свой дин список с произвольным запросом
2 conscious
 
31.08.21
19:58
(1)  А какой там будет запрос, чтобы не отображались группы, в которых нет разрешенных элементов. Там до 5 уровней вложенности…
3 fisher
 
31.08.21
20:36
(0) > Вопрос: как такое сделать?
Для иерархии групп и элементов - никак.
Только для иерархии элементов можно такое провернуть.
4 fisher
 
31.08.21
20:38
Можно еще нарисовать свою форму, где в одном поле будет выводиться дерево непустых групп, а в другом - элементы выбранной группы.
Как-то так, короче. Танцами вокруг. В лоб задача не решается.
5 серый КТУЛХУ
 
31.08.21
20:46
а группа в которой только пустые группы - будет считаться пустой (такой чтобы ее прятать)?..
(просто спросил)))
6 conscious
 
31.08.21
22:34
(5) Да.
(4) Форму хотят ту же, просто не хотят видеть "пустые" группы.

Что-то я уже запарился :( В динамическом списке с отображением иерархии даже отборы по ссылке нормально не работают. Т.е., не удается установить отбор Ссылка НЕ в группе из списка.
7 Guk
 
31.08.21
22:57
8 fisher
 
01.09.21
09:17
(7) Спасибо. Не знал, что через условное оформление таки можно скрыть. Век живи - век учись.
9 conscious
 
01.09.21
10:22
Что-то у меня и через условное оформление не получается.
Помогите, люди добрые )
Что не так в коде? Условное оформление просто не добавляется, хотя отрабатывает всё без ошибок.

ЭлемОформления = Список.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы[2].Элементы.Добавить();//Элементы[2] - условное оформление

ЭлементОтбора = ЭлемОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Ссылка");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСпискеПоИерархии;
ЭлементОтбора.ПравоеЗначение = Рез.Выгрузить().ВыгрузитьКолонку("Родитель");
ЭлементОтбора.Использование = Истина;
        
ЭлемОформления.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
10 fisher
 
01.09.21
10:25
(9) Попробуй просто "ВСписке". Ну или скачай рабочий пример по ссылке. Расскажешь :)
11 conscious
 
01.09.21
12:19
В общем, сделал через Список.КомпоновщикНастроек.ФиксированныеНастройки.УсловноеОформление (в ПриСозданииНаСервере).
А через Список.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы[2] работает только, если это делать с клиента (в ПриОткрытии), и в этом случае будет заморочка с ранее добавленными элементами пользовательских настроек - нужно будет либо очищать всё, либо искать своё и модифицировать...
12 conscious
 
01.09.21
12:23
Оффтоп: есть статья https://its.1c.ru/db/pubv8devui#content:238:hdoc
Кто-нибудь может сказать, для чего там в конце делается Список.КомпоновщикНастроек.ЗагрузитьНастройки(Список.КомпоновщикНастроек.Настройки), при том, что изначально работа идет с Список.КомпоновщикНастроек.Настройки? Мне почему-то кажется, это лишнее в статье на ИТС...
13 fisher
 
01.09.21
12:33
(12) Вероятно, чтобы перезаполнились пользовательские настройки.