Многие технические специалисты и пользователи 1С столкнулись с неприятной ситуацией: после планового обновления платформы до версий 8.3.16 или 8.3.17 внешние и типовые печатные формы стали отображаться некорректно. Основная жалоба заключается в том, что текст в ячейках выглядит «обкусанным» — последние буквы или знаки препинания в конце строк исчезают, хотя в конфигураторе макет выглядит абсолютно правильным.
В этой статье мы подробно разберем, почему это происходит, проанализируем техническую подоплеку изменений и рассмотрим несколько эффективных способов решения проблемы без необходимости отката на старые версии платформы.
Для начала проанализируем ситуацию с технической точки зрения. Начиная с версии 8.3.15.1508, компания «1С» начала постепенный переход на новую библиотеку для работы со шрифтами и текстом под названием HarfBuzz. До этого момента платформа 1С использовала стандартные средства операционной системы Windows — интерфейс GDI (Graphics Device Interface).
Переход на новый движок отрисовки (Font Engine) был необходим для обеспечения идентичного отображения текстов на разных операционных системах (Windows, Linux, macOS, Android, iOS), что критично для кроссплатформенности. Однако алгоритмы расчета ширины символов в HarfBuzz и GDI различаются. В результате текст, который раньше идеально вписывался в границы ячейки, стал занимать на несколько пикселей больше места. Если для ячейки установлено свойство «Переносить», текст может неожиданно перескочить на новую строку, а если установлено «Авто» — последние символы просто скрываются за границей ячейки.
Рассмотрим самый быстрый и эффективный способ, который позволяет вернуть старый механизм отрисовки шрифтов для конкретного пользователя или всей информационной базы. Фирма «1С» предусмотрела специальный ключ запуска для случаев возникновения проблем с новыми шрифтами.
Разберем по шагам, как применить этот параметр:
/UseOldFontEngine
После этого запустим сеанс. Платформа будет использовать старый движок GDI, и расчет ширины текста в печатных формах вернется к привычному состоянию. Этот метод хорош тем, что не требует внесения изменений в конфигурацию или макеты внешних печатных форм.
Если проблема наблюдается только в одной конкретной внешней печатной форме, мы можем отредактировать сам макет. Это более трудоемкий, но «чистый» с точки зрения разработки путь. Проанализируем настройки свойств ячеек в макете ТабличныйДокумент.
Выполним следующие действия в конфигураторе:
1 или 2, платформа принудительно оставит небольшое свободное пространство в конце ячейки, что компенсирует разницу в расчетах нового движка шрифтов.Проанализируем влияние системных настроек. Ошибка часто проявляется наиболее остро на компьютерах с мониторами высокого разрешения, где установлено масштабирование экрана (например, 125% или 150%). Платформа 1С может некорректно интерпретировать эти настройки при расчете размеров шрифта.
Посмотрим, как можно скорректировать поведение системы:
Это заставит Windows самостоятельно масштабировать интерфейс приложения, что часто исправляет микроскопические ошибки в расчете ширины символов, которые приводят к обрезке текста.
Практика показывает, что новый движок HarfBuzz ведет себя по-разному с разными семействами шрифтов. Наиболее часто проблемы возникают со шрифтами без засечек, такими как Arial. Если мы проанализируем альтернативные варианты, то заметим, что шрифты Tahoma или MS Sans Serif менее подвержены эффекту «обкусывания».
Попробуем изменить шрифт в макете. Для этого выделим весь макет (Ctrl+A) и в свойствах выберем другой шрифт. Важно убедиться, что выбранный шрифт установлен на всех рабочих станциях пользователей и на сервере 1С, если печатные формы формируются на стороне сервера.
Компания «1С» признала наличие проблем с расчетом ширины текста в первых сборках веток 8.3.16 и 8.3.17. В последующих минорных обновлениях были внесены правки в алгоритмы работы HarfBuzz.
Если вы используете, например, релиз 8.3.17.1386, мы рекомендуем обновиться до более поздних стабильных сборок той же ветки, например 8.3.17.1549 и выше, или перейти на ветку 8.3.18, где многие ошибки отрисовки уже исправлены программно на уровне самой платформы.
Подводя итог, можно сказать, что проблема «обкусанного» текста — это побочный эффект технологического развития платформы. Для оперативного решения мы рекомендуем использовать параметр /UseOldFontEngine. В долгосрочной же перспективе наиболее правильным подходом будет адаптация макетов (увеличение отступов и ширины колонок) и использование актуальных релизов платформы, где ошибки в новом движке отрисовки сведены к минимуму.
Рассмотренные нами методы позволяют гибко подойти к исправлению ситуации в зависимости от того, есть ли у вас доступ к изменению кода конфигурации или вы являетесь системным администратором, настраивающим рабочие места пользователей.