В копилку! (тестировалось и работает на платформе: 8.3.13.1513).
Об этом почему-то мало кто знает и не пользуется хотя есть официальная информация по крайней мере на 2-х страницах сайтов 1С.
Ссылки в конце статьи.
Начальная страница – это стандартный раздел программы, содержащий часто используемые документы, отчеты, справочники и т.п.
Как правило работа пользователя с программой всегда начинается с начальной страницы.
Предыстория:
Настраивать рабочий стол (начальную страницу) под себя, это не только изменять стандартные настройки заложенные в конфигурацию, но и желание использовать свои обработки, формы и т.д. на начальной странице. А иногда хочется, чтобы все что открывается стандартным способом, не открывалось, а открывалось только то, что тебе надо. Случайно наткнулся на статью на сайте 1С, как это возможно сделать, а с расширениями эта стало гораздо проще, плюсов как вы знаете множество!
Для того чтобы сей метод работал как надо, необходимо создать расширение или использовать существующее (статей на эту тему множество), добавить туда свою обработку или заимствовать нужные формы, которые вы желаете видеть на начальной странице и добавить обработчик, поигравшись с настройками.
Используя данный метод в зависимости от роли пользователя программно формировать его начальную страницу.
Например:
Я использую в работе одну обработку, для меня она удобна. "Рабочий стол администратора": //infostart.ru/public/239307/
1) Добавил ее в расширение.
2. Из модуля сеанса, добавил в расширение процедуру "УстановкаПараметровСеанса", выбрал "После". Использовал код, с добавлением нужной роли.
Эта обработка открывается только у тех, у кого есть эта роль. Это пример. При добавлении процедуры в расширение, не забывайте использовать инструкции препроцессора.
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
.....
#КонецЕсли
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ОбработчикиСобытий
&После("УстановкаПараметровСеанса")
Процедура ВашПрефикс_УстановкаПараметровСеанса(ИменаПараметровСеанса)
// Загрузка обработки для администратора
// Добавил конструкцию Если, чтобы открывалось для тех, у кого есть эта роль.
Если РольДоступна("Администрирование") Тогда
НастройкиНачальнойСтраницы = Новый НастройкиНачальнойСтраницы;
СоставФорм = Новый СоставФормНачальнойСтраницы;
СоставФорм.ЛеваяКолонка.Добавить("Обработка.AdministratorsWorkspace.Форма.MainForm"); //описываем куда и какие формы использовать.
НастройкиНачальнойСтраницы.УстановитьСоставФорм(СоставФорм);
// Кладем объект настроек текущему пользователю.
ХранилищеСистемныхНастроек.Сохранить("Общее/НастройкиНачальнойСтраницы",,НастройкиНачальнойСтраницы);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#КонецЕсли
Итог: получаем свой рабочий стол (начальную страницу)!
1) Это работает при установке параметров сеанса, переопределяя уже существующие.
http://v8.1c.ru/o7/201402start/index.htm - информация 2014 года!
2) Пример работы с общим модулем "РаботаСИнтерфейсом"
https://its.1c.ru/db/pubv8devui/content/274/hdoc - более подробная информация сайта ИТС по подписке, если есть доступ. Это информация с книги "Разработка интерфейса прикладных решений на платформе "1С Предприятие8"".
Настройка состава форм на начальной странице
По аналогии с предыдущим примером можно при старте прикладного решения в зависимости от роли пользователя программно формировать его начальную страницу.
Основной объект, с помощью которого выполняется настройка начальной страницы, – НастройкиНачальнойСтраницы. Он позволяет работать как с настройками, заданными в конфигураторе разработчиком, так и с настройками, которые пользователь установил для себя в режиме 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. Начальная страница приложения для администратора