Программная настройка панелей разделов

1. maxster545 15.07.19 12:00 Сейчас в теме
В конфигураторе настроены разделы панелей.
Как сделать так, чтобы у пользователей при запуске всегда открывалось в таком виде?
По теме из базы знаний
Найденные решения
2. tjurikov_ivan 215 15.07.19 12:05 Сейчас в теме
пример с сайта ИТС https://v8.1c.ru/o7/201309834/index.htm
Процедура ПриНачалеРаботыСистемы(Отказ)
	
	// Определить размеры экрана.
	Экраны = ПолучитьИнформациюЭкрановКлиента();
	
	// Для примера допускаем, что экран один.
	// Но если экранов несколько, нужно анализировать их все.
	ВысотаЭкрана = Экраны[0].Высота;
	ШиринаЭкрана = Экраны[0].Ширина;
	
	// Если экран маленький, включить только панель инструментов.
	// Если ... 
		НастройкаИнтерфейса.ВыполнитьНастройкуПанелей();
	// КонецЕсли;
	
	ОбновитьИнтерфейс();
	
КонецПроцедуры

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

	// Если же хотим менять настройки, которые установил пользователь себе, 
	// тогда нужно прочитать его настройки из хранилища, и метод ПолучитьСостав()
	// вернёт не то, что в конфигураторе, а то, что пользователь установил себе.
	//
	// НастройкиИнтерфейса = ХранилищеСистемныхНастроек.Загрузить("Общее/НастройкиИнтерфейсаКлиентскогоПриложения");
	// НастройкиСостава = НастройкиИнтерфейса.ПолучитьСостав();	
	// ... изменть настройки состава
	// НастройкиИнтерфейса.УстановитьСостав(НастройкиСостава);
	// ХранилищеСистемныхНастроек.Сохранить("Общее/НастройкиИнтерфейсаКлиентскогоПриложения", , НастройкиИнтерфейса);
	
КонецПроцедуры
Показать
adhocprog; DrAku1a; assa; +3 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. tjurikov_ivan 215 15.07.19 12:05 Сейчас в теме
пример с сайта ИТС https://v8.1c.ru/o7/201309834/index.htm
Процедура ПриНачалеРаботыСистемы(Отказ)
	
	// Определить размеры экрана.
	Экраны = ПолучитьИнформациюЭкрановКлиента();
	
	// Для примера допускаем, что экран один.
	// Но если экранов несколько, нужно анализировать их все.
	ВысотаЭкрана = Экраны[0].Высота;
	ШиринаЭкрана = Экраны[0].Ширина;
	
	// Если экран маленький, включить только панель инструментов.
	// Если ... 
		НастройкаИнтерфейса.ВыполнитьНастройкуПанелей();
	// КонецЕсли;
	
	ОбновитьИнтерфейс();
	
КонецПроцедуры

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

	// Если же хотим менять настройки, которые установил пользователь себе, 
	// тогда нужно прочитать его настройки из хранилища, и метод ПолучитьСостав()
	// вернёт не то, что в конфигураторе, а то, что пользователь установил себе.
	//
	// НастройкиИнтерфейса = ХранилищеСистемныхНастроек.Загрузить("Общее/НастройкиИнтерфейсаКлиентскогоПриложения");
	// НастройкиСостава = НастройкиИнтерфейса.ПолучитьСостав();	
	// ... изменть настройки состава
	// НастройкиИнтерфейса.УстановитьСостав(НастройкиСостава);
	// ХранилищеСистемныхНастроек.Сохранить("Общее/НастройкиИнтерфейсаКлиентскогоПриложения", , НастройкиИнтерфейса);
	
КонецПроцедуры
Показать
adhocprog; DrAku1a; assa; +3 Ответить
3. maxster545 15.07.19 13:42 Сейчас в теме
(2) хм, НастройкиИнтерфейсаКлиентскогоПриложения доступно на сервере.
ПриНачалеРаботыСистемы - выпоняется на клиенте и при перехаоде к серверной процедуре выдаёт ошибку.
4. tjurikov_ivan 215 15.07.19 18:55 Сейчас в теме
(3)Нужно в модуле управляемого приложения вызвать функцию общего модуля "На Клиенте", а из него вызвать общий модуль с "Вызов сервера"
5. maxster545 16.07.19 12:44 Сейчас в теме
(4) получилось, спасибо!
6. user818703 04.04.24 14:53 Сейчас в теме
Пытаюсь сделать это через настройки
НастройкиИнтерфейса = ХранилищеСистемныхНастроек.Загрузить("Общее/ПанельРазделов/НастройкиКомандногоИнтерфейса");

Как можно управлять панелями разделов программно
но не знаю какие там методы есть. Через НастройкиИнтерфейса может только скрыть панели, а мне нужно конкретно одну панель скрыть от пользователей.
7. ILNIK 33 07.06.24 19:43 Сейчас в теме
Если стоит задача скрыть подсистему из панели разделов, то можно это сделать через функциональные опции.

Если переделывать систему прав и ролей трудоемко, то можно
1) Создать новую отдельную роль, например, "Ограниченный доступ".
2) Создать новую подсистему и включить туда только то, что необходимо видеть пользователю и дать доступ к подсистеме только для этой новой роли.
3) Создать функциональную опцию и включить в ее состав все подсистемы и объекты, которые необходимо скрыть. Функциональную опцию подключаем к отдельному реквизиту в справочнике Пользователи, например, "Видеть всё". В модуле перед записью пользователя анализируем наличие новой роли у записываемого пользователя (ищем по пользователю ИБ) и ставим этот реквизит в истину или ложь.
4) Не забываем добавить параметр функциональной опции с типом справочник Пользователи и прописать его заполнение при начале работы системы текущим пользователем.
5) Также нужно пробежаться консолью и перезаписать всех существующих пользователей для первоначального заполнения ревизита.

В итоге, у пользователей, у которых нет роли "Ограниченный доступ", в карточке пользователя будет возведен флаг "Видеть всё" и для них ничего скрываться не будет, всё будет штатно, функциональная опция будет доступна.
А у пользователей, которым дали роль "Ограниченный доступ", будет реквизит "Видеть всё" равен ложь и часть интерфейса будет скрыта с помощью функциональной опции, зато появится доступ на новую подсистему с необходимыми ему ограниченными объектами
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот