При внедрении информационных систем на базе 1С:Предприятие 8.3 часто возникает задача максимально упростить интерфейс для конечного пользователя. В идеале новый сотрудник, впервые заходя в программу, должен видеть не перегруженное меню со всеми разделами, а лаконичное рабочее место с набором необходимых отчетов и команд. Рассмотрим подробнее, как реализовать механизм настройки интерфейса "под ключ" и как тиражировать эти настройки между пользователями.
Начнем с самого простого и доступного способа, который не требует программирования. В современных конфигурациях, построенных на базе Библиотеки стандартных подсистем (БСП), предусмотрен встроенный функционал копирования пользовательских настроек. Разберем этот процесс по шагам:
Этот метод отлично подходит для разовой настройки. Однако, если нам нужно автоматизировать процесс или создать специфическое РМК (Рабочее место кассира/менеджера), стоит рассмотреть более глубокие технические подходы.
Если задача стоит так, чтобы пользователь принудительно видел определенную форму со ссылками, проанализируем возможности Начальной страницы информационного приложения. Вместо того чтобы заставлять пользователя искать команды в разделах, мы можем спроектировать специальную Общую форму.
Рассмотрим алгоритм реализации такого интерфейса:
РабочийСтолМенеджера).ОткрытьФорму().Таким образом, при входе в систему пользователь сразу увидит кастомизированное окно. Чтобы скрыть стандартные разделы (Продажи, Закупки и т.д.), мы можем программно управлять интерфейсом клиентского приложения.
Выясним причину, по которой ручное копирование может не подходить: это неудобно при большом количестве пользователей. Для автоматизации мы можем написать небольшую обработку, которая будет копировать Избранное программно. Данные об избранном хранятся в системном хранилище с определенным ключом.
Разберем пример кода, который позволяет прочитать настройки одного пользователя и записать их другому:
Процедура КопироватьИзбранное(ИсточникПользователь, ПриемникПользователь)
// Определяем ключ объекта для избранного
КлючОбъекта = "Общее/Избранное";
// Извлекаем настройки источника
Настройки = ХранилищеСистемныхНастроек.Загрузить(КлючОбъекта, , , ИсточникПользователь);
Если Настройки <> Неопределено Тогда
// Сохраняем настройки пользователю-приемнику
ХранилищеСистемныхНастроек.Сохранить(КлючОбъекта, , Настройки, , ПриемникПользователь);
Сообщить("Настройки избранного успешно скопированы для: " + ПриемникПользователь);
КонецЕсли;
КонецПроцедуры
В этом коде мы используем объект ХранилищеСистемныхНастроек. Обратите внимание, что имя пользователя в параметрах должно соответствовать имени пользователя в информационной базе (логину).
Проанализируем ситуацию, когда нам нужно не просто добавить ссылки в избранное, но и максимально очистить интерфейс от лишнего. Это достигается через настройку Командного интерфейса. Программно это можно сделать с помощью метода УстановитьНастройкиИнтерфейсаКлиентскогоПриложения().
Посмотрим на пример структуры настройки:
НастройкиИнтерфейса = Новый НастройкиИнтерфейсаКлиентскогоПриложения;
// Скрываем панель разделов, если хотим оставить только начальную страницу
НастройкиИнтерфейса.СоставПанелей.Верх.Очистить();
НастройкиИнтерфейса.СоставПанелей.Лево.Очистить();
// Применяем настройки
УстановитьНастройкиИнтерфейсаКлиентскогоПриложения(НастройкиИнтерфейса);
Этот подход позволяет создать максимально жесткий интерфейс ("режим киоска"), где пользователю доступны только те инструменты, которые мы вывели на начальную страницу.
Если мы хотим, чтобы лишние разделы исчезали автоматически "по галочке", наиболее правильным архитектурным решением будет использование Функциональных опций. Разберем этот механизм:
ИспользоватьТолькоРабочееМесто) с типом Булево.Ложь, все эти объекты мгновенно исчезнут из интерфейса пользователя, независимо от его прав.Это самый быстрый способ массово управлять видимостью элементов интерфейса без написания сложного кода по копированию настроек.
Если ваша конфигурация использует БСП, рекомендуем обратить внимание на подсистему "Настройки программы". В ней есть готовая обработка КопированиеНастроекПользователей. Она позволяет:
Для реализации формы с "галочками", о которой упоминал автор темы, можно использовать метаданные. Мы можем программно обойти дерево метаданных (Метаданные.Подсистемы, Метаданные.Отчеты), вывести их в таблицу значений на форме с флажками и при нажатии кнопки формировать массив навигационных ссылок для записи в ХранилищеСистемныхНастроек с ключом "Общее/Избранное".
Важный момент: навигационная ссылка для программного добавления в избранное получается методом ПолучитьНавигационнуюСсылку(ОбъектМетаданных). Это позволяет динамически формировать список команд без жесткой привязки к строковым именам.
Таким образом, мы рассмотрели несколько уровней решения задачи: от простых пользовательских действий до программного управления интерфейсом через системные хранилища и функциональные опции. Выбор конкретного метода зависит от требуемой гибкости и частоты изменения настроек в вашей организации.