Как добавить несколько обработок на начальную страницу 1С в виде вкладок

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

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

Анализ стандартных возможностей платформы

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

Важный нюанс: стандартный механизм не умеет переключать эти формы как вкладки. Они будут просто располагаться друг под другом или рядом. Чтобы добиться именно «вкладочного» интерфейса, нам придется применить архитектурный подход «Мастер-формы».

Метод 1: Создание мастер-формы с программным подключением объектов

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

Шаг 1. Подготовка формы-контейнера

Создадим новую общую форму или форму внутри одной из обработок, которую мы назначим основной. Назовем её ФормаРабочегоСтола. В редакторе формы добавим элемент управления типа Группа - Страницы. Внутри этой группы создадим две страницы (вкладки): «Обработка 1» и «Обработка 2».

Шаг 2. Перенос интерфейса

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

Шаг 3. Использование программного вызова логики

Чтобы не копировать весь программный код из модуля второй обработки, мы воспользуемся механизмом создания объекта. В модуле мастер-формы мы будем обращаться к функционалу второй обработки через её объект. Рассмотрим пример кода:


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    // Создаем экземпляр обработки для доступа к её методам
    ОбъектВторойОбработки = Обработки.ИмяВашейВторойОбработки.Создать();
    // Если нужно, чтобы данные объекта были доступны между вызовами, 
    // можно сохранить его в реквизит формы типа "Произвольный" (с ограничениями) 
    // или повторно создавать при необходимости.
КонецПроцедуры

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

Метод 2: Использование расширений конфигурации

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

  1. Создадим новое расширение и добавим в него обе обработки.
  2. В расширении создадим общую форму, как описано в первом методе.
  3. Переопределим рабочую область начальной страницы в расширении, указав нашу новую форму как единственную.

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

Метод 3: Программное управление видимостью

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

Выясним причину, почему разработчики часто выбирают «слияние» обработок: это упрощает отладку. Если вы решите объединить код, используйте области (#Область), чтобы четко разделять, какая часть кода относится к первой вкладке, а какая — ко второй.


#Область ЛогикаПервойВкладки
&НаКлиенте
Процедура КомандаРаз(Команда)
    // Действие для первой вкладки
КонецПроцедуры
#КонецОбласти

#Область ЛогикаВторойВкладки
&НаКлиенте
Процедура КомандаДва(Команда)
    // Действие для второй вкладки
КонецПроцедуры
#КонецОбласти

Рекомендации по оптимизации производительности

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

Итоги

Мы проанализировали ситуацию и выяснили, что стандартного переключателя «вкладки» для разных форм на начальной странице не существует. Однако, используя подход с формой-контейнером и элементом Группа - Страницы, мы можем создать профессиональный и удобный интерфейс. Помните, что перенос интерфейса — это лишь визуальная часть; для сохранения логики используйте вызовы функций из модулей объектов соответствующих обработок, чтобы избежать дублирования программного кода.

← На главную