Как изменить размер шрифта в табличной части документа 1С 7.7?

Программист 1С v7.7 IT и автоматизация бизнеса
← На главную

Работа с интерфейсом в платформе 1С:Предприятие 7.7 имеет ряд жестких ограничений, обусловленных возрастом платформы. Одной из частых проблем, с которой мы сталкиваемся при разработке удобных интерфейсов для пользователей (особенно для кладовщиков или операторов, работающих на мониторах с низким разрешением или, наоборот, слишком высоким), является невозможность простого изменения размера шрифта в табличной части документа. Ситуация усложняется, если в форме реализована

сложная структура с несколькими табличными частями

, где стандартные свойства конфигуратора позволяют менять шрифт только у текстовых полей, а сама таблица остается "неприступной".

В этой статье мы подробно разберем, какие существуют подходы к решению этой задачи, проанализируем штатные средства и рассмотрим использование внешних компонент, таких как FormEx и 1С++, которые упоминаются профессиональным сообществом как основные инструменты для расширения возможностей интерфейса.

Штатные средства настройки интерфейса

Прежде чем приступать к написанию кода и подключению внешних библиотек, давайте рассмотрим возможности, заложенные в самой платформе. Часто проблема решается не для конкретного документа, а для рабочего места пользователя целиком. В некоторых случаях разработчики применяют специфические алгоритмы, обеспечивающие масштабирование шрифта таким образом, чтобы текст оптимально заполнял доступное пространство.

Если задача состоит в том, чтобы пользователю было "крупнее видно" всё, а не только одну таблицу, мы можем воспользоваться настройками параметров системы.

  1. Запустим 1С:Предприятие в режиме пользователя.
  2. Перейдем в меню Сервис — Параметры.
  3. Откроем вкладку Интерфейс.
  4. В секции Шрифты мы можем выбрать гарнитуру и размер для форм, таблиц и модулей.

Важные особенности этого метода:

Также стоит упомянуть масштабирование средствами операционной системы (Windows). Увеличение масштаба экрана (DPI) до 125% или 150% в настройках Windows автоматически увеличит все элементы 1С 7.7. Однако, как справедливо замечено в сообществе, это может приводить к "размыливанию" шрифтов или некорректному отображению некоторых старых диалоговых окон.

Использование внешней компоненты FormEx

Если штатный метод нам не подходит (например, нужно увеличить шрифт только в одном документе "Реализация", а остальные оставить как есть), мы обращаемся к внешней компоненте FormEx. Это стандарт де-факто для того, чтобы реализовать различные улучшения интерфейса и привязки элементов форм в "семерке".

Многие разработчики сталкиваются с проблемой: методы компоненты применяются, ошибок нет, но визуально шрифт не меняется или текст обрезается. Разберем, почему это происходит и как действовать правильно.

Для управления внешним видом таблицы в FormEx используется так называемый "План раскраски". Однако для изменения именно размера шрифта (кегля) одного плана раскраски недостаточно.

Проблема высоты строки

Главный камень преткновения при попытке увеличить шрифт в стандартной таблице 7.7 — это высота строки. Платформа рассчитывает высоту строки автоматически при инициализации формы, исходя из системного шрифта по умолчанию. Если мы программно, "на лету", подменим шрифт на более крупный (например, 14pt вместо 8pt), платформа не пересчитает высоту строки автоматически.

В результате мы получим текст, у которого видна только середина, а верх и низ срезаны границами ячейки. Для полноценного решения задачи нам необходимо:

  1. Изменить шрифт ячейки.
  2. Принудительно изменить высоту строк таблицы.

К сожалению, изменение высоты строк стандартной "многострочной части" (Table) через FormEx — задача нетривиальная и часто требует использования низкоуровневых перехватов сообщений Windows (Hook), что может влиять на стабильность системы.

Тем не менее, для изменения атрибутов шрифта (Жирный, Курсив, Цвет) FormEx работает отлично. Пример использования через процедуру, вызываемую при выводе строки:


// Примерный алгоритм работы с раскраской
Процедура глУстановитьЦвет(КонтекстФормы)
    Сервис = СоздатьОбъект("Сервис");
    // Установка параметров шрифта для ячейки
    // Здесь мы можем задать цвет текста и фона, а также стиль (жирный/курсив)
    Сервис.РаскраситьЯчейку(КонтекстФормы, "Товар", "clRed", "clWhite", 1); // 1 - жирный
КонецПроцедуры

Если ваша цель — именно акцентировать внимание (сделать жирным или красным), FormEx справится идеально. Если нужно именно кардинально увеличить размер букв, лучше рассмотреть следующий метод.

Использование компоненты 1С++ и класса "ТабличноеПоле"

