Книга: Разработка интерфейса прикладных решений на платформе "1С:Предприятие 8"
Назад: Настройка состава панелей интерфейса
Дальше: Часть 4. Оптимизация клиент-серверного взаимодействия в формах

Настройка состава форм на начальной странице

По аналогии с предыдущим примером можно при старте прикладного решения в зависимости от роли пользователя программно формировать его начальную страницу.

Основной объект, с помощью которого выполняется настройка начальной страницы, – НастройкиНачальнойСтраницы. Он позволяет работать как с настройками, заданными в конфигураторе разработчиком, так и с настройками, которые пользователь установил для себя в режиме 1С:Предприятие.

Продолжим наш пример. В процедуру НастройкаИнтерфейса() общего модуля РаботаСИнтерфейсом добавим вызов процедур для формирования начальной страницы для пользователя с ролью Администратор и для пользователя с ролью Менеджер (листинг 3.189).

Листинг 3.189. Процедура «НастройкаИнтерфейса»

Процедура НастройкаИнтерфейса() Экспорт

 

ПользовательИБ = ПользователиИнформационнойБазы.ТекущийПользователь();

Для Каждого РольПользователя Из ПользовательИБ.Роли Цикл

Если РольПользователя.Имя = "Администратор" Тогда

РасширенныйИнтерфейс();

СложнаяНачальнаяСтраница();

 

КонецЕсли;

 

Если РольПользователя.Имя = "Менеджер" Тогда

МинимальныйИнтерфейс();

ПростаяНачальнаяСтраница();

 

КонецЕсли;

 

КонецЦикла;

 

КонецПроцедуры

На начальной странице менеджера мы будем отображать слева форму списка справочника Товары, а справа – форму отчета ЦеныТоваров. Причем независимо от его личных настроек и настроек, сделанных в конфигураторе.

Поместим в общем модуле РаботаСИнтерфейсом процедуру ПростаяНачальнаяСтраница() и заполним ее следующим образом (листинг 3.190).

Листинг 3.190. Процедура «ПростаяНачальнаяСтраница»

Процедура ПростаяНачальнаяСтраница() Экспорт

 

НачальнаяСтраница = Новый НастройкиНачальнойСтраницы;

СоставФорм = НачальнаяСтраница.ПолучитьСоставФорм();

 

СоставФорм.ЛеваяКолонка.Очистить();

СоставФорм.ПраваяКолонка.Очистить();

 

СоставФорм.ЛеваяКолонка.Добавить("Справочник.Товары.ФормаСписка");

СоставФорм.ПраваяКолонка.Добавить("Отчет.ЦеныТоваров.Форма.ФормаОтчета");

 

НачальнаяСтраница.УстановитьСоставФорм(СоставФорм);

ХранилищеСистемныхНастроек.Сохранить("Общее/НастройкиНачальнойСтраницы", "", НачальнаяСтраница);

 

КонецПроцедуры

В этой процедуре мы конструктором создаем пустой объект НастройкиНачальнойСтраницы. Затем с помощью метода этого объекта ПолучитьСоставФорм() мы получаем состав форм начальной страницы, заданный в конфигураторе.

В нашем случае в конфигураторе начальная страница настроена следующим образом (рис. 3.238).

Рис. 3.238. Состав форм на начальной странице, заданный в конфигураторе

Очищаем список форм, размещенных в левой и правой колонке начальной страницы. И добавляем в левую колонку форму списка справочника Товары, а в правую – форму отчета ЦеныТоваров.

При указании имени формы можно использовать как полные имена форм объектов конфигурации (например, Справочник.Товары.Форма.ИмяФормы), так и стандартные имена форм (например, Справочник.Товары.ФормаСписка).

Также нужно учитывать, что при программной настройке начальной страницы нельзя изменить шаблон начальной страницы. Будет использоваться тот шаблон, который задан в конфигураторе.

После этого с помощью метода УстановитьСоставФорм() мы загружаем измененные настройки начальной страницы в пустой объект НастройкиНачальнойСтраницы.

И в заключение сохраняем эти настройки для текущего пользователя в хранилище системных настроек с ключом Общее/НастройкиНачальнойСтраницы.

Запустим «1С:Предприятие» от имени пользователя с ролью Менеджер. Независимо от настроек, сделанных в конфигураторе, и от личных настроек менеджера, сделанных в прошлом сеансе работы, при старте прикладного решения на его начальной странице всегда слева будет отображаться список товаров, а справа – отчет, показывающий цены товаров (рис. 3.239).

Рис. 3.239. Начальная страница приложения для менеджера

Теперь рассмотрим формирование начальной страницы для пользователя с ролью Администратор на основе настроек, сделанных им в режиме 1С:Предприятие.

Предположим, администратор в пользовательском режиме изменил состав форм на начальной странице, заданный в конфигураторе. Он скрыл форму списка товаров, перенес из правой колонки начальной страницы в левую колонку форму списка справочника Организации и форму обработки Заполнение данных. А также администратор перетащил форму списка справочника Расчетные счета из списка доступных форм в правую колонку начальной страницы (рис. 3.240).

