Шрифты печатных форм 1С: где задаются и как заменить
Содержание
Единого «шрифта печати» в 1С 8.3 нет. Шрифт хранится в самой печатной форме: у каждой ячейки макета табличного документа свой шрифт, свой размер и начертание. Поэтому в одной базе счёт может печататься Arial, а договор — Times New Roman. Глобальной настройки «поменять шрифт всех печатных форм» в пользовательских параметрах нет.
Типичный набор у типовых макетов: Arial для бланков и накладных, Times New Roman для текстовых документов, Courier New там, где нужна моноширинность. Размер чаще всего 8–10 пунктов для табличной части и 10–12 для шапки. Если в новом макете ничего не менять, получите шрифт по умолчанию, обычно Arial 10.
Важный момент: 1С не встраивает шрифт в макет. В форме записано только имя («Arial»), а рисует его операционная система компьютера, на котором форма открыта или напечатана. Отсюда почти все проблемы: на другой машине такого шрифта может не оказаться.
Откуда платформа берёт шрифты
Печатная форма — это табличный документ. Для него платформа использует шрифты, установленные в системе, как любое приложение. Если шрифта с таким именем нет, система подставляет похожий. Подстановка меняет ширину букв, и текст перестаёт помещаться в ячейку: обрезается, переносится на лишнюю строку, уезжает на вторую страницу.
Поэтому в макетах принято использовать шрифты, которые гарантированно есть везде:
| Шрифт | Где применяется | Замечание |
|---|---|---|
| Arial | бланки, накладные, счета | есть в Windows всех версий |
| Times New Roman | договоры, акты, письма | есть в Windows всех версий |
| Courier New | сверки, текстовые отчёты, моноширинные колонки | каждая буква одной ширины |
| Tahoma, Verdana | интерфейс, редко печатные формы | по возможности не использовать в бланках |
На Windows эти шрифты уже установлены. На Linux их придётся ставить отдельно, об этом ниже.
Как узнать, какой шрифт у конкретной печатной формы
Откройте нужную форму и посмотрите в сам макет. Есть два способа.
- В режиме Конфигуратор найдите объект (документ, обработку, отчёт), раскройте ветку «Макеты» и откройте макет печатной формы двойным щелчком.
- Выделите ячейку или область и откройте палитру свойств (клавиша
F4). Нужное поле называется «Шрифт»: рядом с ним имя, размер и признаки начертания. - Если макет вынесен во внешнюю обработку или расширение, открывайте его оттуда. Типовые макеты правят только через расширение или копию, подробнее в следующем разделе.
В пользовательском режиме быстрее всего посмотреть шрифт так: выведите форму в формате PDF или откройте в Excel и посмотрите, что показывает Excel в поле шрифта на выделенной ячейке. Это покажет реальное имя, которое получил Excel.
Меняем шрифт в макете
В типовых конфигурациях (БП 3.0, ЗУП 3.1, УТ 11) макеты стоят на поддержке. Править их напрямую значит потом каждый раз сливать изменения при обновлении. Есть три подхода, от безопасного к рискованному.
- Подсистема «Печатные формы» в пользовательском режиме. В БП 3.0 есть возможность редактировать макеты без конфигуратора: раздел
Администрирование→Печатные формы, отчёты и обработки→Макеты печатных форм. В списке выберите нужный макет, нажмите «Изменить макет» и правьте шрифт в открывшемся редакторе. Исходный макет остаётся нетронутым, изменённая копия хранится в базе. Если название пункта в вашей конфигурации отличается, поищите «макеты печатных форм» в поиске по командам. - Расширение конфигурации. Создаёте расширение, заимствуете объект и макет, меняете шрифт. Типовая конфигурация не затрагивается, обновление проходит без слияния. Расширения доступны начиная с платформы 8.3.6. После загрузки расширения не забудьте обновить конфигурацию базы данных.
- Прямая правка типового макета. Только если конфигурация снята с поддержки или вы осознанно принимаете ручное слияние при каждом обновлении.
Перед правкой макета в рабочей базе сделайте копию базы или проверьте изменение на тестовой. Неудачный размер шрифта легко ломает разбивку по страницам у форм вроде УПД.
Порядок действий в самом макете:
- Выделите всю форму (
Ctrl+A) или нужную область. - В палитре свойств найдите «Шрифт» и нажмите кнопку выбора.
- Задайте имя, размер и начертание.
- Проверьте результат кнопкой предварительного просмотра формы и обязательно прокрутите на другую страницу: изменение ширины букв сдвигает разбиение.
Если вы уменьшили шрифт, чтобы всё влезло, сначала проверьте ширину колонок. Часто достаточно подвинуть границу столбца, а не жертвовать читаемостью.
Программное управление шрифтом
Для обработок и внешних печатных форм шрифт часто задают из кода. В табличном документе у области есть свойство Шрифт, объект создаётся конструктором Новый Шрифт. Пример: оформить заголовок и итоги в формируемом документе.
// Табличный документ уже создан и заполнен
Макет = Новый ТабличныйДокумент;
Область = Макет.Область("R1C1:R1C5");
// Новый Шрифт(Шрифт, Имя, Размер, Жирный, Курсив, Подчеркивание, Зачеркивание, Масштаб)
Область.Шрифт = Новый Шрифт(, "Arial", 12, Истина);
Область.ГоризонтальноеПоложение = ГоризонтальноеПоложение.Центр;
// Остальной текст — Times New Roman 10 без выделения
Остальное = Макет.Область("R2C1:R20C5");
Остальное.Шрифт = Новый Шрифт(, "Times New Roman", 10);
Здесь первый параметр пропущен намеренно: он нужен, когда новый шрифт строится на основе уже существующего. Обращение по R1C1 — это адрес области в нотации «строка-столбец».
Если шрифт нужно взять у существующей ячейки и поменять только размер, берите старый объект первым аргументом:
СтарыйШрифт = Область.Шрифт;
Область.Шрифт = Новый Шрифт(СтарыйШрифт, , 9);
Когда макет берётся из ПолучитьМакет, изменение шрифта в области после заполнения не влияет на сам макет в базе, только на конкретный экземпляр документа в памяти. Это нормально и удобно для разовых правок.
Иногда задачу решают через стили (оформление интерфейса). Для печатных форм это не лучший путь: стили управляют внешним видом форм на экране, а шрифт печатной формы лучше задавать явно, в макете или в коде. Тогда результат не зависит от темы оформления.
Кракозябры вместо русских букв
«Кракозябры» при печати бывают по трём разным причинам, и лечатся они по-разному.
- У шрифта нет кириллицы. Декоративные шрифты и шрифты для штрихкодов не содержат русских букв. Если в ячейке стоит такой шрифт, вместо текста появятся квадраты или вопросительные знаки. Лечится заменой шрифта на Arial или другой с кириллицей.
- Шрифта нет в системе, и подстановка работает плохо. Бывает на серверах и тонких клиентах без полного набора шрифтов.
- Проблема не в шрифте, а в кодировке файла. Если вы выгрузили текст в
.txtили.csv, а потом открываете не в той кодировке, русские буквы превращаются в набор символов вроде «Ð¡Ð». Здесь шрифт ни при чём: откройте файл в кодировкеWindows-1251илиUTF-8и сравните.
Быстрая проверка: если в предварительном просмотре форма на экране выглядит нормально, а на бумаге или в PDF кракозябры, виноват шрифт или принтер. Если кракозябры уже на экране, смотрите, какой шрифт стоит в ячейке.
Принтер печатает «не тем»
Некоторые принтеры, особенно матричные и чековые, при печати текстом используют собственные внутренние шрифты. Тогда системный шрифт не участвует вообще. Проверьте в драйвере принтера, не включена ли печать «в режиме текста» или «аппаратными шрифтами», и переключите на графический режим.
Особенности PDF и Excel
PDF. Сохраняя форму через Файл → Сохранить как, вы формируете PDF на том компьютере, где работает клиент. Если шрифт там есть, он встраивается в файл, и документ откроется одинаково где угодно. Если шрифта нет, в файл попадёт замена, и ширины букв поменяются уже на этапе сохранения. Для документов, которые уходят контрагентам, формируйте PDF на машине с нормальным набором шрифтов, не на упрощённой терминальной сессии.
Excel. При сохранении в .xls или .xlsx в файл записывается только имя шрифта. Если на компьютере получателя Arial нет (редко, но бывает на Linux и Mac), Excel подставит свой. Для Courier New, как правило, всё в порядке, но размер букв в точках соотносится с шириной столбца неточно, поэтому после выгрузки ячейки иногда обрезаются. Лечится увеличением ширины колонок или уменьшением шрифта на один-два пункта в макете.
Размер страницы, поля и масштаб влияют не меньше шрифта. Если форма при печати уходит за границу листа, проверьте параметры страницы и опцию «По ширине страницы» в настройках печати.
Нет нужного шрифта: Windows и Linux
Отдельно про терминальные серверы. Печатная форма формируется в сеансе пользователя, а шрифты берутся с сервера терминалов, а не с рабочего места. Поэтому жалоба «у меня дома всё нормально, а на терминале съехало» почти всегда решается установкой тех же шрифтов на сервер. Проверьте и локальный принтер, перенаправленный в сеанс: драйвер на терминальном сервере иногда подменяет шрифты по-своему.
На рабочих станциях Windows недостающие шрифты ставят обычным способом: скопировать файл .ttf в папку C:\Windows\Fonts или через контекстное меню «Установить для всех пользователей». Для терминального сервера устанавливайте именно для всех пользователей, иначе шрифт увидит только администратор. После установки перезапустите 1С: уже запущенные сеансы список шрифтов не обновляют.
На Linux (клиент 1С, сервер приложений, веб-сервер для тонкого клиента
) шрифтов Microsoft обычно нет. Для Ubuntu и Debian ставится пакет ttf-mscorefonts-installer. Он скачивает Arial, Times New Roman, Courier New и другие. Установка требует согласия с лицензией шрифтов.
Если скачать нельзя, подойдёт набор Liberation: он метрически совместим с основными шрифтами Microsoft. То есть ширина символов у Liberation Sans такая же, как у Arial, у Liberation Serif такая же, как у Times New Roman, у Liberation Mono такая же, как у Courier New. Текст не «поедет» при подстановке. Эти замены обычно настраиваются автоматически через fontconfig.
После установки обновите кеш и проверьте, что система видит шрифты:
fc-cache -f -v
fc-list | grep -i -E "arial|times|courier|liberation"
Обновление кеша шрифтов безопасно, но после установки пакета шрифтов перезапускайте клиент 1С. Перезапуск сервера 1С:Предприятия оборвёт сеансы всех пользователей: делайте это вне рабочего времени.
Что учесть при выборе шрифта для своих форм
Несколько практических правил, которые избавят от возни позже:
- 🔹 Используйте один-два шрифта на форму. Три и больше выглядят небрежно и мешают разбивке на страницы.
- 🔹 Для печати на обычном принтере хватает 9–10 пунктов в таблице. Меньше 8 пунктов плохо читается после копирования или факса.
- 🔹 Не берите экзотику ради оформления. Любой нестандартный шрифт нужно ставить на каждую рабочую станцию, сервер и компьютер контрагента.
- 🔹 Для табличных колонок с цифрами подходит Courier New или шрифт с моноширинными цифрами: суммы выравниваются по разрядам.
- 🔹 Перед массовой правкой макетов договоритесь о едином стандарте. Иначе через год в базе окажется десять вариантов «акта» с разным оформлением.