Почему при печати из 1С:ЗУП 3.1 пропадают символы при использовании шрифта Verdana?

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

При работе с программой 1С:Зарплата и Управление Персоналом 3.1 пользователи часто сталкиваются с неприятной особенностью: на экране монитора печатная форма выглядит идеально, вся информация умещается в колонки, но при выводе на печать или в режиме предварительного просмотра первый или последний символ строки таинственным образом исчезает. Особенно остро эта проблема проявляется при использовании шрифта Verdana. В этой статье мы подробно разберем, почему это происходит и как исправить ситуацию различными методами.

Проанализируем причину проблемы

Выясним, почему замена шрифта Verdana на Arial часто решает проблему. Шрифт Verdana был разработан специально для чтения с экрана монитора при низком разрешении. Он обладает увеличенным межсимвольным интервалом и широкими пропорциями знаков. Платформа 1С при формировании табличного документа использует системные механизмы Windows (движок GDI или GDI+) для расчета ширины текстового блока.

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

Решение 1: Изменение масштаба печати

Посмотрим на самый простой и быстрый способ, который помогает в 95% случаев. Если проблема носит массовый характер, а редактировать каждый макет нет возможности, попробуем изменить параметры страницы печатной формы.

  1. Откроем печатную форму, в которой наблюдается проблема.
  2. Перейдем в меню Файл — Параметры страницы.
  3. В поле Масштаб вместо значения "По ширине страницы" установим фиксированный масштаб.
  4. Рассмотрим установку значения 95% или 98%. Часто именно это небольшое уменьшение позволяет "втиснуть" капризные символы Verdana в границы колонок без визуальной потери качества документа.

Важный нюанс: на некоторых версиях платформы (например, 8.3.14 или 8.3.15) может помочь включение или, наоборот, отключение опции Автомасштаб. Проанализируем результат, переключая эти флажки в окне предварительного просмотра.

Решение 2: Редактирование макета в пользовательском режиме

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

  1. Перейдем в раздел Администрирование — Печатные формы, отчеты и обработки — Макеты печатных форм.
  2. Найдем в списке нужный макет (например, "Приказ о приеме").
  3. Нажмем кнопку Изменить.
  4. В открывшемся редакторе табличного документа выделим проблемную колонку и немного увеличим ее ширину (буквально на 1-2 мм).
  5. Сохраним изменения. Теперь программа будет использовать этот "пользовательский" макет вместо стандартного.

Этот метод хорош тем, что он точечно решает проблему для конкретного документа, не затрагивая всю систему целиком.

Решение 3: Настройка свойств размещения текста в ячейке

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

Для решения проблемы со шрифтом Verdana попробуем установить в макете режим Забивать. В этом случае алгоритм отрисовки менее агрессивно ограничивает символы, и они могут корректно пропечататься, даже если формально выходят за границу на долю миллиметра.

Если вы разрабатываете собственную печатную форму программно, это можно сделать следующим образом:


ОбластьМакета = Макет.ПолучитьОбласть("Строка");
Ячейка = ОбластьМакета.Область("R1C2");
Ячейка.РазмещениеТекста = ТипРазмещенияТекстаТабличногоДокумента.Забивать;
ТабДок.Вывести(ОбластьМакета);

Решение 4: Технические настройки операционной системы

Иногда корень проблемы лежит в настройках Windows, особенно на терминальных серверах (Windows Server 2016) или старых системах (Win7). Рассмотрим факторы, влияющие на рендеринг:

  1. Масштабирование DPI: Если в настройках экрана установлено 125% или 150%, 1С может некорректно транслировать размеры шрифтов при печати. Рекомендуется использовать масштаб 100%.
  2. Сглаживание ClearType: Попробуем временно отключить ClearType в панели управления Windows. Это заставит систему использовать стандартные метрики шрифтов, что может синхронизировать экранное и печатное представление.
  3. Драйвер принтера: Проанализируем работу с разными драйверами. Если используется PCL6, попробуйте переключиться на PostScript (PS) или универсальный драйвер от производителя. Разные драйверы по-разному интерпретируют векторные шрифты.

Обновление платформы и движок HarfBuzz

Важно отметить, что в старых версиях платформы (8.3.14, 8.3.15) механизмы работы со шрифтами имели ряд ограничений. Начиная с версии 8.3.18, фирма "1С" перешла на использование библиотеки HarfBuzz для рендеринга текста. Этот движок гораздо точнее вычисляет границы символов и учитывает особенности современных шрифтов, включая Verdana. Если у вас есть возможность обновить платформу до актуальной (например, 8.3.22 и выше), это может стать окончательным решением проблемы без необходимости править макеты или менять шрифты на Arial.

Подведем итог: если вы столкнулись с "исчезновением" букв при использовании Verdana, начните с проверки масштаба страницы (95%) и настройки Автомасштаб. Если это не помогает — точечно расширьте колонки в макетах через раздел "Макеты печатных форм". В долгосрочной перспективе лучшим решением будет переход на более свежую версию платформы 1С.

← На главную