Почему 1С при печати в Linux игнорирует ландшафтную ориентацию?

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

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

Шаг 1: Очистка системных настроек печати 1С

Первым делом проанализируем ситуацию, когда 1С «запоминает» неверные параметры печати для конкретного пользователя. В платформе 1С существует хранилище системных настроек, куда записываются параметры последнего вывода на печать для каждого табличного документа. Если там накопились некорректные данные, их необходимо сбросить.

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


Процедура УдалитьВсеНастройкиПечатиТекущегоПользователя()
    ИмяПользователяИБ = ПользователиИнформационнойБазы.ТекущийПользователь.Имя;
    МассивНастроек = Новый Массив;
    Настройки = ХранилищеСистемныхНастроек.Выбрать(Новый Структура("Пользователь", ИмяПользователяИБ));
    
    Пока Настройки.Следующий() Цикл
        Если СтрНачинаетсяС(Настройки.КлючОбъекта, "Общее/НастройкиПечатиТабличногоДокумента") Тогда
            МассивНастроек.Добавить(Настройки.КлючОбъекта);
        КонецЕсли;
    КонецЦикла;
    
    Для Каждого КлючНастройки Из МассивНастроек Цикл
        ХранилищеСистемныхНастроек.Удалить(КлючНастройки, Неопределено, ИмяПользователяИБ);
    КонецЦикла;
КонецПроцедуры

После выполнения данного кода рекомендуется перезапустить сеанс работы с 1С. Это часто помогает, если проблема вызвана несовпадением параметров в ХранилищеСистемныхНастроек и возможностями текущего принтера в системе.

Шаг 2: Диагностика драйверов принтера и PPD-файлов

Если очистка кэша не принесла результатов, переходим к уровню операционной системы. Проблема часто кроется в том, как платформа взаимодействует с подсистемой печати CUPS (Common Unix Printing System) через PPD-файлы (PostScript Printer Description).

Разберем, что нужно предпринять:

  1. Проверка драйвера производителя: Если вы используете специфический драйвер от производителя принтера, он может быть оптимизирован под Windows и некорректно транслировать команды ориентации страницы в Linux.
  2. Использование драйверов Generic: Попробуйте сменить текущий драйвер в настройках принтера (через веб-интерфейс localhost:631) на универсальный драйвер, такой как Generic PCL 6 или Generic PostScript. Они имеют меньше специфических ограничений и часто лучше интерпретируют команды 1С.
  3. Настройки CUPS по умолчанию: В веб-интерфейсе CUPS можно принудительно задать ориентацию бумаги по умолчанию для конкретной очереди печати. Иногда это «перекрывает» некорректные команды, поступающие из приложения.

Шаг 3: Почему помогает экспорт в PDF?

Вы могли заметить, что при экспорте документа в PDF и последующей печати из просмотрщика PDF ориентация сохраняется верно. Это подтверждает, что сам принтер физически способен печатать в ландшафтном режиме. Проблема заключается именно в этапе генерации задания на печать платформой 1С. Когда вы отправляете документ напрямую, 1С создает поток данных (например, в формате PostScript или PCL), и если PPD-файл содержит неверную инструкцию для параметра Orientation, принтер просто игнорирует запрос на поворот страницы.

Дополнительные рекомендации

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

Подводя итог: в 90% случаев проблема решается либо полной очисткой настроек печати пользователя в 1С, либо переустановкой принтера с использованием универсального драйвера Generic PostScript, который стабильнее работает с запросами 1С в Linux-среде.

← На главную