При разработке конфигураций на платформе 1С:Предприятие 8.3 с использованием управляемых форм часто возникает задача кастомизации интерфейса под конкретных пользователей или группы сотрудников. В отличие от обычных форм (7.7 или 8.2), где можно было просто «нарисовать» интерфейс, управляемый интерфейс строится декларативно. Рассмотрим, как реализовать требования заказчика по созданию уникальных меню, изменению названий разделов и расположения элементов.
Самый простой и стандартный способ управления интерфейсом — это использование Подсистем и Ролей. Платформа 1С позволяет гибко настраивать видимость разделов интерфейса в зависимости от прав доступа пользователя.
Проанализируем алгоритм реализации этого метода:
Подсистему. В свойстве «Состав» укажем объекты (справочники, документы, отчеты), которые должны в нее входить.Роли. В окне редактирования роли на закладке «Подсистемы» снимем галочку «Просмотр» у всех подсистем, кроме нужной для данной роли.Важно помнить, что если один и тот же документ должен называться по-разному для разных отделов (например, для одних это «Реализация», а для других «Продажа»), стандартный механизм подсистем этого не позволит — заголовок объекта в метаданных один. В этом случае придется использовать другие методы.
Разберем ситуацию, когда пользователям нужно разное расположение элементов. Вместо того чтобы настраивать интерфейс под каждого из 65 сотрудников, целесообразно применить метод функционального деления. Как показывает практика, даже в большой компании количество уникальных ролей редко превышает 10–12.
Рассмотрим шаги по оптимизации:
Командный интерфейс для каждой роли в конфигураторе. Здесь можно определить порядок следования команд и их видимость по умолчанию.Если заказчик настаивает на уникальном расположении элементов «в два столбика» или специфических названиях кнопок, лучшим решением будет создание собственной формы Обработки, которая будет выполнять роль рабочего стола.
Проанализируем, как это сделать:
РабочийСтолМенеджера.ПриСозданииНаСервере) можно программно управлять заголовками кнопок в зависимости от того, какой пользователь открыл форму.Пример кода для динамического изменения заголовков на рабочем столе:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ТекущийПользователь = ПользователиИнформационнойБазы.ТекущийПользователь();
Если ТекущийПользователь.Имя = "Иванов" Тогда
Элементы.ГруппаПродажи.Заголовок = "Мои Сделки";
Элементы.КнопкаОткрытьСписок.Заголовок = "Открыть реестр отгрузок";
ИначеЕсли ТекущийПользователь.Имя = "Петров" Тогда
Элементы.ГруппаПродажи.Заголовок = "Складской учет";
КонецЕсли;
КонецПроцедуры
После создания формы ее нужно назначить в качестве Рабочего стола в настройках интерфейса конфигурации или программно открывать при старте системы.
Для более тонкой настройки интерфейса без создания множества ролей можно использовать Функциональные опции. Рассмотрим ситуацию: нам нужно скрывать или показывать определенные поля или целые подсистемы на основании настроек в справочнике «Пользователи».
Константу или реквизит справочника Пользователи типа Булево (например, ПоказыватьРазделПроизводство).Функциональная опция, где укажем источник данных — нашу константу или реквизит.Если конфигурация разработана на базе Библиотеки стандартных подсистем (БСП), мы можем воспользоваться механизмом управления настройками пользователей. Это позволяет администратору настроить интерфейс (расположение панелей, состав меню «Избранное», настройки отчетов) под собой, а затем транслировать эти настройки другим пользователям.
Выясним порядок действий:
Главное меню — Вид — Настройка панелей. Перетащим панель разделов, панель открытых окон и панель функций так, как требует заказчик.Администрирование — Настройки пользователей и прав — Копирование настроек.Этот метод избавляет от необходимости заходить под каждым пользователем отдельно, но позволяет быстро привести интерфейс 65 сотрудников к единому (или нескольким групповым) стандарту.
Для того чтобы не изменять основную конфигурацию и не усложнять процесс обновления, рассмотрим применение Расширений. Мы можем создать несколько расширений (например, ИнтерфейсТорговля, ИнтерфейсСклад).
В расширении можно:
Синоним.Преимущество этого метода в том, что мы можем подключать конкретное расширение только нужным пользователям через профили безопасности или программно, не затрагивая ядро системы.
Заключение: Несмотря на то, что управляемые формы ограничивают нас в «рисовании» интерфейса, комбинация подсистем, ролей и кастомных рабочих столов на базе обработок позволяет реализовать практически любые требования к визуальному представлению программы.