Как программно открыть окно определенной подсистемы при запуске 1С?

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия
← На главную

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

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

Способ 1. Использование навигационных ссылок

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

Проанализируем пример кода, который обычно размещают в модуле управляемого приложения в процедуре ПриНачалеРаботыСистемы:


Процедура ПриНачалеРаботыСистемы()
    // Пытаемся открыть раздел "Продажи"
    ПерейтиПоНавигационнойСсылке("e1cib/navigationpoint/Продажи");
КонецПроцедуры

Важные нюансы:

  1. Имя объекта: В строке "e1cib/navigationpoint/ИмяПодсистемы" необходимо указывать именно Имя подсистемы, как оно задано в конфигураторе (в дереве метаданных), а не её синоним.
  2. Вложенность: Если нужная подсистема является подчиненной, путь указывается через точку, например: e1cib/navigationpoint/Продажи.ОптовыеПродажи.
  3. Права доступа: Если у пользователя нет прав на просмотр объектов этой подсистемы или подсистема не включена в его командный интерфейс, ссылка просто не сработает.

Способ 2. Решение проблемы «пустого рабочего стола» через обработчик ожидания

Часто разработчики сталкиваются с тем, что код в ПриНачалеРаботыСистемы срабатывает, но пользователь все равно видит пустую начальную страницу. Это происходит из-за того, что на момент выполнения команды интерфейс приложения еще не полностью отрисован, и системные механизмы открытия рабочего стола «перебивают» программный переход.

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

Для реализации этого метода выполним следующие шаги:

1. В модуле управляемого приложения пропишем подключение обработчика:


Процедура ПриНачалеРаботыСистемы()
    // Запускаем процедуру перехода через 0.1 секунды
    ПодключитьОбработчикОжидания("Подключаемый_ОткрытьНужныйРаздел", 0.1, Истина);
КонецПроцедуры

2. Там же создадим саму процедуру (она обязательно должна быть экспортной):


Процедура Подключаемый_ОткрытьНужныйРаздел() Экспорт
    ПерейтиПоНавигационнойСсылке("e1cib/navigationpoint/Склад");
КонецПроцедуры

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

Способ 3. Переход к конкретному списку вместо раздела

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

Если мы откроем форму списка основного документа подсистемы, 1С автоматически подсветит нужную подсистему в панели разделов. Это решают проблему «неактивного меню функций», о которой упоминалось в обсуждении.

Пример ссылки для открытия списка документов «Заказ покупателя»:

ПерейтиПоНавигационнойСсылке("e1cib/list/Документ.ЗаказПокупателя");

Выясним причину, почему это лучше: пользователь сразу получает рабочий инструмент, а не просто пустую область с командами слева. Это сокращает количество кликов и повышает эффективность работы.

Способ 4. Настройка начальной страницы

Если пользователю требуется постоянный доступ к объектам определенной подсистемы, рассмотрим вариант изменения Начальной страницы. Вместо того чтобы пытаться «перепрыгнуть» на другой раздел, мы можем вывести нужные формы прямо на рабочий стол.

Шаги для настройки в конфигураторе:

  1. Откроем корень дерева метаданных и выберем пункт «Открыть рабочую область начальной страницы».
  2. В колонках (левой или правой) добавим те формы, которые входят в нужную подсистему.
  3. Используя механизм Видимости по ролям, настроим состав страницы так, чтобы менеджеры видели свои документы, а кладовщики — свои.

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

Способ 5. Использование параметров запуска (Ключ /URL)

Существует еще один метод, не требующий внесения изменений в код конфигурации. Мы можем настроить ярлык запуска для конкретных групп пользователей, используя параметр командной строки /URL.

Рассмотрим формат строки запуска:


"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /F "D:\Bases\MyBase" /URL "e1cib/navigationpoint/Продажи"

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

Резюме

Выбор конкретного метода зависит от архитектуры вашей конфигурации и бизнес-задач:

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

← На главную