Недавно ко мне обратился один заказчик с задачей "убрать жирный шрифт из печатных форм для экономии тонера". Я, как человек эко-ответственный, конечно же счёл своим долгом эту задачу выполнить. И опять же, как человек эко-ответственный, считаю своим долгом поделиться этой разработкой с другими эко-ответственными (да и просто с экономными) людьми.
Для решения этой задачи я добавил в общую форму ПечатьДокументов кнопку . При нажатии на неё у всех шрифтов в отображаемой печатной форме убирается признак "полужирный". Делал через расширение, хотя при желании код можно разместить в самих переопределяемых модулях.
Шаг 1. Заимствуем из общего модуля УправлениеПечатьюПереопределяемый процедуру ПечатьДокументовПриСозданииНаСервере() с типом вызова "Вызывать после" и пишем код добавления кнопки на общую форму ПечатьДокументов:
&После("ПечатьДокументовПриСозданииНаСервере")
Процедура это_ПечатьДокументовПриСозданииНаСервере(Форма, Отказ, СтандартнаяОбработка)
ИмяКоманды = "это_УбратьЖирныйШрифт";
НоваяКоманда = Форма.Команды.Добавить(ИмяКоманды);
НоваяКоманда.Заголовок = "Убрать жирный шрифт";
НоваяКоманда.Подсказка = "Убрать жирный шрифт";
НоваяКоманда.Картинка = БиблиотекаКартинок.ПалецВверхЗеленый;
НоваяКоманда.Действие = "Подключаемый_ВыполнитьКоманду";
НоваяКнопка = Форма.Элементы.Добавить(ИмяКоманды, Тип("КнопкаФормы"), Форма.Элементы.КоманднаяПанельПраваяЧасть);
НоваяКнопка.ИмяКоманды = ИмяКоманды;
НоваяКнопка.Вид = ВидКнопкиФормы.КнопкаКоманднойПанели;
КонецПроцедуры
Шаг 2. Заимствуем из общего модуля УправлениеПечатьюКлиентПереопределяемый процедуру ПечатьДокументовВыполнитьКоманду() с типом вызова "Вызывать после" и пишем код обработчика нажатия на кнопку, которую добавили на шаге 1:
&После("ПечатьДокументовВыполнитьКоманду")
Процедура это_ПечатьДокументовВыполнитьКоманду(Форма, Команда, ПродолжитьВыполнениеНаСервере, ДополнительныеПараметры)
Если Команда.Имя = "это_УбратьЖирныйШрифт" Тогда
ТД = Форма.ТекущаяПечатнаяФорма;
Для Кол = 1 По ТД.ШиринаТаблицы Цикл
Для Стр = 1 По ТД.ВысотаТаблицы Цикл
ТекОбласть = ТД.Область(Стр, Кол, Стр, Кол);
ЭтоПолужирный = (
ТекОбласть.Шрифт <> Неопределено
И ТекОбласть.Шрифт.Полужирный = Истина // сравниваем именно с Истина, т.к. бывают ситуации, когда ТекОбласть.Шрифт.Полужирный = Неопределено
);
Если ЭтоПолужирный Тогда
ТекОбласть.Шрифт = Новый Шрифт(ТекОбласть.Шрифт,,, Ложь);
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Шаг 3. Профит! Завариваем чай, мысленно подсчитываем количество спасённых деревьев сэкономленного тонера.