Имя: Пароль:
1C
 
Как можно управлять панелями разделов программно
,
0 mikkia
 
naïve
04.04.24
15:46
Пытаюсь сделать это через настройки
НастройкиИнтерфейса = ХранилищеСистемныхНастроек.Загрузить("Общее/ПанельРазделов/НастройкиКомандногоИнтерфейса");

но не знаю какие там методы есть. Через НастройкиИнтерфейса может только скрыть панели, а мне нужно конкретно одну панель скрыть от пользователей.
1 Буковка
 
04.04.24
16:04
(0) что-то не то Вы делаете. А что Вы хотите скрыть?
2 youalex
 
04.04.24
16:35
В СП есть:
НастройкиИнтерфейсаКлиентскогоПриложения (ClientApplicationInterfaceSettings)
ПолучитьСостав (GetContent)

Очень условный пример

    Настройки = ХранилищеСистемныхНастроек.Загрузить("Общее/НастройкиИнтерфейсаКлиентскогоПриложения");
    
    СоставПанелей = Настройки.ПолучитьСостав();
    ГруппаВерх = СоставПанелей.Верх;
    
    Если ГруппаВерх.Количество() > 0 Тогда
        ГруппаВерх.Удалить(0);
        Настройки.УстановитьСостав(СоставПанелей);
        ХранилищеСистемныхНастроек.Сохранить("Общее/НастройкиИнтерфейсаКлиентскогоПриложения", , Настройки);
    КонецЕсли;
3 mikkia
 
naïve
05.04.24
08:58
СоставПанелей = Настройки.ПолучитьСостав();
Метод объекта не обнаружен (ПолучитьСостав)
1С:Предприятие 8.3 (8.3.20.1674)

Хочу скрыть панель Зарплата
4 D3O
 
05.04.24
09:08
разрабы платформы решили, что программный доступ для управления КИ никому не нужен будет. ;)
давно решили. в 8.0 или 8.1.
единственный адекватный способ, который остался - с помощью ролей.
нужно во всех ролях, кроме "интерфейсных" убрать право на разделы, добавить роли, где будут включены соотв. права, и уже после собирать в профили.
5 MaximSh
 
05.04.24
09:40
(0) в типовых это сделано через роли с началом Раздел в паре с Подсистема, например, РазделВнеоборотныеАктивы и Подсистема внеоборотные активы.
И велосипеды с альтернативным правом придумывать не надо.
6 youalex
 
05.04.24
10:31
(3) понял, у тебя про  НастройкиКомандногоИнтерфейса, а не НастройкиИнтерфейсаКлиентскогоПриложения
7 mikkia
 
naïve
05.04.24
12:57
нет, не так (6)
//   Если Настройки=Неопределено Тогда
      Настройки = ХранилищеСистемныхНастроек.Загрузить("Общее/НастройкиИнтерфейсаКлиентскогоПриложения");
      СоставПанелей = Настройки.ПолучитьСостав();

Метод объекта не обнаружен (ПолучитьСостав)
Через роли не пойдет, так как в стандартной конфигурации у роли Бухгалтера уже стоит включенная подсистема Зарплата. Тогда нужно создавать так же программно новую роль без этой подсистемы программно.
8 dmt
 
05.04.24
13:18
(0) Пользователь сможет спокойно включить раздел в настройках панели разделов. Поэтому правильно - через права.

А так можно настроить панель разделов "как нужно", прочитать значение "Общее/ПанельРазделов/НастройкиКомандногоИнтерфейса" и сохранить например в макет.

А потом в нужный момент из макета поднимать настройки и сохранять опять же в "Общее/ПанельРазделов/НастройкиКомандногоИнтерфейса" - и сразу обновлять интерфейс.
9 Лирик
 
05.04.24
13:30
(7) Все правильно, только нужно создать не роль, а профиль групп доступа и не программно, а в пользовательском режиме путем копирования профиля "Бухгалтер". Во вновь созданном профиле убрать все роли для тех данных, которые вы не хотите показывать пользователю, создать по профилю группу доступа и включить в эту группу пользователей, исключив их из группы с поставляемым профилем.
10 CepeLLlka
 
05.04.24
13:53
(9)А потом выходит обновление, появляются новые объекты в конфигурации, типовой профиль обновляется, что делать будете?  После каждого обновления заново ваш профиль создавать копированием типового?
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.