Имя: Пароль:
1C
 
Как можно управлять панелями разделов программно
0 mikkia
 
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
 
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
 
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)А потом выходит обновление, появляются новые объекты в конфигурации, типовой профиль обновляется, что делать будете?  После каждого обновления заново ваш профиль создавать копированием типового?
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший