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

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

При проектировании интерфейса в управляемом приложении (интерфейс «Такси») разработчики часто сталкиваются с задачей: сделать так, чтобы при клике на определенный раздел в панели разделов не открывалось меню функций, а сразу открывалась конкретная форма — например, список документов, рабочее место или отчет. Разберем, как реализовать такое поведение штатными средствами платформы 1С:Предприятие.

Штатный механизм «Подсистема с одной командой»

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

Проанализируем ключевые условия, которые необходимы для корректного срабатывания этого механизма:

  1. Уровень подсистемы в иерархии: подсистема обязательно должна быть верхнего уровня, так как именно подсистемы первого уровня выводятся на панель разделов. Для подчиненных (вложенных) подсистем механизм не работает — они отображаются внутри панели функций.
  2. Включение в интерфейс: для подсистемы должно быть установлено свойство Включать в командный интерфейс в значение Истина.
  3. Единственная команда: в состав подсистемы должна входить строго одна команда (например, форма списка справочника, документ, отчет или отдельная ОбщаяКоманда). Если команд две и более, платформа откроет меню функций раздела.
  4. Права доступа: платформа подсчитывает доступные команды динамически. Если пользователю по ролям доступна строго одна команда, форма откроется по клику. Если прав нет вовсе — раздел не отобразится, а если прав доступно на несколько объектов — откроется стандартное меню.

Пошаговая настройка конфигурации

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

  1. Создадим новую подсистему первого уровня в ветке Подсистемы дерева метаданных или выберем существующую.
  2. Установим признак Включать в командный интерфейс в палитре свойств подсистемы.
  3. Перейдем на закладку Состав и включим в нее объект, форму которого требуется открывать (например, Обработка или конкретная ОбщаяКоманда).
  4. Откроем редактор командного интерфейса подсистемы и убедимся, что видимость включена ровно для одной команды. Обратим внимание: у справочников и документов по умолчанию могут создаваться две команды — открытие списка и создание нового элемента. В таком случае флаг видимости команды создания необходимо снять, оставив включенной только команду списка.
  5. Проверим права ролей пользователей: для целевой роли должна быть доступна только эта конкретная команда в рамках данной подсистемы.

Типичные ошибки при настройке

Выясним причину ситуаций, когда форма не открывается по клику, а открывается стандартная панель функций:

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

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

Альтернативные варианты реализации рабочего места

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

  1. Начальная страница (Рабочий стол): если форма представляет собой основное рабочее место пользователя, ее целесообразно включить в состав рабочей области начальной страницы в свойствах конфигурации. В этом случае форма будет открыта сразу при запуске программы.
  2. Программное открытие при старте системы: если необходимо гарантированно открывать форму при входе конкретного пользователя, используем вызов метода ОткрытьФорму() в модуле управляемого приложения внутри обработчика ПриНачалеРаботыСистемы():

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

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

← На главную