Работа с визуальным представлением данных в системах 1С:Предприятие часто выходит за рамки стандартных настроек интерфейса. Разработчики и администраторы регулярно сталкиваются с необходимостью изменить вид печатных форм или элементов форм, чтобы соответствовать корпоративному стилю или требованиям законодательства. Встроенные средства платформы предоставляют гибкие инструменты для управления типографикой, однако процесс добавления и использования нестандартных шрифтов имеет свои технические нюансы. Понимание архитектуры работы с текстом в 1С позволяет избежать типичных ошибок при верстке отчетов и печатных документов.
В отличие от веб-разработки, где подключение шрифтов решается одной строкой CSS, в среде 1С требуется более глубокий подход к управлению ресурсами. Это связано с тем, что платформа может работать в различных режимах: толстый клиент, тонкий клиент или веб-клиент, и каждый из них по-разному обрабатывает графические ресурсы. Чаще всего задача сводится к двум сценариям: использование уже установленных в операционной системе шрифтов или внедрение специфических файлов непосредственно в конфигурацию. Выбор правильного пути зависит от того, где именно будет формироваться итоговый документ и кто является конечным пользователем.
Основная сложность заключается в обеспечении кроссплатформенности и независимости от окружения клиента. Если вы разрабатываете отчет для печати накладных, критически важно, чтобы на компьютере бухгалтера отображался тот же шрифт, что и у разработчика. Игнорирование этого требования приводит к «поехавшей» верстке, смещению колонок и нечитаемым документам. В этой статье мы детально разберем механизмы работы с объектом Шрифт, способы регистрации внешних файлов и программное создание стилей для различных элементов интерфейса.
Архитектура работы со шрифтами в платформе 1С
В основе типографики 1С лежит объект метаданных Шрифт, который описывает гарнитуру, размер, начертание и другие параметры текста. Платформа не хранит сами файлы шрифтов внутри себя по умолчанию, а обращается к системному реестру операционной системы или к временно загруженным ресурсам. Это означает, что для корректного отображения текста файл шрифта (обычно с расширением .ttf или .otf) должен быть доступен среде выполнения в момент рендеринга. Механизм работы differs в зависимости от того, используется ли шрифт в макете компоновки данных или в динамически создаваемой форме.
Когда вы создаете новый объект Шрифт в коде, вы фактически создаете ссылку на имя гарнитуры. Если система не находит шрифт с таким именем в установленном списке ОС, она автоматически заменяет его на шрифт по умолчанию, обычно это Arial или Times New Roman. Такое поведение является защитным механизмом, предотвращающим падение приложения, но оно губительно для точной печати. Поэтому ключевым аспектом является гарантия присутствия файла в системе до момента вызова метода печати или отображения.
Существует важное различие между векторными и растровыми шрифтами, хотя в современной разработке 1С используются преимущественно векторные форматы TrueType. Платформа 1С:Предприятие 8.3 и выше оптимизирована для работы с качественным сглаживанием и масштабированием, что позволяет использовать сложные начертания без потери читаемости. Однако стоит учитывать, что некоторые декоративные шрифты могут некорректно отображаться в режиме веб-клиента из-за ограничений браузерного движка, если они не были корректно переданы как ресурс.
⚠️ Внимание: При использовании платных коммерческих шрифтов убедитесь, что лицензия разрешает их встраивание в программное обеспечение или распространение вместе с конфигурацией. Нарушение авторских прав может повлечь юридические последствия для вашей компании.
Для проверки доступности шрифта в текущей сессии можно использовать функцию Шрифт.Доступен(ИмяШрифта), которая верет Булево значение. Это полезно для создания адаптивных интерфейсов.
Использование системных шрифтов в конфигурации
Самый простой способ изменить шрифт — воспользоваться теми, которые уже предустановлены в операционной системе пользователя. В среде Windows стандартный набор включает Arial, Times New Roman, Courier New и Verdana. Для работы с ними в коде 1С достаточно указать точное название гарнитуры при создании объекта. Этот метод не требует никаких дополнительных действий по установке файлов, но накладывает ограничение на выбор дизайнерских решений.
Чтобы программно задать шрифт элементу формы или ячейке табличного документа, используется конструктор объекта. Вы можете передать имя шрифта строкой, а также указать размер и стиль. Важно соблюдать регистр букв при указании названия, хотя в большинстве случаев платформа работает с именами нечувствительно к регистру, лучше использовать оригинальное написание. Ниже приведен пример создания шрифта с использованием стандартных средств:
НовыйШрифт = Новый Шрифт("Arial", 12, Истина, Ложь, Ложь);
ЭлементФормы.Шрифт = НовыйШрифт;
Если необходимо применить стиль ко всему документу, удобнее использовать механизмы стилей в макетах компоновки данных. Там вы создаете именованный стиль, привязываете к нему параметры шрифта и применяете этот стиль к полям вывода. Это позволяет централизованно управлять оформлением: изменив определение стиля один раз, вы обновите вид всех связанных элементов отчета. Такой подход значительно упрощает поддержку конфигурации в долгосрочной перспективе.
Однако reliance на системные шрифты несет риски. На разных компьютерах могут быть установлены разные версии одних и тех же шрифтов, что приведет к микроскопическим, но заметным сдвигам в верстке. Кроме того, в операционных системах Linux или macOS набор шрифтов отличается от Windows, что может стать проблемой для кроссплатформенных решений. Если ваш клиент работает на тонком клиенте под управлением Linux, отсутствие привычного Times New Roman может испортить внешний вид официального письма.
Подключение внешних шрифтов через ресурсы конфигурации
Для обеспечения единообразия отображения на любых рабочих местах разработчики прибегают к встраиванию файлов шрифтов непосредственно в конфигурацию 1С. Это делается через механизм ресурсов, который позволяет хранить двоичные данные внутри файла конфигурации (.cf). При запуске приложения платформа может извлечь этот ресурс, сохранить его во временную директорию и зарегистрировать в системе на время сеанса.
Процесс добавления внешнего шрифта начинается с окна конфигуратора. Вам необходимо найти ветку «Ресурсы» в дереве метаданных, создать новый ресурс и загрузить туда файл шрифта .ttf. После этого ресурсу присваивается уникальное имя, по которому к нему можно обратиться из кода. Это имя не обязательно должно совпадать с внутренним именем шрифта, но для удобства лучше использовать понятные идентификаторы. Хранение шрифта в ресурсе гарантирует, что он всегда будет доступен, независимо от настроек конкретного компьютера пользователя.
Критически важным этапом является программная регистрация шрифта перед его использованием. Просто наличия файла в ресурсе недостаточно; операционная система должна «увидеть» его. Для этого используется объект ФайловыеПотоки и методы работы с временными файлами. Алгоритм действий выглядит следующим образом:
- 📂 Извлечь двоичные данные из ресурса конфигурации во временный файл.
- 🔧 Вызвать системную функцию регистрации шрифта (через внешнюю обработку или COM-объект, если требуется глобальная регистрация).
- 🎨 Создать объект
Шрифт, указав имя гарнитуры, соответствующее загруженному файлу. - 🖨 Использовать созданный шрифт в макетах или элементах формы.
Нюансы регистрации в Linux
В операционных системах на базе Linux механизм регистрации шрифтов отличается от Windows. Часто требуется копирование файла в директорию ~/.fonts и выполнение команды fc-cache -f -v. В рамках 1С это решается через вызов внешних скриптов или использование каталога данных пользователя.
Стоит отметить, что временная регистрация шрифта действует только в рамках текущего процесса. При перезапуске клиента 1С процедуру загрузки из ресурса во временный файл придется повторить. Для оптимизации можно реализовать проверку наличия файла во временном каталоге перед повторной загрузкой, сравнивая контрольные суммы или даты модификации. Это ускорит старт приложения при частом использовании нестандартной типографики.
Программное создание и управление объектом Шрифт
Объект Шрифт в 1С обладает широким набором свойств, позволяющих тонко настраивать отображение текста. Помимо базовых параметров, таких как имя и размер, доступны настройки начертания (жирный, курсив, подчеркнутый), сглаживания и даже цвета (в некоторых контекстах использования). Понимание этих свойств необходимо для реализации сложных сценариев форматирования, например, выделения ключевых сумм в отчете красным жирным шрифтом.
Создание шрифта может происходить как через конструктор с параметрами, так и через установку свойств уже созданного объекта. Второй вариант удобен, когда нужно модифицировать существующий шрифт, например, увеличить размер заголовка, сохранив при этом гарнитуру основного текста. В таблице ниже приведены основные свойства объекта и их влияние на визуализацию:
| Свойство | Тип данных | Описание |
|---|---|---|
ИмяШрифта |
Строка | Название гарнитуры (например, "Arial"). |
Размер |
Число | Размер шрифта в пунктах (pt). |
Жирный |
Булево | Признак использования жирного начертания. |
Курсив |
Булево | Признак использования курсивного начертания. |
Подчеркнутый |
Булево | Признак подчеркивания текста. |
При работе с макетами компоновки данных (СКД) программное создание шрифтов часто используется в обработчиках событий ПриКомпоновкеРезультата. Здесь вы можете анализировать данные и динамически менять оформление строк. Например, если сумма задолженности превышает определенный лимит, скрипт может подменить стандартный шрифт строки на более крупный и жирный, привлекая внимание пользователя. Это реализуется через установку свойства Оформление у поля макета.
Особое внимание следует уделить свойству Сглаживание. В современных версиях платформы доступны различные режимы сглаживания, которые влияют на четкость отображения шрифтов на экранах с высоким разрешением. Неправильно выбранный режим может сделать текст размытым или, наоборот, слишком контрастным с «лесенками» на краях букв. Экспериментальный подбор этого параметра помогает добиться максимальной читаемости на конкретных мониторах пользователей.
Динамическое изменение шрифта в СКД позволяет выделять аномалии в данных без изменения самой структуры отчета, что повышает аналитическую ценность документа.
Особенности печати и экспорта в PDF с кастомными шрифтами
Наиболее критичным этапом использования нестандартных шрифтов является формирование печатных форм и экспорт в PDF. Если на экране клиента шрифт подгружается из системы, то при печати на сервере или при сохранении в файл ситуация кардинально меняется. Движок формирования печати должен иметь доступ к файлу шрифта в момент генерации выходного документа. В противном случае, вместо красивого фирменного шрифта вы получите стандартный заменитель, что недопустимо для официальных документов.
При экспорте в формат PDF важно, чтобы шрифт был внедрен (embedded) внутрь файла. Платформа 1С поддерживает эту функцию, но она требует, чтобы файл шрифта был доступен в файловой системе сервера или клиента в момент конвертации. Если вы используете тонкий клиент и печать идет на стороне клиента, убедитесь, что временный файл шрифта, извлеченный из ресурсов, не был удален до завершения процесса печати. Очистка временных файлов операционной системой может произойти раньше, чем завершится работа с документом.
Для серверной печати, когда отчет формируется непосредственно на сервере 1С (например, в регламентном задании), шрифт должен быть установлен в операционную систему сервера. Ресурсы конфигурации в этом случае не помогут автоматически, так как серверный процесс не всегда корректно извлекает их во временную папку для системной регистрации. В таких случаях администратору сервера необходимо вручную скопировать файлы .ttf в директорию шрифтов ОС и перезапустить службу сервера 1С.
⚠️ Внимание: При экспорте в PDF некоторые сложные шрифты с нестандартными таблицами кодировок могут отображаться некорректно (кракозябры вместо букв). Всегда тестируйте итоговый PDF-файл перед передачей его контрагентам.
Существует также проблема с лицензированием шрифтов при распространении PDF-документов. Некоторые лицензии запрещают встраивание шрифта в документ, который будет передан третьим лицам. Хотя технически 1С позволяет это сделать, юридически это может быть нарушением. Проверяйте условия использования конкретного шрифта, особенно если вы рассылаете коммерческие предложения или счета в формате PDF большим количеством клиентов.
Типичные ошибки и методы отладки
В процессе внедрения новых шрифтов разработчики часто сталкиваются с рядом типичных проблем, которые могут занять много времени на диагностику. Самая распространенная ошибка — опечатка в названии шрифта. Название должно совпадать с системным именем до символа, включая пробелы. Например, "Arial Black" и "ArialBlack" — это два разных имени, и второе скорее всего не сработает. Всегда проверяйте точное название в реестре шрифтов операционной системы.
Другая частая проблема — неверный путь к файлу при попытке загрузки из внешней обработки. Использование относительных путей может привести к ошибкам, так как рабочая директория процесса 1С может отличаться от ожидаемой. Рекомендуется использовать полные пути или методы объекта Файл для получения корректных путей к временным каталогам. Также стоит учитывать права доступа: у процесса 1С должно быть право на запись во временную папку для извлечения ресурса.
Для отладки проблем со шрифтами полезно использовать метод ПолучитьИменаШрифтов(), который возвращает список всех доступных в текущей сессии шрифтов. Сравнив этот список с ожидаемым, можно сразу понять, зарегистрировался ли ваш внешний шрифт успешно. Если шрифт отсутствует в списке, значит, этап регистрации не был пройден или файл поврежден. Логику проверки лучше вынести в отдельную обработку, чтобы не захламлять основной код конфигурации.
☑️ Диагностика проблем со шрифтом
Наконец, не забывайте о кэшировании. Клиент 1С может кэшировать метаданные и ресурсы. После добавления нового шрифта в конфигурацию и публикации её на сервере, обязательно перезапустите клиентское приложение в режиме «1С:Предприятие» с очисткой кэша. Иначе вы можете продолжать видеть старую версию конфигурации, где новый ресурс еще не активен, и делать ложные выводы об ошибочности своего кода.
Часто задаваемые вопросы (FAQ)
Можно ли использовать шрифты Google Fonts в 1С напрямую?
Напрямую ссылаться на URL шрифтов Google Fonts в коде 1С нельзя, так как объект Шрифт требует локального файла. Однако вы можете скачать нужный шрифт с сайта Google Fonts, сохранить его как ресурс в конфигурации и далее использовать по стандартной схеме с извлечением во временный файл.
Почему шрифт отображается на экране, но не печатается?
Это означает, что шрифт доступен клиентскому приложению для отрисовки на экране, но недоступен процессу печати. Если печать идет на сервере, шрифт должен быть установлен в ОС сервера. Если на клиенте — убедитесь, что временный файл не удаляется до завершения печати.
Влияет ли добавление шрифтов в ресурсы на размер базы данных?
Да, файлы шрифтов хранятся в составе файла конфигурации. Если вы добавите много тяжелых шрифтов (особенно семейств с множеством начертаний), размер файла .cf и, следовательно, размер поставки конфигурации увеличится. Однако на размер самой базы данных (.dt или SQL) это влияет минимально, так как шрифты не хранятся в таблицах данных.
Как сделать шрифт доступным только для конкретного отчета?
Вы можете реализовать логику загрузки шрифта из ресурса только внутри обработки формирования этого отчета. После завершения работы с отчетом временный файл можно удалить. Таким образом, шрифт не будет засорять систему глобально, а будет доступен только в нужный момент времени.
Поддерживаются ли цветные шрифты (SVG/CBDT) в 1С?
На данный момент платформа 1С:Предприятие ориентирована на монохромные векторные шрифты (TrueType/OpenType с контурами). Цветные шрифты, содержащие растровые вставки или SVG-графику внутри глифов, могут отображаться некорректно или как обычные черные символы, в зависимости от версии платформы и операционной системы.