В платформе «1С:Предприятие 8.3» при использовании современного интерфейса «Такси» разработчики часто сталкиваются с особенностью: при запуске программы по умолчанию всегда активируется раздел «Главное» (он же — основной раздел конфигурации). Если ваша конфигурация узкоспециализированная, простая или служебная, этот раздел может оказаться абсолютно пустым. Пользователям приходится при каждом запуске совершать лишнее действие — вручную переключаться на свой рабочий раздел.
В рамках этой статьи мы подробно разберем, как решить эту проблему. Мы рассмотрим несколько эффективных способов: от программной активации нужного раздела при старте до кардинальной перестройки интерфейса с использованием современных режимов работы основного окна платформы «1С».
По умолчанию платформа не предоставляет интерактивной настройки в конфигураторе, позволяющей просто выбрать «активный раздел по умолчанию». Тем не менее, мы можем управлять поведением интерфейса программно в момент запуска клиентского приложения.
Для этого мы воспользуемся возможностями встроенного языка в модуле управляемого приложения. Проанализируем событие ПриНачалеРаботыСистемы.
Для активации конкретной подсистемы (раздела) применяется метод ПерейтиПоНавигационнойСсылке(). Однако в интерфейсе «Такси» простой вызов перехода по навигационной ссылке раздела может быть проигнорирован платформой, если на экране одновременно открывается стандартная начальная страница. Чтобы гарантировать переключение фокуса, мы рекомендуем совместить переход по ссылке с принудительным открытием формы, принадлежащей целевому разделу, позиционируя ее в основном окне приложения.
Разберем по шагам, как это реализовать:
ПриНачалеРаботыСистемы следующий код:
Процедура ПриНачалеРаботыСистемы()
// Укажем имя подсистемы, которую необходимо активировать.
// Обратите внимание: имя должно соответствовать имени подсистемы в конфигураторе.
ИмяНужногоРаздела = "УправлениеСкладом";
Попытка
// Выполняем переход к навигационной точке нужного раздела
ПерейтиПоНавигационнойСсылке("e1cib/navigationpoint/" + ИмяНужногоРаздела);
// Для принудительной перерисовки интерфейса откроем ключевую форму этого раздела,
// связав ее с основным окном приложения
ПараметрыФормы = Новый Структура;
ОткрытьФорму("ОбщаяФорма.РабочийСтолСклада", ПараметрыФормы, , , ПолучитьОкна()[0]);
Исключение
// Обработка исключения на случай, если у пользователя нет прав на этот раздел
ЗаписатьЛогСобытия("Не удалось активировать стартовый раздел: " + ОписаниеОшибки());
КонецПопытки;
КонецПроцедуры
Этот метод позволяет автоматически «перебросить» пользователя в нужную рабочую область сразу после авторизации в системе.
Раздел «Главное» тесно связан с понятием Начальной страницы (ранее известной как «Рабочий стол»). Если на начальной странице нет отображаемых форм, раздел все равно может выводиться на панель разделов как пустой заглушка.
Давайте настроим рабочую область начальной страницы таким образом, чтобы вместо стандартного пустого шаблона там отображалась наша собственная, полезная форма.
Выполним следующие шаги:
После этого при старте системы раздел «Главное» перестанет быть пустым. В нем сразу будут отображаться критически важные для работы данные, что избавит от необходимости немедленного переключения в другие разделы.
Если наша конфигурация ориентирована на выполнение одной конкретной задачи или имеет очень простой интерфейс, стандартная панель разделов «Такси» вообще не нужна. В современных версиях платформы 1С реализованы специализированные режимы отображения основного окна клиентского приложения.
Рассмотрим подробнее два наиболее подходящих режима:
Для перевода конфигурации в режим «Рабочее место» выполним следующие действия:
ОбщаяФорма, которая будет выступать нашим главным рабочим столом. Назовем её, например, ФормаРабочегоМеста. Разместим на ней все необходимые списки, кнопки запуска обработок и отчеты.ПриНачалеРаботыСистемы установим режим открытия основного окна:
Процедура ПриНачалеРаботыСистемы()
// Устанавливаем режим основного окна "Рабочее место"
ПараметрыИнтерфейса = Новый ПараметрыИнтерфейсаКлиентскогоПриложения;
ПараметрыИнтерфейса.РежимОсновногоОкна = РежимОсновногоОкнаКлиентскогоПриложения.РабочееМесто;
// Применяем настройки интерфейса
УстановитьПараметрыИнтерфейсаКлиентскогоПриложения(ПараметрыИнтерфейса);
// Открываем нашу форму, которая займет все рабочее пространство
ОткрытьФорму("ОбщаяФорма.ФормаРабочегоМеста");
КонецПроцедуры
При таком подходе панель разделов (включая пустое «Главное») полностью исчезнет из интерфейса, а пользователь сразу получит готовый и лаконичный инструмент для работы.
Бывают ситуации, когда панель разделов нужна для некоторых административных функций, но рядовому пользователю её видеть не обязательно. Мы можем принудительно скрыть панель разделов при запуске программы, используя программную запись в системное хранилище настроек платформы.
Настройки расположения и видимости панелей хранятся в специальной системной структуре. Мы можем переопределить её при старте системы:
Процедура ПриНачалеРаботыСистемы()
// Проверим, нужно ли скрывать панели для текущего пользователя
Если НЕ РольДоступна("ПолныеПрава") Тогда
// Формируем пустую структуру настроек панели разделов
НастройкиПанелей = Новый Структура;
НастройкиПанелей.Вставить("Видимость", Ложь);
// Записываем настройки в системное хранилище, чтобы скрыть панель разделов
ХранилищеСистемныхНастроек.Сохранить(
"Общее/ПанельРазделов/НастройкиПользователя",
"",
НастройкиПанелей,
,
ИмяПользователя()
);
КонецЕсли;
КонецПроцедуры
В результате выполнения этого кода при запуске у пользователя с ограниченными правами панель разделов будет полностью скрыта. Для навигации он сможет использовать форму начальной страницы или специально выведенные кнопки на основной форме.
Если мы хотим полностью убрать раздел «Главное» или другие подразделы динамически, в зависимости от определенных условий (например, параметров учета или констант), лучшим решением будет использование механизма Функциональных опций (ФО).
Выясним, как привязать видимость подсистемы к функциональной опции:
Константу (например, ИспользоватьРазделГлавное с типом Булево).ФункциональнаяОпция, назовем ее ОтображатьРазделГлавное.ИспользоватьРазделГлавное.Ложь.Если значение константы будет установлено в Ложь, платформа автоматически исключит выбранные подсистемы из командного интерфейса всех пользователей, а раздел «Главное» перестанет отображаться на панели разделов.
Мы проанализировали различные варианты решения проблемы пустого раздела «Главное» в интерфейсе «Такси». Выберите оптимальный путь в зависимости от архитектуры вашей конфигурации: от простой настройки состава начальной страницы до полного перехода в режим работы «Рабочее место».