Произвольная начальная страница через расширение (программно)

06.09.23

Разработка - Работа с интерфейсом

Установка своей формы произвольному пользователю на начальную страницу.

В копилку! (тестировалось и работает на платформе: 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. Начальная страница приложения для администратора

обработка начальная страница расширение программно

См. также

Богатый редактор картинок, хранимых в базе, с возможностью РИСОВАНИЯ. Редактор внешних файлов картинок. Объект, расширяющий возможности работы с картинками из встроенного языка (Три в одном) + Обработка «Стандартизация картинок»

Работа с интерфейсом Рабочее место Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Платные (руб)

Обработка предназначена для редактирования картинок в режиме «Предприятие», с возможностью РИСОВАТЬ на них. Поддерживается работа как в обычных формах (толстый клиент) так и на управляемых формах (тонкий клиент). Обработка позволяет редактировать как картинки, хранимые в базе, так и графические файлы с диска на файловой системе. Помимо базовых функций (изменение размеров, преобразование формата, обрезание картинки, повороты и т.п.) – редактор имеет богатый набор инструментов для рисования. Доступна функция вставки изображения из буфера обмена. Также обработка может быть использована из встроенного языка как объект для редактирования картинок. Объект может быть использован: на стороне клиента, на стороне сервера, из внешнего соединения. Данная обработка будет особенно полезна тем, кто вносит картинки в базу (изображения номенклатуры, фотографии физических лиц и т.п.). Функционал реализуется с использованием JavaScript и бесплатного ПО ImageMagick (без использования внешних компонент).

6000 руб.

16.01.2015    61795    43    59    

80

[Расширения] Динамическое управление видимостью и доступностью элементов форм (УФ) (8.3.6+)

Работа с интерфейсом Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Платные (руб)

Механизм «Динамическое управление доступом к элементам форм объектов 1С8» предназначен для обеспечения возможности оперативного управления видимостью и доступностью элементов форм документов и справочников продуктов фирмы «1С» «1С:Предприятие 8». Решение универсальное, встраивается в любую конфигурацию с минимальными доработками, что позволяет без проблем обновлять типовые решения.

5000 руб.

14.01.2016    54402    16    21    

42

Управление дашбордами

Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Обработка предназначена для создания и управления дашбордами.

2400 руб.

29.06.2020    16697    21    4    

35

Новогоднее оформление для 1С

Работа с интерфейсом Платформа 1С v8.3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 Бесплатно (free)

Добавьте новогоднего настроения! Расширение создает декорацию в виде гирлянды на некоторых формах объектов.

27.12.2023    10735    750    elcoan    45    

106

Конструктор HTML, CSS и javascript

Инструментарий разработчика Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

2 стартмани

10.04.2023    9611    151    acces969    31    

118

Модель состояния для MVC

Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

"MVC плохо применима в 1С" - познакомьтесь с моделью состояния и, возможно, ваше мнение поменяется! Представленное решение является эволюционным развитием идеи реализации MVC для 1С. В новой версии добавлены DSL для описания модели состояния, а также параметризация свойств параметров и элементов формы.

1 стартмани

05.07.2022    3665    kalyaka    2    

27

Табло очереди заказов на экран телевизора

WEB-интеграция Работа с интерфейсом Платформа 1С v8.3 1С:Розница 2 Платные (руб)

Связка из веб-приложения и расширения для 1С: Розница 2.3.

3600 руб.

29.04.2022    12080    1    5    

10
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. akim2040 41 14.08.19 10:26 Сейчас в теме
Я не внимательно читал, или не пойму.
чем отличие от более удобного изменения рабочего стола вот этой обработкой? https://infostart.ru/public/556324/

каждый пользователь что хочет, то и может себе поставить на рабочий стол
2. nagaitseff 171 14.08.19 11:30 Сейчас в теме
(1) Конечно можно использовать и предложенную вами обработку, но у пользователя должно быть право "Интерактивное открытие внешних обработок", что например для больших организаций не очень и часто такое право отключают у пользователей или не дают вовсе.
Способ же который я предложил, не только не зависит от этого права, но и позволяет еще использовать дополнительные обработки, которых нет в базе на поддержке, это как пример.
3. akim2040 41 14.08.19 11:31 Сейчас в теме
(2) Теперь понял. Спасибо
4. AlexeyPapanov 458 15.08.19 14:32 Сейчас в теме
А что за начальная страница на скриншоте к публикации? Не из УНФ случайно? Так понравилось. Хочу найти.
6. nagaitseff 171 16.08.19 03:47 Сейчас в теме
(4) Добрый день, да это УНФ.
5. Yashazz 4709 16.08.19 00:03 Сейчас в теме
7. nagaitseff 171 16.08.19 03:50 Сейчас в теме
(5) Очень приятно, я Евгений.
TigerS74; корум; KoC_one; Sejix; almierm; user1725319; mark_oilbass; Nowa; AnryMc; It-developer; denwer7; leasing; ixijixi; CyberCerber; nagimo; +15 Ответить
8. пользователь 16.08.19 12:11
Сообщение было скрыто модератором.
...
22. Altez50 1 20.04.23 17:42 Сейчас в теме
(5) Мой новый босс сыт баянами и требует поместить обработки (к счастью, известны конкретные 3) с начальной страницы в родительское окно со вкладками. Решаемый квест?
29. EvgeniuXP 06.09.23 14:23 Сейчас в теме
(22) а что вы имеете против баянов - баян - хороший музыкальный инструмент :)))
9. Yashazz 4709 16.08.19 14:35 Сейчас в теме
Интересна позиция официальных представителей ИС насчёт копирования материалов с its.1c.ru. У автора есть такое разрешение, ведь правда же?
10. nagaitseff 171 16.08.19 14:58 Сейчас в теме
(9) Добрый день, на сайте 1с написано, копирование материала, только с указанием ссылки на материал (ресурс). Ссылки в статье указал.
11. WellMaster 104 21.08.19 16:08 Сейчас в теме
Вот если вы найдете способ убрать с начальной страницы заголовок "Начальная страница" и кнопки перехода - цены вам не будет! )
12. Trucker 6 22.08.19 09:08 Сейчас в теме
(11)
В режиме РабочееМесто мы скрываем все панели и область системных команд (главное меню и набор вспомогательных команд). Скрываем надпись Начальная страница, кнопки навигации Вперед/Назад, а также отключаем сочетания клавиш, которые используются в этих скрытых элементах интерфейса.

