В процессе развития информационных систем на базе 1С часто возникает необходимость перевести пользователей на более современный интерфейс «Такси». Это может быть связано с массовым обновлением парка мониторов, переходом на новые типовые решения или просто желанием повысить эргономику работы. В данной статье мы подробно рассмотрим, как решить эту задачу не только вручную, но и программно, а также через параметры запуска.
Прежде чем приступать к написанию кода, выясним причину, по которой настройки могут не применяться. В платформе 1С:Предприятие 8.3 существует глобальное свойство конфигурации, которое определяет доступность различных вариантов интерфейса. Если в корне конфигурации жестко задано использование только старого интерфейса, никакие программные методы не помогут.
Проанализируем действия, которые необходимо выполнить в Конфигураторе:
ВариантИнтерфейсаКлиентскогоПриложения.Теперь разберем по шагам основной программный метод. Основная идея заключается в том, чтобы сформировать объект настроек и записать его в системное хранилище для конкретного пользователя. Для этого используются объекты НастройкиКлиентскогоПриложения и НастройкиИнтерфейсаКлиентскогоПриложения.
Посмотрим на пример кода, который позволяет переключить интерфейс:
Процедура УстановитьИнтерфейсТаксиДляПользователя(ИмяПользователя) Экспорт
// Создаем объект настроек клиента
НастройкиКлиента = Новый НастройкиКлиентскогоПриложения;
НастройкиКлиента.ВариантИнтерфейсаКлиентскогоПриложения = ВариантИнтерфейсаКлиентскогоПриложения.Такси;
// Дополнительно можно настроить режим открытия форм
НастройкиКлиента.РежимОткрытияФормПриложения = РежимОткрытияФормПриложения.Вкладки;
// Создаем объект для настройки состава панелей (верхняя, левая и т.д.)
НастройкиИнтерфейса = Новый НастройкиИнтерфейсаКлиентскогоПриложения;
НастройкиСостава = НастройкиИнтерфейса.ПолучитьСостав();
// Очищаем стандартное расположение панелей, чтобы задать свое
НастройкиСостава.Верх.Очистить();
НастройкиСостава.Лево.Очистить();
// Например, добавим панель разделов и панель открытых окон наверх
ПанельРазделов = Новый ГруппаНастройкиСоставаИнтерфейсаКлиентскогоПриложения;
ПанельРазделов.Добавить(Новый ЭлементНастройкиСоставаИнтерфейсаКлиентскогоПриложения("ПанельРазделов"));
ПанельОткрытых = Новый ГруппаНастройкиСоставаИнтерфейсаКлиентскогоПриложения;
ПанельОткрытых.Добавить(Новый ЭлементНастройкиСоставаИнтерфейсаКлиентскогоПриложения("ПанельОткрытых"));
НастройкиСостава.Верх.Добавить(ПанельРазделов);
НастройкиСостава.Верх.Добавить(ПанельОткрытых);
НастройкиИнтерфейса.УстановитьСостав(НастройкиСостава);
// Сохраняем настройки в системное хранилище
ХранилищеСистемныхНастроек.Сохранить("Общее/НастройкиКлиентскогоПриложения", "", НастройкиКлиента, , ИмяПользователя);
ХранилищеСистемныхНастроек.Сохранить("Общее/НастройкиИнтерфейсаКлиентскогоПриложения", "", НастройкиИнтерфейса, , ИмяПользователя);
КонецПроцедуры
Проанализируем ситуацию: почему мы используем именно ХранилищеСистемныхНастроек? Платформа хранит персональные предпочтения пользователей (расположение панелей, выбранный интерфейс, масштаб) именно там. Ключи "Общее/НастройкиКлиентскогоПриложения" являются зарезервированными. Важно помнить, что изменения вступят в силу только при следующем запуске сеанса пользователя. При необходимости можно воспользоваться обработкой для работы с хранилищем настроек пользователей.
Если нам нужно разово запустить базу в определенном интерфейсе или создать разные ярлыки для разных групп сотрудников, рассмотрим возможности командной строки. Платформа 1С поддерживает специальные ключи, которые имеют приоритет над настройками базы.
Разберем основные ключи:
/ITaxi — принудительно включает интерфейс «Такси»./IV82 — принудительно включает интерфейс «Формы в закладках» (стиль 8.2).Пример строки запуска в ярлыке: "C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /F "C:\Bases\MyBase" /N "Администратор" /ITaxi.
Если ваша база построена на базе Библиотеки стандартных подсистем (БСП), например, УТ 11, ERP или БП 3.0, проанализируем встроенные возможности. В таких конфигурациях уже существуют общие модули, упрощающие управление интерфейсом. Например, в некоторых версиях доступна процедура ОбщегоНазначения.УстановитьРежимКомандногоИнтерфейса().
Также в типовых решениях часто используется механизм «Настроек пользователей». Посмотрим на пример: если вы измените интерфейс через стандартную форму «Настройки» в самой программе, БСП может кэшировать эти данные в регистре сведений НастройкиПользователей. При программной записи напрямую в хранилище, иногда требуется очистить этот кэш, чтобы платформа не «откатила» настройки назад.
Начиная с версии платформы 8.3.10, интерфейс «Такси» получил развитие в виде «Компактного режима». Это не отдельный интерфейс, а свойство настройки клиентского приложения. Выясним причину популярности этого режима: на небольших мониторах стандартное «Такси» занимает слишком много места.
Программно управлять масштабом можно через свойство УстановитьМасштаб() объекта НастройкиКлиента. Мы можем задать вариант ВариантМасштабаИнтерфейсаКлиентскогоПриложения.Компактный, что сделает заголовки, отступы и шрифты более мелкими, приближая визуальное восприятие к классическим формам, но сохраняя все преимущества «Такси». Для этого также можно воспользоваться обработкой для смены режима интерфейса пользователя.
Рассмотрим подробнее ограничения, с которыми можно столкнуться:
Ctrl+F5.ПолныеПрава).В завершение проанализируем: какой метод выбрать? Если нужно перевести всех — лучше использовать настройки Конфигуратора. Если нужно переключить конкретную группу — оптимальным будет программный скрипт, запускаемый один раз под администратором, который заполнит ХранилищеСистемныхНастроек для нужного списка сотрудников.