← На главную
При работе в терминальном режиме (RDP) пользователи платформы «1С:Предприятие 7.7» нередко сталкиваются с ситуацией, когда стандартные документы (например, ТОРГ-12) выводятся на печать быстро, а печать универсального передаточного документа (УПД) занимает в два и более раз больше времени, хотя на экране форма формируется практически мгновенно. Разберем детально, почему это происходит и как устранить задержки при выводе на печать.
Причины медленной печати сложных форм по RDP
Проанализируем техническую сторону формирования и отправки задания на печать из 1С версии 7.7:
- Избыточная сетка колонок в макете таблицы (
MXL). В печатной форме УПД разработчики часто создают мелкую сетку (более 100–170 колонок), чтобы гибко объединять ячейки и подгонять ширину реквизитов. Графический движок «1С 7.7» обрабатывает каждую ячейку и каждую границу через вызовы Windows GDI API (LineTo, Rectangle, ExtTextOut). Чем больше ячеек и линий в таблице, тем больше примитивов генерируется при выводе на печать.
- Особенности механизма Remote Desktop Easy Print. По умолчанию службы удаленных рабочих столов Windows используют драйвер Easy Print, который конвертирует команды GDI в промежуточный XML-документ формата XPS. Для документов со сложной версткой формируется массивный поток данных, требующий длительной растеризации на сервере и последующей передачи по RDP-каналу на локальный клиент.
- Прослойка разрядности
SplWOW64. Поскольку «1С:Предприятие 7.7» — 32-разрядное приложение (x86), на 64-битных серверах вызовы подсистемы печати транслируются через системный процесс splwow64.exe. Маршалинг сотен графических примитивов ячеек вносит дополнительную задержку.
- Тип драйвера печати (PCL6 / PostScript / Host-Based). Драйверы PCL6 воспринимают сетку таблицы как векторную графику и формируют тяжелый спул-файл, что существенно снижает скорость обработки задания принтером.
Способ 1. Оптимизация макета табличного документа (MXL)
Рассмотрим первый уровень оптимизации — сокращение количества графических элементов внутри печатной формы:
- Откроем печатную форму УПД в конфигураторе или во внешней обработке.
- Проверим реальное количество колонок. Если их более 50–70 (например, 150–170), это свидетельствует об избыточном дроблении таблицы.
- Удалим неиспользуемые и избыточные пустые колонки, объединив соседние области таблицы без потери общего визуального форматирования бланка.
- Проверим свойства ячеек: очистим оформление у пустых областей, удалим невидимые границы со стилем «Нет линии» (установив базовое отсутствие границ), чтобы они не генерировали холостые команды GDI.
- Используем стандартные системные шрифты (например, Arial или Tahoma) без частого переключения стилей (полужирный/курсив) в рамках одной строки.
Способ 2. Отключение Remote Desktop Easy Print и переход на прямые драйверы
Перенаправление печати через Easy Print часто является главным источником задержек при передаче сложных бланков. Выполним перенастройку групповых политик сервера:
- Откроем редактор локальной групповой политики на сервере, выполнив команду
gpedit.msc.
- Перейдем по пути: Конфигурация компьютера -> Административные шаблоны -> Компоненты Windows -> Службы удаленных рабочих столов -> Узел сеансов удаленных рабочих столов -> Перенаправление принтеров.
- Найдем политику «Использовать в первую очередь драйвер принтера Easy Print удаленного рабочего стола» и переведем ее в состояние «Отключено».
- Установим на сервере и клиентском компьютере полностью идентичные версии официальных драйверов печати производителя (названия драйверов в системе должны совпадать символ в символ).
- По возможности используем драйверы версии PCL5 или универсальные драйверы (Universal Print Driver), так как они быстрее обрабатывают текстово-табличные данные по сравнению с PCL6.
Способ 3. Прямая печать через сетевой порт (TCP/IP)
Если принтер находится в одной локальной сети с терминальным сервером (или объединен через корпоративный VPN-канал), наиболее эффективным решением будет отказ от перенаправления клиентских принтеров:
- В параметрах RDP-клиента (
mstsc.exe) на вкладке «Локальные ресурсы» снимем отметку с пункта «Принтеры».
- На терминальном сервере установим принтер как сетевой, указав его прямой локальный IP-адрес через стандартный порт TCP/IP (или подключим расшаренный сетевой принтер).
- В свойствах принтера на сервере (вкладка «Дополнительно») включим режим «Начинать печать немедленно», чтобы печать стартовала до полной буферизации всего задания.
- Проверим формат данных очереди печати (Spooler): для прямых драйверов переключение типа данных на
RAW обеспечивает прямую передачу готовых инструкций в порт принтера без лишних преобразований.
Комплексное применение оптимизации макета MXL и настройка прямого вывода на сетевой порт позволяют сократить время печати УПД в терминальной среде до уровня обычных документов.