https://wonderland.v8.1c.ru/blog/novye-rezhimy-osnovnogo-okna/
корум; user1630260; +2 Ответить
13. PowerBoy 3350 06.11.19 09:21 Сейчас в теме
(11)
&После("ПередНачаломРаботыСистемы")
Процедура Плам_ПередНачаломРаботыСистемы(Отказ)
	КлиентскоеПриложение.УстановитьРежимОсновногоОкна(РежимОсновногоОкнаКлиентскогоПриложения.РабочееМесто);
КонецПроцедуры
G3schaFt; adhocprog; WellMaster; nagaitseff; +4 Ответить
14. nagaitseff 171 07.11.19 06:15 Сейчас в теме
(13)
КлиентскоеПриложение.УстановитьРежимОсновногоОкна(РежимОсновногоОкнаКлиентскогоПриложения.РабочееМесто);


Отличное решение.
16. WellMaster 104 20.11.19 16:10 Сейчас в теме
(13) Спасибо. Лишний повод обновить платформу.
15. nagaitseff 171 07.11.19 06:20 Сейчас в теме
(11) Используйте предложенный вариант 13. PowerBoy, работает изумительно.

Единственно что можно добавить, это ограничение по роли, например. Как в моем примере.

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

А здесь написать следующее:

&После("ПередНачаломРаботыСистемы")
Процедура Плам_ПередНачаломРаботыСистемы(Отказ)
    Если МояРоль = Истина Тогда   //Моя роль это возврат функции с вашего общего модуля. 
        КлиентскоеПриложение.УстановитьРежимОсновногоОкна(РежимОсновногоОкнаКлиентскогоПриложения.РабочееМесто);
    КонецЕсли;
КонецПроцедуры


Еще можно попробовать дополнительно другие варианты, в предложенном используется "РабочееМесто", а есть еще "Киоск" и "ПолноэкранноеРабочееМесто".

Успехов!
WellMaster; +1 Ответить
17. Scroudge 3 30.10.22 16:22 Сейчас в теме
вопрос по расширению. оно закрывает доступ пользователя к меню Настройки-Настройка начальной страницы?
18. nagaitseff 171 01.11.22 09:21 Сейчас в теме
вроде нет, точно сказать не смогу, надо вспоминать.
19. chiki-79 15.01.23 15:25 Сейчас в теме
(17) День добрый. удалось ли вам решить вопрос с доступом пользователя к меню Настройки-Настройка начальной страницы?
20. nagaitseff 171 16.01.23 07:25 Сейчас в теме
(19) не занимался этим вопросом, пока не хватает времени просто ((
21. user654398_liana0988 26.01.23 17:01 Сейчас в теме
В управлении торговли 11.4 будет работать?
23. nagaitseff 171 20.04.23 17:45 Сейчас в теме
(21) должен работать, УТ тоже же на БСП.
24. zykininho 19.06.23 14:36 Сейчас в теме
Есть ли возможность программно управлять размером областей на начальной странице? В Конфигураторе для этого есть поле "Высота" рядом с "Форма" и "Видимость"
25. nagaitseff 171 28.06.23 08:51 Сейчас в теме
(24) слушай, я не пробовал делать программно размер областей, должны быть возможности. Можно поиграться, добавив любую свою созданную форму и попробовать.
26. Дмитрий74Чел 234 20.07.23 08:13 Сейчас в теме
(24) Нет. Все что доступно вы можете увидеть в синтакс-помощнике в статье СоставФормНачальнойСтраницы. А там только добавление/удаление элементов (имен форм) из массива.
zykininho; +1 Ответить
27. Дмитрий74Чел 234 20.07.23 08:15 Сейчас в теме
(0) автор, замените пожалуйста в статье
ПользователиИнформационнойБазы.ТекущийПользователь().Роли.Содержит(Метаданные.Роли.Найти("Администрирование"))
на простое
РольДоступна("Администрирование").
А то люди поди копируют.
30. nagaitseff 171 06.09.23 15:01 Сейчас в теме
28. dimasts 22 04.09.23 10:25 Сейчас в теме
Тут есть такая проблема. Которую не понятно как решить.

Сделал разные варианты страницы для ТонкогоКлиента и для МобильногоКлиента.

При переходе с одного на другой отображается та страница, которая была запущена в другом клиенте. На мобильном от тонкого и наоборот. Как буд-то не обновились настройки.

!!! Только уже при повторном перезапуске появляется правильная страница !!!

Код запускаю в УстановкаПараметровСеанса(). Если ТребуемыеПараметры = Неопределено ...

Может есть какая-то функция типа "ОбновитьНачальнуюСтраницу" или "ПеречитатьНастройкиИзХранилища"???
31. lizardlab 01.12.23 00:25 Сейчас в теме
Добрый день.
А вот как программно задать шаблон начальной страницы?
В оригинале Одна колонка, а надо Две колонки разной ширины.
Оставьте свое сообщение