Предыстория.
У нас вариант запуска 1С: "Обычное приложение" с управляемыми формами. Поэтому ранее для увеличения размера текста вполне подходил вариант со стилями конфигурации.
Смотрелось довольно убого, но работало. С приходом 8.3.7 - все сломалось окончательно.
1С обещает в версии платформы 8.3.10 исправить ситуацию из коробки, но ждать что-то не хочется. Да и непонятно, будет ли этот механизм работать в "обычном приложении".
Решение оказалось простым и работающим во всех вариантах запуска 1С:
Можно программно изменить масштаб отображения шрифта любого элемента на форме:
Элементы.Реквизит1.ШрифтЗаголовка = Новый Шрифт(Элементы.Реквизит1.ШрифтЗаголовка,,,,,,,110);
Элементы.Реквизит1.Шрифт = Новый Шрифт(Элементы.Реквизит1.Шрифт,,,,,,,117);
Для увеличения масштаба отображения достаточно вызвать на сервере метод установки масштаба шрифтов из каждой формы, которую мы хотим увеличить или уменьшить.
Так что пользователям конфигураций на поддержке (типа БП 3.0) моя статья не будет полезна.
Разве что в УТ 11, получится что-то сделать с помощью их механизма программной подписки на события формы, но в этом я не силён.
В итоге у меня получилось вот так:
Процедура ИзменитьШрифт(ИсходныйШрифт, Масштаб)
//Чтобы избежать повторного увеличения при неоднократном вызове масштабирования
НовыйМасштаб = (Масштаб/ИсходныйШрифт.Масштаб)*100;
Если НовыйМасштаб <> 100 Тогда
ИсходныйШрифт = Новый Шрифт(ИсходныйШрифт,,,,,,,НовыйМасштаб);
КонецЕсли;
КонецПроцедуры
Процедура ИзменитьМасштабФормы(Форма) Экспорт
Настройки = НастройкиМасштабированияФорм();
ТипТаблица = Тип("ТаблицаФормы");
ТипГруппа = Тип("ГруппаФормы");
Для Каждого ТекущийЭлемент ИЗ Форма.Элементы Цикл
Если ТипЗнч(ТекущийЭлемент) = ТипТаблица Тогда
//Элементы колонок таблицы наследуют масштаб таблицы + свой масштаб
//Я вот так решил избежать двойного увеличения
ИначеЕсли ТипЗнч(ТекущийЭлемент) = ТипГруппа Тогда
Если ТекущийЭлемент.Вид = ВидГруппыФормы.КоманднаяПанель Тогда
//Тут есть свои особенности у "Обычного приложения"
Иначе
ИзменитьШрифт(ТекущийЭлемент.ШрифтЗаголовка,Настройки.МасштабЗаголовкаПоля);
КонецЕсли;
Иначе
Попытка
ИзменитьШрифт(ТекущийЭлемент.Шрифт,Настройки.МасштабЗначенияПоля);
Исключение
КонецПопытки;
Попытка
ИзменитьШрифт(ТекущийЭлемент.ШрифтЗаголовка,Настройки.МасштабЗаголовкаПоля);
Исключение
КонецПопытки;
КонецЕсли;
КонецЦикла;
КонецПроцедуры