Перевод рабочих мест пользователей на операционные системы семейства Linux (такие как Ubuntu, Lubuntu, Astra Linux или ROSA Linux) совместно с платформой «1С:Предприятие 8.3» — отличный способ оптимизации ИТ-инфраструктуры. Однако в процессе эксплуатации системные администраторы часто сталкиваются со специфическими проблемами. Одна из самых распространенных и неприятных проблем — мгновенное закрытие («вылет» или «схлопывание») клиента 1С при попытке отправить документ на печать. При этом из любых других офисных приложений (например, LibreOffice или просмотрщиков PDF) принтер печатает абсолютно стабильно.
Особенно часто эта проблема проявляется при использовании принтеров и МФУ марки Kyocera (например, популярных моделей FS-4100dn, M2035dn и др.). В этой статье мы подробно разберем, почему возникает этот сбой, проанализируем его причины и рассмотрим практические шаги по устранению проблемы для обеспечения стабильной работы пользователей.
Для начала проанализируем, почему графический движок 1С ведет себя нестабильно именно с принтерами Kyocera, в то время как принтеры других марок (например, старые модели HP LaserJet) работают без нареканий.
Дело в том, что платформа 1С при подготовке печатной формы или вызове диалога печати обращается к системному диспетчеру печати CUPS (Common UNIX Printing System) для получения детальных характеристик устройства. В отличие от простых просмотрщиков документов, 1С выполняет глубокий опрос параметров принтера: запрашивает поддерживаемые разрешения, доступные физические поля, параметры двусторонней печати (дуплекс) и поддерживаемые форматы бумаги.
Проприетарные драйверы Kyocera для Linux часто описывают эти параметры в PPD-файлах с использованием сложных специфических конструкций. Графический движок 1С (основанный на библиотеках wxWidgets/WebKit) не может корректно распарсить этот файл описания. Это вызывает критическую ошибку сегментации (Segmentation fault), в результате чего операционная система мгновенно закрывает процесс 1С без вывода каких-либо предупреждений. При этом на стороне сервера сессия пользователя часто остается активной («зависает»), так как сервер не успевает получить сигнал о корректном выходе клиента.
Рассмотрим подробные практические способы решения этой проблемы.
Использование оригинального драйвера Kyocera с диска или официального сайта — главная причина падений платформы. Самый эффективный способ решить проблему — настроить принтер в CUPS на использование стандартного совместимого драйвера, который отдает системе только базовые, гарантированно корректные параметры.
Разберем этот процесс по шагам:
http://localhost:631 (если доступ заблокирован, включите его в терминале командой sudo cupsctl WebInterface=yes).После замены драйвера на Generic принтер продолжит стабильно выводить текстовую и графическую информацию из 1С, но перестанет передавать платформе сложные внутренние параметры, вызывающие сбой парсера. Вылеты прекратятся.
Платформа 1С под управлением Linux очень чувствительна к именам принтеров, зарегистрированных в системе CUPS. Если имя сетевого или локального принтера слишком длинное или содержит пробелы, кириллицу или спецсимволы (например, Kyocera_FS-4100DN_Бухгалтерия), это может спровоцировать ошибку сегментации при попытке печати.
Проанализируем структуру имени принтера и упростим его. Переименуйте принтер в CUPS, задав ему максимально короткое и понятное имя на латинице без пробелов и спецсимволов (например: Kyo4100, buh-kyo или sklad-print).
При формировании печатных форм (табличных документов) платформа 1С использует стандартные шрифты Windows, такие как Arial, Times New Roman, Calibri или Tahoma. Если в Linux-системе эти шрифты отсутствуют, графический движок платформы пытается выполнить маппинг (подмену) отсутствующих шрифтов свободными аналогами непосредственно перед отправкой задания на печать. В процессе этого рендеринга программа может завершиться аварийно.
Для предотвращения подобных сбоев рекомендуется установить в систему оригинальный пакет шрифтов Microsoft. На дистрибутивах Ubuntu, Lubuntu и их производных это можно сделать одной командой в терминале:
sudo apt update && sudo apt install ttf-mscorefonts-installer
После завершения установки обязательно обновите кэш шрифтов операционной системы, выполнив команду:
sudo fc-cache -f -v
Начиная с версии платформы 8.3.14 и выше, для отрисовки интерфейсов и некоторых типов документов 1С использует встроенный движок WebKit. На ряде дистрибутивов Linux взаимодействие WebKit с установленными видеодрайверами (особенно встроенной графикой Intel или картами Nvidia) приводит к сбоям при выводе графики на печать.
Мы можем отключить аппаратное ускорение композиции WebKit. Для этого необходимо запускать платформу 1С с передачей специальных переменных окружения. Создадим простой Bash-скрипт для запуска 1С:
#!/bin/bash
export WEBKIT_DISABLE_COMPOSITING_MODE=1
export WEBKIT_DISABLE_DMABUF_RENDERER=1
/opt/1cv8/common/1cestart
Сохраните этот скрипт, сделайте его исполняемым и запускайте 1С через него. Это отключит проблемные функции аппаратного ускорения рендеринга документов перед печатью.
Иногда сбои при печати на конкретном компьютере вызваны тем, что в кэше настроек пользователя внутри самой базы 1С сохранились некорректные параметры страницы или настройки принтера. При попытке прочитать эти данные 1С падает.
Для решения этой проблемы выполним очистку настроек:
При следующем сеансе работы 1С заново инициализирует параметры принтера, используя обновленные данные из CUPS.
Если вам нужно срочно распечатать важный документ, а времени на перенастройку драйверов CUPS прямо сейчас нет, можно воспользоваться стабильным обходным путем через виртуальный PDF-принтер.
sudo apt install cups-pdf.~/PDF).Мы подробно разобрали причины нестабильного поведения платформы 1С на Linux при печати на принтеры Kyocera. Наиболее надежным решением, устраняющим корень проблемы, является замена проприетарного PPD-драйвера в CUPS на стандартный драйвер Generic PCL 6 или Generic PostScript, а также оптимизация имени принтера и установка пакета шрифтов Microsoft Core Fonts. Эти несложные системные настройки позволят вашим пользователям работать в 1С на Linux стабильно и без внезапных вылетов программы.