Рис. 3.240. Настройка начальной страницы администратором в режиме «1С:Предприятие»

После изменения эти настройки были сохранены в системном хранилище для пользователя с ролью Администратор. И теперь при старте прикладного решения на начальной странице администратора показывается тот вид, который он настроил для себя в режиме 1С:Предприятие (рис. 3.241).

Рис. 3.241. Начальная страница, настроенная администратором

Теперь мы хотим немного изменить и расширить эти настройки из встроенного языка. А именно – мы хотим отображать для администратора в левой колонке начальной страницы форму списка справочника Организации, а в правой – форму обработки Заполнение данных. Остальные настройки, которые администратор сделал в пользовательском режиме, должны остаться без изменения.

Для этого настройки пользователя надо прочитать из системного хранилища, изменить и записать обратно.

Поместим в общем модуле РаботаСИнтерфейсом процедуру СложнаяНачальнаяСтраница() и заполним ее следующим образом (листинг 3.191).

Листинг 3.191. Процедура «СложнаяНачальнаяСтраница»

Процедура СложнаяНачальнаяСтраница() Экспорт

 

НастройкиНачальнойСтраницы = ХранилищеСистемныхНастроек.Загрузить("Общее/НастройкиНачальнойСтраницы");

СоставФорм = НастройкиНачальнойСтраницы.ПолучитьСоставФорм();

 

Левая = СоставФорм.ЛеваяКолонка;

Правая = СоставФорм.ПраваяКолонка;

 

ИмяФормы = "Справочник.Организации.Форма.ФормаСписка";

ИндексФормы = Правая.Найти(ИмяФормы);

 

Если ИндексФормы <> Неопределено Тогда

Правая.Удалить(ИндексФормы);

 

КонецЕсли;

 

ИндексФормы = Левая.Найти(ИмяФормы);

 

Если ИндексФормы = Неопределено Тогда

Левая.Добавить("Справочник.Организации.Форма.ФормаСписка");

 

КонецЕсли;

 

ИмяФормы = "Обработка.ЗаполнениеДанных.Форма.Форма";

ИндексФормы = Левая.Найти(ИмяФормы);

 

Если ИндексФормы ==> Неопределено Тогда

Левая.Удалить(ИндексФормы);

 

КонецЕсли;

 

ИндексФормы = Правая.Найти(ИмяФормы);

 

Если ИндексФормы = Неопределено Тогда

Правая.Добавить("Обработка.ЗаполнениеДанных.Форма.Форма");

 

КонецЕсли;

 

НастройкиНачальнойСтраницы.УстановитьСоставФорм(СоставФорм);

ХранилищеСистемныхНастроек.Сохранить("Общее/НастройкиНачальнойСтраницы", "", НастройкиНачальнойСтраницы);

 

КонецПроцедуры

В этой процедуре сначала мы загружаем из системного хранилища настройки текущего пользователя в объект НастройкиНачальнойСтраницы. Затем с помощью метода этого объекта ПолучитьСоставФорм() мы получаем состав форм начальной страницы, заданный пользователем. После этого с помощью свойств ЛеваяКолонка и ПраваяКолонка получаем список форм, размещенных в левой и правой колонках начальной страницы.

Здесь, в отличие от настройки начальной страницы для менеджера, мы не очищаем списки форм, так как нам нужно добавить свои формы к списку форм пользователя.

Надо заметить, что форма может несколько раз содержаться и в одной и той же, и в разных колонках начальной страницы. Но это будет по меньшей мере «некрасиво» и совершенно не нужно.

Поэтому перед добавлением форм на начальную страницу мы будем проверять их наличие в настройках пользователя. И будем добавлять форму в случае ее отсутствия той колонке, в которую мы хотим ее добавить, и удалять форму, если она уже присутствует в другой колонке.

Надо учитывать, что для поиска в списках форм левой и правой колонки нужно использовать полные имена форм, соответственно, и при добавлении форм на начальную страницу нужно также использовать эти имена.

После этого с помощью метода УстановитьСоставФорм() мы загружаем измененные настройки в пользовательские настройки начальной страницы.

В заключение сохраняем эти настройки для текущего пользователя в хранилище системных настроек с ключом Общее/НастройкиНачальнойСтраницы.

Запустим «1С:Предприятие» от имени пользователя с ролью Администратор. Мы видим, что на начальной странице администратора слева располагается форма списка справочника Организации, а справа – форма обработки Заполнение данных. Но над ней в правой колонке начальной страницы располагается форма списка справочника Расчетные счета – в соответствии с пользовательскими настройками, сделанными ранее (рис. 3.242).

Рис. 3.242. Начальная страница приложения для администратора

Назад: Настройка состава панелей интерфейса
Дальше: Часть 4. Оптимизация клиент-серверного взаимодействия в формах