Т.к. база начинала писаться еще до появления интерфейса Такси, все формы были созданы под 8.2. Появилось желание перевести конфигурацию на интерфейс Такси, чтобы визуально она не отличалась от все остальных конфигураций используемых на Предприятия. Казалось бы, ничего сложного. Запретить в конфигураторе старый интерфейс и оставить только Такси. Так было и сделано. Не прошло и получаса с начала рабочего дня, как посыпался шквал звонков от недовольных пользователей ноутбуков, что все окна поплыли. Пришлось все вернуть обратно. Но идея перевести на Такси все равно засела в голове. Было найдено следующее решение.
Анализируем разрешение экрана и, если оно отличается от заданного в меньшую сторону, тогда включаем компактный режим, иначе режим обычный. Т.к. для применения параметров нужен перезапуск. Анализируем, произошла ли смена режимов отображения. Если она произошла, делаем перезапуск платформы. Для пользователя это выглядит как повторное появление окна выбора пользователя для входа в конфигурацию.
Процедура ПередНачаломРаботыСистемы(Отказ)
АдаптацияИнтерфейсаПодРазрешение()
КонецПроцедуры
Процедура АдаптацияИнтерфейсаПодРазрешение()
//
Экраны = ПолучитьИнформациюЭкрановКлиента();
ВысотаЭкрана = Экраны[0].Высота;
ШиринаЭкрана = Экраны[0].Ширина;
Если ВысотаЭкрана < 1080 ИЛИ ШиринаЭкрана < 1920 Тогда
Если КонсулНастройкаИнтерфейса.УстановитьКомпактныйРежим() Тогда
ЗавершитьРаботуСистемы(Истина);
ЗапуститьПриложение(КонсулНастройкаИнтерфейса.ПовторныйЗапускКонфигурации())
КонецЕсли;
Иначе
Если КонсулНастройкаИнтерфейса.УстановитьОбычныйРежим() Тогда
ЗавершитьРаботуСистемы(Истина);
ЗапуститьПриложение(КонсулНастройкаИнтерфейса.ПовторныйЗапускКонфигурации())
КонецЕсли;
КонецЕсли;
ОбновитьИнтерфейс();
КонецПроцедуры
Функция УстановитьКомпактныйРежим() Экспорт
Настройки = ХранилищеСистемныхНастроек.Загрузить("Общее/НастройкиКлиентскогоПриложения");
ТекущаяНастройка = Настройки.ВариантМасштабаФормКлиентскогоПриложения;
Настройки.ВариантМасштабаФормКлиентскогоПриложения = ВариантМасштабаФормКлиентскогоПриложения.Компактный;
ХранилищеСистемныхНастроек.Сохранить("Общее/НастройкиКлиентскогоПриложения",,Настройки);
Если ТекущаяНастройка <> ВариантМасштабаФормКлиентскогоПриложения.Компактный Тогда
Возврат Истина;
КонецЕсли;
Возврат Ложь;
КонецФункции
Функция УстановитьОбычныйРежим() Экспорт
Настройки = ХранилищеСистемныхНастроек.Загрузить("Общее/НастройкиКлиентскогоПриложения");
ТекущаяНастройка = Настройки.ВариантМасштабаФормКлиентскогоПриложения;
Настройки.ВариантМасштабаФормКлиентскогоПриложения = ВариантМасштабаФормКлиентскогоПриложения.Обычный;
ХранилищеСистемныхНастроек.Сохранить("Общее/НастройкиКлиентскогоПриложения",,Настройки);
Если ТекущаяНастройка <> ВариантМасштабаФормКлиентскогоПриложения.Обычный Тогда
Возврат Истина
КонецЕсли;
Возврат Ложь;
КонецФункции
Функция ПовторныйЗапускКонфигурации()Экспорт
СтрокаСоединенияИБ = СтрЗаменить(СтрокаСоединенияИнформационнойБазы(), """", """""");
ИмяПрограммыЗапуска = КаталогПрограммы() + ?(Прав(КаталогПрограммы(), 1) = "\", "", "\") + "1cv8s.exe";
ИмяПользователя = ИмяПользователя();
Если Не ПустаяСтрока(ИмяПользователя) Тогда
ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоИмени(ИмяПользователя);
Если ПользовательИБ = Неопределено Тогда
АутентификацияОС = Ложь;
Иначе
АутентификацияОС = ПользовательИБ.АутентификацияОС;
КонецЕсли;
Пользователь = "/N""" + ИмяПользователя + """ " + ?(АутентификацияОС, "/WA+", "/WA-");
Иначе
Пользователь = "";
КонецЕсли;
Возврат( """" + ИмяПрограммыЗапуска + """ " +
"ENTERPRISE " +
"/IBConnectionString""" + СтрокаСоединенияИБ + """ " +
Пользователь +
"/DisableStartupMessages");
КонецФункции