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

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

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

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

Решение 1: Использование свойства "Подсистема с одной командой" (для 1С:Предприятие 8.3.22 и новее)

Для современных версий платформы 1С:Предприятие, начиная с версии 8.3.22.1704, разработчики существенно упростили решение этой задачи, добавив специальное свойство для подсистем. Это самый простой и рекомендуемый способ, который работает в интерфейсе "Такси" и в веб-клиенте.

  1. Создание или выбор подсистемы: Сначала мы должны убедиться, что у нас есть подсистема, для которой мы хотим настроить автоматическое открытие формы. Это может быть новая подсистема или уже существующая.
  2. Добавление команды открытия формы: В состав этой подсистемы мы добавляем только одну команду, которая будет отвечать за открытие нужной формы. Это может быть команда, открывающая ОбщаяФорма.ФормаСписка1, форму списка справочника, документа или отчета. Мы можем добавить эту команду через окно настройки командного интерфейса конфигурации.
  3. Установка свойства "Подсистема с одной командой":

    Для выбранной подсистемы в конфигураторе мы переходим к её свойствам. Среди свойств мы найдем флажок "Подсистема с одной командой". Мы должны установить этот флажок в положение "Истина".

    Что это дает? Когда этот флажок установлен и в подсистеме присутствует только одна команда, платформа автоматически распознает намерение разработчика. При выборе данной подсистемы в пользовательском интерфейсе (например, в панели разделов интерфейса "Такси") платформа не будет отображать список команд подсистемы, а немедленно выполнит единственную команду, тем самым открыв ассоциированную с ней форму.

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

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

Решение 2: Программное открытие формы с указанием окна (для ранних версий платформы и расширенных сценариев)

Если мы работаем с более ранними версиями платформы 1С:Предприятие (до 8.3.22) или наш сценарий требует более гибкого программного управления, мы можем использовать метод глобального контекста ОткрытьФорму(). Главная задача здесь — заставить форму открыться в текущей рабочей области, а не в новой вкладке или отдельном окне.

1. Использование метода ОткрытьФорму()

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

Рассмотрим базовый синтаксис:


ОткрытьФорму(ИмяФормы, Параметры, Владелец, Уникальность, Окно, РежимОткрытияОкна, ОписаниеОповещенияОЗакрытии, ИдентификаторМодальногоОкна);

Для нашей задачи ключевыми параметрами будут ИмяФормы и Окно.

2. Определение окна для открытия формы

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

ОткрытьФорму("ОбщаяФорма.ФормаСписка1",,,,ПолучитьОкна()[0]);

Давайте разберем этот код подробнее:

3. Место размещения кода

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

  1. Модуль управляемого приложения: В процедуре ПриНачалеРаботыСистемы. Этот вариант гарантирует, что форма откроется сразу при запуске приложения, если подсистема является начальной страницей. Однако, если требуется открытие формы именно при переключении на подсистему в процессе работы, этот вариант может быть менее подходящим, так как форма откроется один раз при старте.
  2. 
    // В модуле управляемого приложения
    Процедура ПриНачалеРаботыСистемы()
    
        // Мы можем добавить условие, чтобы форма открывалась только при определенных обстоятельствах
        // Например, если текущий пользователь имеет определенные права
        // Или если подсистема, к которой относится эта форма, активна
        // Однако, для простоты примера, мы откроем форму безусловно.
        ОткрытьФорму("ОбщаяФорма.ФормаСписка1",,,,ПолучитьОкна()[0]);
    
    КонецПроцедуры
    
  3. Модуль команды или обработчика события: Если нам нужно открывать форму именно при активации подсистемы (что ранее было сложной задачей без свойства "Подсистема с одной командой"), мы могли бы связать команду открытия формы с событием, которое имитирует активацию подсистемы. Однако это требовало бы более сложной логики и обхода стандартного поведения интерфейса. С появлением "Подсистемы с одной командой" это стало гораздо проще.

4. Уточнение параметров открытия формы

Из "Данных поиска" мы видим, что важную роль играют параметры РежимОткрытияОкна и свойство формы РежимРабочегоСтола.

Важные аспекты и дополнительные рекомендации

Мы проанализируем несколько дополнительных моментов, которые помогут нам в работе с подсистемами и формами:

  1. Командный интерфейс:

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

  2. Параметризация форм:

    Если открываемая форма требует параметров при открытии (например, идентификатор элемента, отбор, начальные значения), мы должны указывать их в наборе параметров формы, передаваемом в метод ОткрытьФорму(). Это делается через второй параметр метода:

    
    // Создадим структуру для параметров
    ПараметрыФормы = Новый Структура("Ключ", ЗначениеКлюча);
    ОткрытьФорму("Справочник.МойСправочник.ФормаЭлемента", ПараметрыФормы, ...);
    
  3. Начальная страница:

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

  4. Уровень вложенности подсистем:

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

  5. Общие формы:

    Общие формы — это формы, которые не привязаны к конкретным объектам метаданных (справочникам, документам и т.д.). Их можно использовать для создания любых вспомогательных или специализированных интерфейсов. При открытии общей формы мы всегда указываем её полное имя: "ОбщаяФорма.ИмяОбщейФормы".

Таким образом, мы видим, что задача по автоматическому открытию формы при выборе подсистемы имеет хорошо проработанные решения в платформе 1С:Предприятие. Для новых версий платформы достаточно использовать галочку "Подсистема с одной командой", что значительно упрощает разработку. Для более ранних версий или специфических сценариев мы всегда можем прибегнуть к программному открытию форм, тщательно настраивая параметры метода ОткрытьФорму() и учитывая особенности работы интерфейса.

← На главную