В платформе 1С:Предприятие 7.7 разработчики часто сталкиваются с аппаратными и программными ограничениями интерфейса. Одной из классических проблем является невозможность напрямую изменить шрифт для объекта МногострочнаяЧасть (табличная часть документа или справочника) через свойства самого элемента. В отличие от текстовых полей, у табличной части в конфигураторе попросту отсутствует вкладка «Шрифт».
Тем не менее, решение существует. Мы можем пойти либо путем визуальной настройки в конфигураторе, используя механизмы наследования, либо программным путем, задействовав возможности внешней компоненты FormEx. Рассмотрим эти методы подробно.
Разберем логику работы интерфейса 1С 7.7: объект МногострочнаяЧасть по умолчанию наследует параметры шрифта, установленные для всей формы в целом. Чтобы изменить размер текста в таблице, нам нужно изменить шрифт самой формы.
Важный нюанс: после этого действия шрифт увеличится у всех элементов формы, у которых установлен флаг «Шрифт по умолчанию». Чтобы кнопки, надписи и поля ввода не «разъехались» и сохранили прежний вид, нам придется выполнить кропотливую работу: пройтись по каждому элементу, снять галочку «Шрифт по умолчанию» и вручную вернуть ему старый размер (например, MS Sans Serif, 8).
Таким образом, мы добьемся того, что только табличная часть будет использовать новый крупный шрифт формы, а остальные элементы останутся в привычном виде.
Если нам требуется более гибкое управление или мы не хотим перенастраивать каждый элемент формы вручную, проанализируем возможности внешней компоненты FormEx. Она позволяет динамически управлять атрибутами формы, включая те, которые недоступны штатно.
Рассмотрим пример кода, который позволяет изменить шрифт многострочной части при открытии формы. Для корректной работы метода СоздатьШрифтНаОсновании важно правильно подобрать параметры.
Процедура ПослеОткрытия()
// Создаем объект для управления атрибутами
АтрФормы = СоздатьОбъект("АтрибутФормы");
АтрФормы.УстановитьАтрибут(Форма, "МногострочнаяЧасть");
// Получаем текущий шрифт таблицы
ТекШрифт = АтрФормы.Шрифт;
// Используем сервис FormEx для создания нового шрифта
лСервисФорМекс = СоздатьОбъект("Сервис");
// Параметры: ИсходныйШрифт, ИмяШрифта, Размер, Жирность, Курсив...
// Чтобы увеличить шрифт, параметр Размер (3-й по счету) нужно подобрать опытным путем.
// Для стандартного MS Sans Serif значение 11–12 дает заметный прирост.
// Параметр Жирность (4-й) лучше ставить 0 или 400 для нормального начертания.
НовШрифт = лСервисФорМекс.СоздатьШрифтНаОсновании(ТекШрифт, , 11, 0, , );
// Применяем новый шрифт к атрибуту
АтрФормы.Шрифт = НовШрифт;
КонецПроцедуры
Проанализируем особенности этого метода. Выясним причину, по которой иногда размер не меняется: 1С 7.7 часто использует растровые шрифты (типа MS Sans Serif), которые имеют фиксированный набор размеров. Для лучшего результата рекомендуется в методе СоздатьШрифтНаОсновании принудительно указать TrueType-шрифт, например, Arial или Verdana.
Если зрение пользователя требует увеличения шрифтов во всех документах и списках системы, можно воспользоваться глобальными настройками. Рассмотрим два варианта:
При программном изменении через FormEx или 1С++ стоит помнить, что не все шрифты одинаково хорошо отображаются в табличных частях 1С 7.7. Проанализируем наиболее стабильные варианты:
Важное замечание по коду: При использовании FormEx метод Форма.Обновить() после смены шрифта обычно не требуется, изменения вступают в силу немедленно. Однако, если вы заметили «артефакты» отрисовки, попробуйте принудительно переключить видимость элемента или программно изменить его ширину на 1 пиксель и обратно — это заставит систему полностью перерисовать объект МногострочнаяЧасть.