Как установить дробный размер шрифта (например, 10.5) в макете табличного документа 1С

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При разработке печатных форм и отчетов в «1С:Предприятии» разработчики часто сталкиваются с жесткими требованиями к оформлению документов. Одним из таких требований может стать использование корпоративного стиля, где точно прописан размер шрифта — например, 10,5 пунктов. Однако при попытке настроить такой размер в макете через палитру свойств Конфигуратора разработчик сталкивается с неприятным ограничением: платформа просто не позволяет ввести запятую или точку в поле размера шрифта.

В этой статье мы подробно разберем, почему возникает это ограничение, и рассмотрим два надежных способа обойти его: программный метод изменения шрифта при выводе отчета и прямое редактирование XML-структуры макета.

Выясняем причину: почему Конфигуратор блокирует ввод дробных чисел?

Для начала проанализируем ситуацию изнутри. Ограничение на ввод дробных значений в палитре свойств Конфигуратора — это исключительно ограничение интерфейса (маски ввода) самой среды разработки. Разработчики платформы настроили это поле ввода на работу только с целыми числами.

При этом внутренняя объектная модель платформы «1С:Предприятие» и база данных метаданных без проблем поддерживают тип Число с плавающей точкой для хранения размера шрифта. Это означает, что сама платформа умеет отображать, печатать и экспортировать текст с размером шрифта 10.5, нужно лишь правильно передать это значение в обход стандартного интерактивного поля ввода.

Решение 1. Программная установка размера шрифта при выводе макета

Это самый гибкий и «чистый» способ решения проблемы, не требующий выгрузки файлов конфигурации. Мы можем переопределить свойства шрифта непосредственно в момент формирования печатной формы в модуле менеджера или модуле объекта.

Для работы со шрифтами в платформе используется специальный объект Шрифт. Разберем по шагам два сценария его использования.

Вариант А. Создание нового шрифта с нуля

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


// Получаем область макета, в которой нужно изменить оформление
Макет = ПолучитьМакет("МакетПечати");
Область = Макет.ПолучитьОбласть("Строка");
Ячейка = Область.Область("R1C1");

// Задаем шрифт Arial, дробный размер 10.5, без изменения остальных свойств
Ячейка.Шрифт = Новый Шрифт("Arial", 10.5);

Вариант Б. Изменение только размера у существующего шрифта ячейки

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


// Получаем область макета
Макет = ПолучитьМакет("МакетПечати");
Область = Макет.ПолучитьОбласть("Строка");
Ячейка = Область.Область("R1C2");

// Первым параметром передаем исходный шрифт ячейки, третьим — новый дробный размер
// Остальные свойства (жирность, наклон) унаследуются автоматически
Ячейка.Шрифт = Новый Шрифт(Ячейка.Шрифт, , 10.5);

Этот код сработает безупречно при формировании документа. На печать и экран текст будет выводиться ровно в размере 10.5.

Решение 2. Альтернативный «хак» без написания кода (редактирование XML)

Если вам критически важно, чтобы размер 10.5 был жестко зашит непосредственно в статическом макете внутри Конфигуратора, и вы не хотите писать программный код для постобработки табличного документа, можно отредактировать сам макет «снаружи» через XML. Рассмотрим этот процесс по шагам:

  1. Выгрузите вашу конфигурацию (или конкретный внешний отчет/обработку) в файлы на диск. Для этого используйте команду главного меню Конфигуратора: Конфигурация — Выгрузить конфигурацию в файлы.
  2. Перейдите в каталог выгрузки и найдите XML-файл, описывающий ваш табличный документ (макет). Обычно такие файлы имеют расширение .mxl или описываются в виде XML-структур внутри каталогов отчетов.
  3. Откройте полученный файл в любом продвинутом текстовом редакторе (например, Notepad++, VS Code или Sublime Text).
  4. Используйте поиск по файлу, чтобы найти описание нужной ячейки или стиля оформления. В XML-схеме 1С описание шрифта выглядит следующим образом:
    
    <v8ui:font faceName="Arial" height="10" bold="true" italic="false" underline="false" strikeout="false" kind="Absolute" scale="100"/>
    
  5. Вручную замените целое значение в атрибуте height на дробное, используя точку в качестве разделителя:
    
    <v8ui:font faceName="Arial" height="10.5" bold="true" italic="false" underline="false" strikeout="false" kind="Absolute" scale="100"/>
    
  6. Сохраните изменения в файле и загрузите конфигурацию обратно (команда Конфигурация — Загрузить конфигурацию из файлов).

После обратной загрузки платформа корректно считает и сохранит это значение во внутренней структуре метаданных.

Важные технические нюансы и особенности платформы

При работе с дробными шрифтами следует учитывать несколько важных факторов, связанных с поведением платформы «1С:Предприятие»:

  1. Влияние режима совместимости: Возможность полноценно использовать дробные значения зависит от установленного режима совместимости конфигурации. В старых версиях (или при включенной совместимости с версиями 8.3.9 и ниже) при попытке платформы обработать дробный размер шрифта происходило автоматическое округление до ближайшего целого числа. В современных версиях (без режима совместимости) дробные размеры поддерживаются платформой нативно на всех этапах — от рендеринга на экране до вывода на печать и экспорта в PDF или Excel.
  2. Баг округления интерфейса пользователя (UI): При программной установке размера 10.5 свойства выведенной ячейки ведут себя специфически при интерактивном просмотре пользователем. Если открыть свойства такой ячейки на форме предварительного просмотра, в поле «Размер» будет отображаться округленное значение (например, 10 или 11). Это связано с тем, что диалоговые окна платформы не умеют отображать дробную часть размера. Тем не менее, внутренний движок отображения и подсистема печати работают напрямую с точным числовым значением 10.5, поэтому визуально шрифт на бумаге или в PDF-файле будет выглядеть корректно.

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

← На главную