Почему сжимается расстояние между буквами при печати из 1С на матричном принтере и как это исправить

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

При обновлении платформы 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С передает его на принтер не как чистый шрифт, а как сложный графический объект. Если драйвер принтера настроен на определенную эмуляцию, происходит конфликт интерпретации координат.

Решение 1: Изменение типа объекта в макете

Если ваша задача — позволить пользователю перемещать текстовый блок по макету, попробуйте изменить тип используемого объекта. Рассмотрим, как это сделать:

  1. Откроем макет печатной формы в Конфигураторе.
  2. Вместо объекта Картинка (в который вставлен текст) попробуем использовать объект типа Текст (Drawing).
  3. Для этого выберем в меню: Таблица — Рисунки — Текст.
  4. Разместим его в нужном месте. Платформа обрабатывает текстовые объекты иначе, чем картинки, используя стандартные шрифты Windows, что значительно повышает шансы на корректную интерпретацию матричным принтером.

Проанализируем свойства созданного объекта. В палитре свойств обратим внимание на шрифт. Использование простых шрифтов без засечек (например, Arial или Courier New) часто помогает избежать проблем с наложением букв.

Решение 2: Настройка свойств графического объекта

Если использование картинки неизбежно (например, в ней содержится логотип вместе с текстом), проверим настройки масштабирования. Выполним следующие шаги:

  1. Выделим объект в макете и откроем его Свойства.
  2. Найдем параметр Размер картинки.
  3. Вместо значений Автомасштабирование или Растянуть установим значение Реальный размер.

Это заставит платформу передавать картинку на печать «как есть», без дополнительных вычислений коэффициентов сжатия, которые на низком DPI матричного принтера приводят к ошибкам позиционирования.

Решение 3: Настройка драйвера принтера и эмуляции

Для принтеров OKI серии Microline критически важна настройка эмуляции. Эти устройства могут работать в режимах ML, Epson FX или IBM ProPrinter. Разберем алгоритм действий по настройке драйвера:

  1. Зайдем в Панель управления — Устройства и принтеры.
  2. Выберем свойства принтера OKI ML 1120 eco.
  3. На вкладке Настройка печати нажмем кнопку Дополнительно.
  4. Найдем параметр разрешения печати. Попробуем принудительно выставить фиксированное значение, например, 120x144 dots per inch или 240x216 dots per inch.
  5. Если это не помогает, попробуем изменить драйвер на OKI ML 1120 (Euro) или даже на универсальный Generic / Text Only (учтите, что в последнем случае графика печататься не будет вовсе).

Важный момент: если принтер подключен через USB, убедитесь, что в настройках порта не стоит галочка «Разрешить двусторонний обмен данными», так как это иногда мешает корректной передаче графических команд в новых версиях Windows.

Решение 4: Программное управление параметрами печати

Иногда полезно принудительно задать параметры печатной формы в коде перед выводом на печать. Посмотрим на пример кода, который инициализирует табличный документ:


ТабДок = Новый ТабличныйДокумент;
ТабДок.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_МАКЕТА_МАТРИЧНЫЙ";
ТабДок.АвтоМасштаб = Ложь; // Отключаем автоматическое масштабирование
ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
ТабДок.ТолькоПросмотр = Истина;
// Выводим макет в ТабДок

Отключение свойства АвтоМасштаб позволяет избежать лишних пересчетов координат элементов макета со стороны 1С, которые часто и являются причиной «схлопывания» текста.

Решение 5: Работа с масштабированием Windows

Проанализируем настройки экрана на компьютере, с которого осуществляется печать. В современных версиях Windows 10 и 11 часто установлено масштабирование 125% или 150% для мониторов с высоким разрешением. Платформа 1С при формировании графического потока для принтера может учитывать этот системный коэффициент.

Попробуем установить масштаб 100% в настройках Windows (Параметры -> Система -> Дисплей -> Масштаб и разметка). Если после этого печать на матричном принтере станет корректной, значит, проблема в некорректной передаче DPI-коэффициента от ОС к платформе 1С при работе с низкодетальными устройствами печати.

Заключение и рекомендации

Подводя итог, можно сказать, что проблема носит комплексный характер. Если ни один из способов настройки макета и драйвера не помог, остается два варианта:

Мы надеемся, что приведенные шаги помогут вам победить проблему сжатия расстояния между буквами и обеспечат стабильную работу складской или бухгалтерской печати на ваших устройствах.

← На главную