Как открыть форму обработки при запуске 1С и почему она может открываться автоматически?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

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

1. Рабочая область начальной страницы конфигурации

Наиболее распространенный платформенный способ запуска формы без написания программного кода — включение ее в состав начальной страницы (рабочего стола) конфигурации.

Рассмотрим порядок настройки начальной страницы в дереве метаданных:

  1. Откроем дерево метаданных конфигуратора.
  2. Нажмем правой кнопкой мыши по корневому элементу конфигурации и выберем пункт Открыть рабочую область начальной страницы.
  3. В открывшемся окне настроим отображение колонок (левая и правая колонка или одна широкая колонка).
  4. Добавим нужную форму обработки в состав рабочей области.

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

2. Индивидуальная настройка начальной страницы для роли

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

Разберем, как проверить и настроить начальную страницу для роли:

  1. В дереве метаданных развернем ветку Общие -> Роли.
  2. Нажмем правой кнопкой мыши по интересующей роли и выберем пункт Открыть начальную страницу.
  3. Проверим, переопределен ли состав форм для данной роли. Если флажок переопределения установлен, система будет использовать именно этот персональный макет рабочего стола при входе пользователя под указанной ролью.

3. Пользовательская настройка рабочего стола

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

Пользователь может настроить состав рабочего стола через пункт Главное меню -> Вид -> Настройка начальной страницы. Сохраненное состояние записывается в системное хранилище настроек (ХранилищеСистемныхНастроек). При каждом следующем входе платформа будет автоматически открывать выбранные формы.

4. Анализ причин запуска и диагностика стека вызовов

Проанализируем ситуацию: если установить точку останова в процедурах ПриСозданииНаСервере или ПриОткрытии открываемой формы, стек вызовов может содержать всего одну строку — саму процедуру события.

Однострочный стек вызовов означает, что вызов инициирован непосредственно ядром платформы 1С:Предприятие, а не программным кодом модулей конфигурации (таких как МодульУправляемогоПриложения или модули подсистем БСП). Это прямо указывает на следующие сценарии:

  1. Форма включена в рабочую область начальной страницы (в конфигурации, в роли или в персональных настройках пользователя).
  2. Запуск базы произведен с использованием навигационной ссылки платформы через параметр командной строки /URL.
  3. Сработал платформенный механизм восстановления состояния открытых окон предыдущего сеанса.

5. Программные способы открытия формы при старте

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

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


Процедура ПриНачалеРаботыСистемы()
    
    // Открытие формы встроенной обработки
    ОткрытьФорму("Обработка.РабочееМестоОператора.Форма.Форма");
    
КонецПроцедуры

Если логика открытия зависит от параметров командной строки, проанализируем использование свойства ПараметрЗапуска, передаваемого через ключ запуска /C:


Процедура ПриНачалеРаботыСистемы()
    
    Если ПараметрЗапуска = "ОткрытьАРМ" Тогда
        ОткрытьФорму("Обработка.РабочееМестоОператора.Форма.Форма");
    КонецЕсли;
    
КонецПроцедуры

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

1cv8c.exe ENTERPRISE /IBName "МояБаза" /URL "e1cib/app/Обработка.РабочееМестоОператора.Форма.Форма"

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

← На главную