Жирный шрифт в 1С: от настройки отчёта до строки кода
Содержание
Способ зависит от того, где нужен жирный текст. Пользователь без прав разработчика может выделить жирным только содержимое отчёта и ячейки печатной формы. Подпись или поле на форме меняет разработчик: в Конфигураторе через свойство Шрифт или из кода через Новый Шрифт. Если жирным должна быть строка списка по условию, берут условное оформление.
Ниже все четыре случая по порядку. Примеры рассчитаны на платформу 8.3 с интерфейсом «Такси».
Что может сделать обычный пользователь
Общего переключателя «все шрифты жирные» в клиенте нет. В параметрах программы меняется масштаб интерфейса, но не начертание. Зато три места пользователю доступны.
- 📊 Отчёты. В настройках варианта отчёта есть условное оформление. Там можно задать жирный шрифт для строк или ячеек, которые подходят под условие, например для сумм больше миллиона.
- 🖨️ Табличные документы. Если печатная форма открыта в режиме редактирования, выделите ячейки и нажмите кнопку полужирного начертания на панели форматирования или
Ctrl+B. Правка живёт только в этой копии документа. - 🪟 Системные настройки. Размер и начертание шрифта операционной системы платформа не подхватывает. Менять их ради одной базы бессмысленно.
Чтобы открыть настройки отчёта, ищите кнопку настроек в командной панели формы. Называется она по-разному в зависимости от конфигурации: «Настройки» или «Изменить вариант». В открывшемся окне нужна вкладка условного оформления.
Для условного оформления в отчёте порядок такой:
- Откройте настройки варианта отчёта и перейдите на вкладку условного оформления.
- Добавьте новый элемент оформления.
- В параметре оформления выберите шрифт и отметьте полужирное начертание.
- Задайте условие: поле, вид сравнения, значение.
- Если нужно выделить только один столбец, укажите его в списке полей элемента. Пустой список означает «все поля».
- Сформируйте отчёт заново, прежний результат не перерисуется.
Сохраните вариант отчёта под своим именем. Иначе настройки пропадут при закрытии формы.
Свойство «Шрифт» у элементов формы в Конфигураторе
Здесь нужен доступ к конфигурации. Откройте форму в Конфигураторе, перейдите на закладку «Элементы» и выделите нужный элемент: декорацию-надпись, поле ввода, группу, кнопку. Панель свойств покажет строку Шрифт. Если её не видно, раскройте список свойств полностью: по умолчанию часть свойств скрыта в группах.
Шаги такие:
- Выделите элемент и найдите в палитре свойств
Шрифт. - Нажмите кнопку выбора рядом со значением.
- В окне выбора шрифта поставьте отметку «Жирный».
- Закройте окно, сохраните форму и запустите базу в режиме отладки, чтобы проверить результат.
У групп форм и некоторых полей есть отдельное свойство для шрифта заголовка. У декораций заголовком служит сам текст, так что работает обычное Шрифт. Если у элемента нужного свойства нет, значит, платформа не умеет оформлять его так. Тогда подпись выносят в отдельную декорацию.
Правка формы в типовой конфигурации на поддержке снимает объект с поддержки или усложняет обновление. Для типовой формы лучше работать через расширение конфигурации или программно.
Что важно знать про этот способ:
- ✔️ Он самый простой и не требует кода.
- ✔️ Шрифт зашит в форму и одинаков у всех пользователей.
- ❌ Меняется только весь элемент целиком, а не отдельная строка списка.
- ❌ Чтобы изменить начертание «только когда сумма отрицательная», настройки свойства мало.
Жирный шрифт из кода: объект «Новый Шрифт»
Когда начертание зависит от данных или от режима работы формы, шрифт задают программно. Конструктор объекта принимает базовый шрифт, имя, размер и флаги начертания: жирный, наклонный, подчёркнутый, зачёркнутый. Остальные параметры можно пропустить.
Самый частый приём: взять текущий шрифт элемента и добавить к нему жирность. Размер и гарнитура останутся прежними.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.ВажныйДокумент Тогда
Элементы.ДекорацияСтатус.Шрифт =
Новый Шрифт(Элементы.ДекорацияСтатус.Шрифт, , , Истина);
КонецЕсли;
КонецПроцедуры
Четвёртый параметр здесь отвечает за жирное начертание. Первый передаёт базовый шрифт, поэтому имя и размер указывать не надо.
Можно собрать шрифт «с нуля», тогда нужно назвать гарнитуру и размер:
Элементы.ПолеИтого.Шрифт = Новый Шрифт(, "Arial", 12, Истина);
Не задавайте жёстко гарнитуру без необходимости. На клиентском компьютере шрифта может не оказаться, и платформа подставит другой, внешний вид поплывёт. Проще брать базовый шрифт элемента.
Чтобы вернуть обычное начертание, присвойте свойству значение того же базового шрифта с Ложь в параметре жирности. Либо запомните исходный шрифт в переменной до изменения.
Где вызывать код:
- в
ПриСозданииНаСервере, если стиль определяется один раз при открытии формы; - в обработчике изменения реквизита, если начертание меняется по ходу работы;
- в
ПриОткрытиина клиенте, если ничего вычислять на сервере не нужно.
Типовая форма на поддержке: через расширение
Менять типовую форму напрямую не хочется, а жирный шрифт нужен. Выход: расширение конфигурации (оно появилось в платформе 8.3.6, так что в актуальной версии доступно везде). Заимствуйте форму в расширение и добавьте перехват обработчика, который выполнится после типового кода:
&НаСервере
&После("ПриСозданииНаСервере")
Процедура Расш1_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Элементы.ДекорацияПредупреждение.Шрифт =
Новый Шрифт(Элементы.ДекорацияПредупреждение.Шрифт, , , Истина);
КонецПроцедуры
Три замечания по расширению:
- ✔️ Элемент, к которому вы обращаетесь, должен быть на форме. Если его нет, сначала добавьте его в заимствованную форму.
- ✔️ Имя процедуры в расширении принято начинать с префикса расширения, чтобы не путаться с типовыми методами.
- ✔️ После загрузки расширения не забудьте обновить конфигурацию базы данных: загрузка файла и обновление проходят отдельными шагами.
Такой путь не снимает конфигурацию с поддержки, и обновление типовой формы не затирает вашу правку. Вся логика остаётся в одном месте, и её легко отключить, если жирный шрифт больше не нужен.
Готовые шрифты стиля
Прописывать параметры шрифта в каждой форме неудобно. В конфигурации есть ветка «Стили». Там хранятся цвета, рамки и шрифты, на которые ссылаются элементы форм. Изменили стиль один раз, и все ссылающиеся на него формы обновились.
Типовая библиотека БСП уже содержит такие шрифты: например, ШрифтыСтиля.ВажнаяНадписьШрифт и ШрифтыСтиля.ОченьВажнаяНадписьШрифт. Их можно присвоить напрямую:
Элементы.ДекорацияПредупреждение.Шрифт = ШрифтыСтиля.ВажнаяНадписьШрифт;
Преимущества такого подхода:
| Подход | Что даёт | Когда брать |
|---|---|---|
| Свойство в Конфигураторе | Простота, нет кода | Фиксированная подпись |
Новый Шрифт | Гибкость, зависит от данных | Динамическое начертание |
| Шрифт стиля | Единый вид во всей конфигурации | Повторяющийся приём |
Свой стиль в конфигурации создают в разделе «Общие → Стили». Добавьте элемент стиля с типом «Шрифт» и укажите жирное начертание. Затем в свойстве Шрифт элемента выберите этот стиль из списка. Если базу потом нужно перекрасить, правят один элемент.
Если вы переопределяете типовой стиль конфигурации на поддержке, при обновлении получите конфликт объединения. Лучше добавить собственный стиль с другим именем.
Условное оформление: жирные строки списка и ячейки
Условное оформление помогает, когда жирной должна быть не вся колонка, а только строки с нужным значением. Работает и в форме списка, и в форме документа с таблицей.
В Конфигураторе это свойство формы: найдите его в палитре формы и откройте редактор. Добавьте оформление, выберите параметр шрифта, поставьте жирное начертание, затем задайте отбор. Поля, к которым оно относится, указывают отдельно.
Ту же задачу решают из кода. Он нужен, когда условие приходит из настроек:
&НаСервере
Процедура ДобавитьВыделениеДолжников()
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеОформления = Элемент.Поля.Элементы.Добавить();
ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("Контрагент");
Отбор = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
Отбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Долг");
Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше;
Отбор.ПравоеЗначение = 0;
Отбор.Использование = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра(
"Шрифт", Новый Шрифт(, , , Истина));
КонецПроцедуры
Строка за строкой, что происходит:
- Создаётся элемент оформления формы.
- В список полей попадает колонка
Контрагент. Без этого шрифт применится ко всей строке. - В отборе описано условие: значение поля
Долгбольше нуля. - Параметр оформления
Шрифтполучает жирное начертание.
Имя реквизита (Долг) подставьте своё. Оно должно существовать в источнике данных списка или в таблице формы.
Как выбрать способ, если сомневаетесь:
Шрифт элемента в Конфигураторе или присвоение Новый Шрифт в коде.Печатные формы, макеты и форматированные строки
В табличном документе жирное начертание задают у области. Если форма строится из макета, проще всего оформить нужные ячейки прямо в макете: выделите их и включите полужирное начертание в панели форматирования. Свойство Шрифт у выделенных ячеек тоже сработает.
В коде область выводимого документа получает шрифт так же, как элемент формы:
Область = ТабличныйДокумент.Область(1, 1, 1, 5);
Область.Шрифт = Новый Шрифт(Область.Шрифт, , , Истина);
Здесь Область(1, 1, 1, 5) выделяет первую строку с первой по пятую колонки. Номера строк и колонок считайте от единицы.
Для выделения слова внутри предложения нужна форматированная строка. Это отдельный тип данных, в нём у фрагментов может быть разное оформление:
Заголовок = Новый ФорматированнаяСтрока(
"Срок оплаты: ",
Новый ФорматированнаяСтрока("до 25 числа", Новый Шрифт(, , , Истина)));
Элементы.ДекорацияСрок.Заголовок = Заголовок;
Чтобы такая строка отобразилась с оформлением, у декорации должно быть включено свойство форматированного заголовка. В Конфигураторе оно называется Форматированный. Без него вы увидите обычный текст без выделения.
Этот приём подходит для предупреждений в карточке, сроков, сумм в подсказках. Для длинных блоков с разным оформлением удобнее поле форматированного документа, но это уже отдельная тема.
Веб-клиент и ограничения платформы
Платформа сама превращает свойства шрифта в оформление страницы. Писать CSS для форм не нужно, да и негде: страницы формирует платформа, а не конфигурация. Всё, что описано выше, работает и в тонком, и в веб-клиенте.
Типовые причины, по которым жирный шрифт «не применился»:
- 🔸 Свойство задано не тому элементу. Заголовок группы и текст поля внутри неё — разные вещи.
- 🔸 Затирает позднее оформление. Условное оформление и код в
ПриСозданииНаСерверемогут перезаписать друг друга. Проверьте, что оба не трогают один элемент. - 🔸 Колонка таблицы перекрывает поле. Для списков действует оформление колонки, а не поля ввода под ней.
- 🔸 Шрифт без жирного начертания. Для гарнитуры без полужирной версии система имитирует начертание, и выглядит оно хуже.
- 🔸 Форма не обновилась. После правки в Конфигураторе перезапустите клиент или сохраните конфигурацию базы данных, иначе увидите старую форму.
Если не помогло, поступите так:
- Проверьте, что код действительно выполнился: поставьте точку останова на строке присвоения.
- Временно задайте шрифт через свойство элемента в Конфигураторе и убедитесь, что элемент вообще способен показать жирный шрифт.
- Отключите условное оформление формы и проверьте, не оно ли перекрывает ваше свойство.
Не меняйте начертание всех шрифтов стиля ради одной формы. Жирным текстом перегружают экран, а пользователи перестают отличать важное от обычного.
Частые вопросы
Можно ли сделать жирным весь интерфейс 1С?
Чем отличается свойство «Шрифт» от условного оформления?
Как вернуть обычное начертание после выделения?
Ложь. В условном оформлении достаточно, чтобы условие перестало выполняться.