Как настроить интерфейс и скопировать избранные команды пользователям в 1С

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

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

Стандартный механизм копирования настроек через карточку пользователя

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

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

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

Использование начальной страницы как основного рабочего места

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

Рассмотрим алгоритм реализации такого интерфейса:

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

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

Программное копирование настроек через ХранилищеСистемныхНастроек

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

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


Процедура КопироватьИзбранное(ИсточникПользователь, ПриемникПользователь)
    
    // Определяем ключ объекта для избранного
    КлючОбъекта = "Общее/Избранное";
    
    // Извлекаем настройки источника
    Настройки = ХранилищеСистемныхНастроек.Загрузить(КлючОбъекта, , , ИсточникПользователь);
    
    Если Настройки <> Неопределено Тогда
        // Сохраняем настройки пользователю-приемнику
        ХранилищеСистемныхНастроек.Сохранить(КлючОбъекта, , Настройки, , ПриемникПользователь);
        Сообщить("Настройки избранного успешно скопированы для: " + ПриемникПользователь);
    КонецЕсли;
    
КонецПроцедуры

В этом коде мы используем объект ХранилищеСистемныхНастроек. Обратите внимание, что имя пользователя в параметрах должно соответствовать имени пользователя в информационной базе (логину).

Управление видимостью панелей и команд

Проанализируем ситуацию, когда нам нужно не просто добавить ссылки в избранное, но и максимально очистить интерфейс от лишнего. Это достигается через настройку Командного интерфейса. Программно это можно сделать с помощью метода УстановитьНастройкиИнтерфейсаКлиентскогоПриложения().

Посмотрим на пример структуры настройки:


НастройкиИнтерфейса = Новый НастройкиИнтерфейсаКлиентскогоПриложения;

// Скрываем панель разделов, если хотим оставить только начальную страницу
НастройкиИнтерфейса.СоставПанелей.Верх.Очистить();
НастройкиИнтерфейса.СоставПанелей.Лево.Очистить();

// Применяем настройки
УстановитьНастройкиИнтерфейсаКлиентскогоПриложения(НастройкиИнтерфейса);

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

Использование функциональных опций для фильтрации меню

Если мы хотим, чтобы лишние разделы исчезали автоматически "по галочке", наиболее правильным архитектурным решением будет использование Функциональных опций. Разберем этот механизм:

  1. Создаем Константу (например, ИспользоватьТолькоРабочееМесто) с типом Булево.
  2. Создаем объект Функциональная опция, привязываем её к этой константе.
  3. В составе функциональной опции указываем все "лишние" разделы, документы и отчеты.
  4. Если константа установлена в значение Ложь, все эти объекты мгновенно исчезнут из интерфейса пользователя, независимо от его прав.

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

Массовое тиражирование через Библиотеку стандартных подсистем

Если ваша конфигурация использует БСП, рекомендуем обратить внимание на подсистему "Настройки программы". В ней есть готовая обработка КопированиеНастроекПользователей. Она позволяет:

Для реализации формы с "галочками", о которой упоминал автор темы, можно использовать метаданные. Мы можем программно обойти дерево метаданных (Метаданные.Подсистемы, Метаданные.Отчеты), вывести их в таблицу значений на форме с флажками и при нажатии кнопки формировать массив навигационных ссылок для записи в ХранилищеСистемныхНастроек с ключом "Общее/Избранное".

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

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

← На главную