Наиболее профессиональным и гибким решением для задач сложного форматирования списков в 1С 7.7 является использование компоненты 1С++ и её элемента управления ТабличноеПоле (TableField). По сути, это внедрение в форму 7.7 современного грида (таблицы), похожего на тот, что используется в 1С 8.х. Если же вам требуется просто вывести данные для просмотра, можно использовать универсальный отчет по таблице значений, который также предоставляет широкие возможности оформления.

Этот подход требует более глубокой переработки конфигурации, так как ТабличноеПоле не просто "украшает" стандартную таблицу, а полностью заменяет её. Стандартные методы работы (ПолучитьСтроку, ВыбратьСтроки) перестают работать напрямую с визуальным элементом, взаимодействие идет через источник данных (Поставщик Данных).

Преимущества ТабличногоПоля для решения задачи:

  1. Полный контроль над шрифтами: Мы можем задать любой шрифт любого размера для всей таблицы, колонки или отдельной ячейки.
  2. Автовысота строк: ТабличноеПоле умеет автоматически подбирать высоту строки под содержимое, если включен режим переноса слов. Это полностью решает проблему "обрезанного текста", актуальную для FormEx.
  3. Независимость от настроек ОС: Внешний вид настраивается программно и будет одинаковым у всех пользователей.

Рассмотрим общий алгоритм внедрения ТабличногоПоля для реализации крупного шрифта:

Шаг 1. Подготовка формы
На форму документа помещается элемент (обычно Текст или Кнопка), который будет служить контейнером (якорем) для создания табличного поля. Назовем его _ТабличноеПоле.

Шаг 2. Инициализация в коде
В процедуре ПриОткрытии мы создаем экземпляр класса и привязываем его к нашему контейнеру.


Процедура ПриОткрытии()
    Если ЗагрузитьВнешнююКомпоненту("1cpp.dll") = 0 Тогда
        Возврат;
    КонецЕсли;
    
    ТП = СоздатьОбъект("ТабличноеПоле");
    // Привязываем к элементу формы
    ТП.Разместить(ТекущаяФорма, "_ТабличноеПоле"); 
    
    // Настраиваем поставщик данных (например, табличную часть документа)
    ТП.ПоставщикДанных = СоздатьОбъект("ПоставщикДанных.ТЧ");
    ТП.ПоставщикДанных.УстановитьКонтекст(Контекст);
    
    // Настройка оформления
    Оформление = ТП.Оформление;
    ШрифтТП = Оформление.Шрифт;
    ШрифтТП.Имя = "Arial";
    ШрифтТП.Размер = 14; // Устанавливаем нужный крупный размер
    
    ТП.ОбновитьСтроки();
КонецПроцедуры

Шаг 3. Тонкая настройка
Класс ТабличноеПоле позволяет настраивать высоту строк через свойство ВысотаСтроки. Если мы установили крупный шрифт, мы должны соответственно увеличить и высоту строки, чтобы текст помещался комфортно.


ТП.ВысотаСтроки = 30; // Высота в пикселях, достаточная для шрифта 14

Таким образом, использование 1С++ является наиболее надежным способом получить таблицу с крупным шрифтом, корректным отображением строк и современным поведением (выделение, сортировка, фильтры), хотя и требует навыков программирования с использованием классов этой компоненты.

Альтернативный вариант: ActiveX (FlexGrid)

Существует еще один метод, который использовался до широкого распространения 1С++ — использование элементов ActiveX, например, Microsoft FlexGrid или Hierarchical FlexGrid. На платформе 7.7 через ActiveX реализуются и более сложные задачи, например, просмотр PDF в 1С или даже захват и отображение внешних окон.

Принцип похож на работу с ТабличнымПолем: на форму кладется OLE-объект, в который программно перегружаются данные из документа. У FlexGrid есть свойство CellFontSize, которое позволяет легко менять размер текста. Однако, этот метод имеет существенный минус: необходимость регистрировать OCX файлы на каждом клиентском компьютере, что усложняет администрирование. Кроме того, перенос данных "туда и обратно" (из документа в ActiveX и назад при сохранении) приходится реализовывать вручную, что увеличивает вероятность ошибок.

Резюме

Давайте подведем итог и выберем оптимальное решение:

  1. Если нужно просто немного улучшить читаемость везде и сразу для конкретного пользователя — используем настройки Сервис -> Параметры -> Интерфейс или настройки масштаба Windows. Программирование не требуется.
  2. Если нужно выделить цветом или жирностью важные строки — используем FormEx. Это быстро и не ломает стандартную логику работы формы.
  3. Если необходимо кардинально увеличить размер шрифта в конкретной таблице и обеспечить комфортную высоту строк — единственным полноценным решением является переход на ТабличноеПоле (1С++). Это потребует изменения кода формы, но даст гарантированный визуальный результат.
← На главную