gifts2017

Как увеличить размер шрифта на 1С: 8.3.7 (с модификацией кода управляемой формы)

Опубликовал Sergey Ryrikow (TopSergey) в раздел Программирование - Практика программирования

В платформе 8.3.7 (без режима совместимости) окончательно сломали вариант увеличения шрифта в управляемых формах, которым мы пользовались ранее.
Поэтому оставалось либо ждать выхода 8.3.10, либо изобретать свой велосипед.
Решение нашлось, но только не для всех.

Предыстория.

У нас вариант запуска 1С: "Обычное приложение" с управляемыми формами. Поэтому ранее для увеличения размера текста вполне подходил вариант со стилями конфигурации.

Смотрелось довольно убого, но работало. С приходом 8.3.7 - все сломалось окончательно.

1С обещает в версии платформы 8.3.10 исправить ситуацию из коробки, но ждать что-то не хочется. Да и непонятно, будет ли этот механизм работать в "обычном приложении".

 

Решение оказалось простым и работающим во всех вариантах запуска 1С:

Можно программно изменить масштаб отображения шрифта любого элемента на форме:

Элементы.Реквизит1.ШрифтЗаголовка = Новый Шрифт(Элементы.Реквизит1.ШрифтЗаголовка,,,,,,,110);
Элементы.Реквизит1.Шрифт = Новый Шрифт(Элементы.Реквизит1.Шрифт,,,,,,,117);

Для увеличения масштаба отображения достаточно вызвать на сервере метод установки масштаба шрифтов из каждой формы, которую мы хотим увеличить или уменьшить.

Так что пользователям конфигураций на поддержке (типа БП 3.0) моя статья не будет полезна. Frown

Разве что в УТ 11, получится что-то сделать с помощью их механизма программной подписки на события формы, но в этом я не силён. Undecided

В итоге у меня получилось вот так:

Процедура ИзменитьШрифт(ИсходныйШрифт, Масштаб)
	//Чтобы избежать повторного увеличения при неоднократном вызове масштабирования
	НовыйМасштаб = (Масштаб/ИсходныйШрифт.Масштаб)*100;
	Если НовыйМасштаб <> 100 Тогда
		ИсходныйШрифт = Новый Шрифт(ИсходныйШрифт,,,,,,,НовыйМасштаб);
	КонецЕсли;
КонецПроцедуры

Процедура ИзменитьМасштабФормы(Форма) Экспорт
	
	Настройки = НастройкиМасштабированияФорм();
	
	ТипТаблица = Тип("ТаблицаФормы");
	ТипГруппа = Тип("ГруппаФормы");
	
	Для Каждого ТекущийЭлемент ИЗ Форма.Элементы Цикл
		
		Если ТипЗнч(ТекущийЭлемент) = ТипТаблица Тогда
			//Элементы колонок таблицы наследуют масштаб таблицы + свой масштаб
			//Я вот так решил избежать двойного увеличения
		ИначеЕсли ТипЗнч(ТекущийЭлемент) = ТипГруппа Тогда
			Если ТекущийЭлемент.Вид = ВидГруппыФормы.КоманднаяПанель Тогда
				//Тут есть свои особенности у "Обычного приложения"
			Иначе
				ИзменитьШрифт(ТекущийЭлемент.ШрифтЗаголовка,Настройки.МасштабЗаголовкаПоля);
			КонецЕсли;
		Иначе
			Попытка
				ИзменитьШрифт(ТекущийЭлемент.Шрифт,Настройки.МасштабЗначенияПоля);
			Исключение
			КонецПопытки;
			
			Попытка
				ИзменитьШрифт(ТекущийЭлемент.ШрифтЗаголовка,Настройки.МасштабЗаголовкаПоля);
			Исключение
			КонецПопытки;
		КонецЕсли;
	КонецЦикла;
	
КонецПроцедуры

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Сергей Ожерельев (Поручик) 07.07.16 09:10
У меня бухгалтер наоборот попросила уменьшить размер шрифтов в БП 3, чтобы было как в БП 2.
2. Серега Сергейич (serega33) 07.07.16 14:42
3. Дмитрий Г (Дмитрий74Чел) 13.07.16 07:27
А разве через Расширение нельзя такое сделать?
4. Яков Коган (Yashazz) 13.07.16 08:54
Учитывая свежие новости из зазеркалья, в 8.3.10 эта проблема исчезнет.
5. Sergey Ryrikow (TopSergey) 14.07.16 18:33
(3) Дмитрий74Чел,

Вроди бы и да.

Но расширения сам не использую.
Не понятно, сколько там багов ещё не пофиксили.
6. Дмитрий Индерёв (Stepka1206) 05.08.16 20:45
(1) Поручик, Вариант отображения сделай компактный для всей конфы в целом.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа