При обновлении платформы 1С:Предприятие с версии 8.3.15 на 8.3.17 и выше многие технические специалисты столкнулись с неприятным эффектом: при выводе на печать макетов (особенно содержащих графические объекты или текстовые поля внутри рисунков) на матричных принтерах буквы начинают «наползать» друг на друга. Расстояние между символами сокращается настолько, что текст становится нечитаемым. При этом на обычных лазерных или струйных принтерах тот же самый макет под тем же пользователем печатается корректно.
В этой статье мы подробно разберем причины возникновения данной проблемы, проанализируем изменения в графическом движке 1С и рассмотрим пошаговые инструкции по восстановлению корректной печати.
Основная причина кроется в изменении механизмов формирования графического контента при печати, которые компания «1С» начала внедрять, начиная с версии 8.3.16. Платформа перешла на новые алгоритмы взаимодействия с подсистемой Windows GDI/GDI+. Проблема со сжатием текста в объектах типа Картинка или Рисунок связана с тем, как платформа рассчитывает координаты символов при низком разрешении печати.
Матричные принтеры, такие как OKI Microline 1120 eco, имеют крайне низкое аппаратное разрешение (от 120 до 240 DPI). Новые версии платформы при рендеринге графических элементов могут некорректно округлять межсимвольное расстояние (кернинг), из-за чего буквы смещаются. В официальной базе ошибок 1С эта проблема частично описана под кодом 10212820. Хотя описание ошибки часто ссылается на терминальный сервер (RDP), практика показывает, что она проявляется и в локальных сессиях тонкого клиента.
Проанализируем ситуацию подробнее: когда вы используете объект Рисунок с текстом, 1С передает его на принтер не как чистый шрифт, а как сложный графический объект. Если драйвер принтера настроен на определенную эмуляцию, происходит конфликт интерпретации координат.
Если ваша задача — позволить пользователю перемещать текстовый блок по макету, попробуйте изменить тип используемого объекта. Рассмотрим, как это сделать:
Картинка (в который вставлен текст) попробуем использовать объект типа Текст (Drawing).Проанализируем свойства созданного объекта. В палитре свойств обратим внимание на шрифт. Использование простых шрифтов без засечек (например, Arial или Courier New) часто помогает избежать проблем с наложением букв.
Если использование картинки неизбежно (например, в ней содержится логотип вместе с текстом), проверим настройки масштабирования. Выполним следующие шаги:
Автомасштабирование или Растянуть установим значение Реальный размер.Это заставит платформу передавать картинку на печать «как есть», без дополнительных вычислений коэффициентов сжатия, которые на низком DPI матричного принтера приводят к ошибкам позиционирования.
Для принтеров OKI серии Microline критически важна настройка эмуляции. Эти устройства могут работать в режимах ML, Epson FX или IBM ProPrinter. Разберем алгоритм действий по настройке драйвера:
120x144 dots per inch или 240x216 dots per inch.Важный момент: если принтер подключен через USB, убедитесь, что в настройках порта не стоит галочка «Разрешить двусторонний обмен данными», так как это иногда мешает корректной передаче графических команд в новых версиях Windows.
Иногда полезно принудительно задать параметры печатной формы в коде перед выводом на печать. Посмотрим на пример кода, который инициализирует табличный документ:
ТабДок = Новый ТабличныйДокумент;
ТабДок.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_МАКЕТА_МАТРИЧНЫЙ";
ТабДок.АвтоМасштаб = Ложь; // Отключаем автоматическое масштабирование
ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
ТабДок.ТолькоПросмотр = Истина;
// Выводим макет в ТабДок
Отключение свойства АвтоМасштаб позволяет избежать лишних пересчетов координат элементов макета со стороны 1С, которые часто и являются причиной «схлопывания» текста.
Проанализируем настройки экрана на компьютере, с которого осуществляется печать. В современных версиях Windows 10 и 11 часто установлено масштабирование 125% или 150% для мониторов с высоким разрешением. Платформа 1С при формировании графического потока для принтера может учитывать этот системный коэффициент.
Попробуем установить масштаб 100% в настройках Windows (Параметры -> Система -> Дисплей -> Масштаб и разметка). Если после этого печать на матричном принтере станет корректной, значит, проблема в некорректной передаче DPI-коэффициента от ОС к платформе 1С при работе с низкодетальными устройствами печати.
Подводя итог, можно сказать, что проблема носит комплексный характер. Если ни один из способов настройки макета и драйвера не помог, остается два варианта:
8.3.15 проблема отсутствует. Если бизнес-процессы позволяют, можно остаться на этой версии до выхода исправлений в более новых релизах (проверяйте исправление ошибки 10212820 в чейнджлогах).Мы надеемся, что приведенные шаги помогут вам победить проблему сжатия расстояния между буквами и обеспечат стабильную работу складской или бухгалтерской печати на ваших устройствах.