Как реализовать второй рабочий стол для разных пользователей в 1С:Предприятие 8.3?

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

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

Метод 1. Использование нескольких форм начальной страницы и ограничение прав

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

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

Важно: Если у пользователя (например, у администратора) есть полные права или обе роли одновременно, он увидит сразу все формы на начальной странице. Как отмечают опытные разработчики, "полноправному пользователю будет больно смотреть на это дело", поэтому при таком подходе следует тщательно проектировать матрицу ролей.

Метод 2. Динамическое управление видимостью элементов одной формы

Иногда удобнее создать одну универсальную форму рабочего стола и программно скрывать или отображать ее части. Рассмотрим, как это сделать правильно. Вместо того чтобы создавать десять разных форм, мы создаем одну, но разделяем ее на логические блоки (группы).

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


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    // Проверяем роль пользователя программно
    Если РольДоступна("РуководительОтдела") Тогда
        Элементы.ГруппаПродажи.Видимость = Истина;
        Элементы.ГруппаСклад.Видимость = Ложь;
    ИначеЕсли РольДоступна("Кладовщик") Тогда
        Элементы.ГруппаПродажи.Видимость = Ложь;
        Элементы.ГруппаСклад.Видимость = Истина;
    КонецЕсли;
    
КонецПроцедуры

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

Метод 3. Использование функциональных опций

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

Разберем алгоритм работы:

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

Система сама позаботится о том, чтобы скрыть ненужные элементы рабочего стола, если опция выключена, что избавляет программиста от написания лишнего кода в ПриСозданииНаСервере.

Метод 4. Программное открытие альтернативной формы при запуске

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

Выясним, как это реализовать:


&НаКлиенте
Процедура ПриНачалеРаботыСистемы()
    
    // Определяем, какую форму открыть на основе параметров сеанса
    ПараметрыОткрытия = Новый Структура("РежимРаботы", "Экспедитор");
    ОткрытьФорму("ОбщаяФорма.РабочийСтолЛогистика", ПараметрыОткрытия, , Истина);
    
КонецПроцедуры

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

Метод 5. Динамическое создание элементов формы (Dashboard)

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

Пример добавления элемента в коде:


&НаСервере
Процедура ДобавитьИндикаторНаФорму()
    
    НовыйЭлемент = Элементы.Добавить("ИндикаторПродаж", Тип("ДекорацияФормы"), Элементы.ГруппаДинамическая);
    НовыйЭлемент.Вид = ВидДекорацииФормы.Надпись;
    НовыйЭлемент.Заголовок = "Текущий план выполнен на 85%";
    
КонецПроцедуры

Этот подход сложнее в отладке, но дает максимальную гибкость: вы можете выводить на рабочий стол только те блоки, которые актуальны для конкретного пользователя в текущую секунду (например, уведомления о срочных задачах).

Метод 6. Рабочий стол на основе HTML-поля

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

Взаимодействие с системой 1С происходит через обработчик события ПриНажатии в поле HTML, где через специальные схемы (или механизм onclick с вызовом процедур 1С) можно открывать документы, отчеты или выполнять расчеты.

Рекомендации по выбору решения

Подведем итог и проанализируем, какой метод выбрать в зависимости от ситуации:

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

← На главную