При сопровождении и разработке конфигураций на платформе 1С:Предприятие 8.3 часто возникает задача автоматического открытия определенной формы при запуске сеанса. Иногда разработчики сталкиваются с обратной ситуацией: форма внешней или встроенной обработки открывается у конкретных пользователей при старте системы, однако глобальный поиск по коду конфигурации не дает результатов, а точка останова показывает пустой стек вызовов.
Разберем подробно, какими механизмами платформы реализуется запуск форм при старте, как работает начальная страница и как выяснить причину платформенного открытия формы.
Наиболее распространенный платформенный способ запуска формы без написания программного кода — включение ее в состав начальной страницы (рабочего стола) конфигурации.
Рассмотрим порядок настройки начальной страницы в дереве метаданных:
Если в настройках рабочей области указано несколько форм, но у текущего пользователя назначена роль, дающая права только на один объект из списка, платформа автоматически отобразит доступную форму на весь экран. Если прав на остальные формы нет, они просто не будут отрисованы интерфейсом.
Платформа позволяет переопределять состав начальной страницы для конкретных профилей доступа. Это объясняет поведение, когда форма открывается только у пользователей с определенными правами.
Разберем, как проверить и настроить начальную страницу для роли:
Если в конфигураторе начальная страница не содержит запускаемой формы, настройка могла быть выполнена непосредственно пользователем в режиме 1С:Предприятие.
Пользователь может настроить состав рабочего стола через пункт Главное меню -> Вид -> Настройка начальной страницы. Сохраненное состояние записывается в системное хранилище настроек (ХранилищеСистемныхНастроек). При каждом следующем входе платформа будет автоматически открывать выбранные формы.
Проанализируем ситуацию: если установить точку останова в процедурах ПриСозданииНаСервере или ПриОткрытии открываемой формы, стек вызовов может содержать всего одну строку — саму процедуру события.
Однострочный стек вызовов означает, что вызов инициирован непосредственно ядром платформы 1С:Предприятие, а не программным кодом модулей конфигурации (таких как МодульУправляемогоПриложения или модули подсистем БСП). Это прямо указывает на следующие сценарии:
/URL.Если требуется реализовать явное открытие формы через программный код, рассмотрим основные варианты.
В модуле управляемого приложения в событии ПриНачалеРаботыСистемы можно программно инициализировать открытие формы:
Процедура ПриНачалеРаботыСистемы()
// Открытие формы встроенной обработки
ОткрытьФорму("Обработка.РабочееМестоОператора.Форма.Форма");
КонецПроцедуры
Если логика открытия зависит от параметров командной строки, проанализируем использование свойства ПараметрЗапуска, передаваемого через ключ запуска /C:
Процедура ПриНачалеРаботыСистемы()
Если ПараметрЗапуска = "ОткрытьАРМ" Тогда
ОткрытьФорму("Обработка.РабочееМестоОператора.Форма.Форма");
КонецЕсли;
КонецПроцедуры
Также запуск конкретной формы можно реализовать с помощью ключа командной строки /URL, передав прямую навигационную ссылку на форму метаданных:
1cv8c.exe ENTERPRISE /IBName "МояБаза" /URL "e1cib/app/Обработка.РабочееМестоОператора.Форма.Форма"
При передаче навигационной ссылки платформа запускает приложение и сразу открывает указанную форму, при этом в стеке вызовов серверных процедур формы также не будет промежуточных процедур конфигурации.