Почему 1С 8.3 на Linux вылетает при печати на принтеры Kyocera и как это исправить?

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

Перевод рабочих мест пользователей на операционные системы семейства Linux (такие как Ubuntu, Lubuntu, Astra Linux или ROSA Linux) совместно с платформой «1С:Предприятие 8.3» — отличный способ оптимизации ИТ-инфраструктуры. Однако в процессе эксплуатации системные администраторы часто сталкиваются со специфическими проблемами. Одна из самых распространенных и неприятных проблем — мгновенное закрытие («вылет» или «схлопывание») клиента 1С при попытке отправить документ на печать. При этом из любых других офисных приложений (например, LibreOffice или просмотрщиков PDF) принтер печатает абсолютно стабильно.

Особенно часто эта проблема проявляется при использовании принтеров и МФУ марки Kyocera (например, популярных моделей FS-4100dn, M2035dn и др.). В этой статье мы подробно разберем, почему возникает этот сбой, проанализируем его причины и рассмотрим практические шаги по устранению проблемы для обеспечения стабильной работы пользователей.

Выясняем причину: почему 1С конфликтует с Kyocera на Linux?

Для начала проанализируем, почему графический движок 1С ведет себя нестабильно именно с принтерами Kyocera, в то время как принтеры других марок (например, старые модели HP LaserJet) работают без нареканий.

Дело в том, что платформа 1С при подготовке печатной формы или вызове диалога печати обращается к системному диспетчеру печати CUPS (Common UNIX Printing System) для получения детальных характеристик устройства. В отличие от простых просмотрщиков документов, 1С выполняет глубокий опрос параметров принтера: запрашивает поддерживаемые разрешения, доступные физические поля, параметры двусторонней печати (дуплекс) и поддерживаемые форматы бумаги.

Проприетарные драйверы Kyocera для Linux часто описывают эти параметры в PPD-файлах с использованием сложных специфических конструкций. Графический движок 1С (основанный на библиотеках wxWidgets/WebKit) не может корректно распарсить этот файл описания. Это вызывает критическую ошибку сегментации (Segmentation fault), в результате чего операционная система мгновенно закрывает процесс 1С без вывода каких-либо предупреждений. При этом на стороне сервера сессия пользователя часто остается активной («зависает»), так как сервер не успевает получить сигнал о корректном выходе клиента.

Рассмотрим подробные практические способы решения этой проблемы.

Способ 1. Замена оригинального драйвера на Generic-совместимый в CUPS

Использование оригинального драйвера Kyocera с диска или официального сайта — главная причина падений платформы. Самый эффективный способ решить проблему — настроить принтер в CUPS на использование стандартного совместимого драйвера, который отдает системе только базовые, гарантированно корректные параметры.

Разберем этот процесс по шагам:

  1. Откройте браузер и перейдите в веб-интерфейс администрирования CUPS по адресу: http://localhost:631 (если доступ заблокирован, включите его в терминале командой sudo cupsctl WebInterface=yes).
  2. Перейдите во вкладку Printers (Принтеры) и выберите ваше устройство Kyocera.
  3. В выпадающем меню Administration (Администрирование) выберите пункт Modify Printer (Изменить принтер).
  4. Оставьте текущее подключение (порт) без изменений и нажимайте «Продолжить», пока не дойдете до выбора производителя и драйвера.
  5. В списке производителей выберите Generic (Общие).
  6. В списке доступных моделей выберите Generic PCL 6/PCL XL Printer Foomatic или Generic PostScript Printer. Также хорошо себя показывают универсальные драйверы из базы Gutenprint.
  7. Нажмите кнопку Modify Printer для сохранения изменений.

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

Способ 2. Очистка имени принтера от спецсимволов и кириллицы

Платформа 1С под управлением Linux очень чувствительна к именам принтеров, зарегистрированных в системе CUPS. Если имя сетевого или локального принтера слишком длинное или содержит пробелы, кириллицу или спецсимволы (например, Kyocera_FS-4100DN_Бухгалтерия), это может спровоцировать ошибку сегментации при попытке печати.

Проанализируем структуру имени принтера и упростим его. Переименуйте принтер в CUPS, задав ему максимально короткое и понятное имя на латинице без пробелов и спецсимволов (например: Kyo4100, buh-kyo или sklad-print).

Способ 3. Установка шрифтов Microsoft Core Fonts

При формировании печатных форм (табличных документов) платформа 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

Способ 4. Отключение аппаратного ускорения WebKit

Начиная с версии платформы 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С через него. Это отключит проблемные функции аппаратного ускорения рендеринга документов перед печатью.

Способ 5. Сброс кэша настроек печати в базе 1С

Иногда сбои при печати на конкретном компьютере вызваны тем, что в кэше настроек пользователя внутри самой базы 1С сохранились некорректные параметры страницы или настройки принтера. При попытке прочитать эти данные 1С падает.

Для решения этой проблемы выполним очистку настроек:

  1. Запустите 1С под правами администратора.
  2. Перейдите в раздел Администрирование — Настройки пользователей и прав — Пользователи.
  3. Выберите проблемного пользователя и откройте его карточку настроек.
  4. Найдите раздел Настройки печати табличных документов и нажмите кнопку Очистить.

При следующем сеансе работы 1С заново инициализирует параметры принтера, используя обновленные данные из CUPS.

Способ 6. Использование виртуального PDF-принтера (обходной путь)

Если вам нужно срочно распечатать важный документ, а времени на перенастройку драйверов CUPS прямо сейчас нет, можно воспользоваться стабильным обходным путем через виртуальный PDF-принтер.

  1. Установите виртуальный принтер в систему командой: sudo apt install cups-pdf.
  2. В настройках печати 1С выберите принтер PDF в качестве устройства по умолчанию.
  3. Отправьте документ на печать. Платформа 1С без вылетов сохранит документ в формате PDF в домашнюю папку пользователя (обычно в каталог ~/PDF).
  4. Откройте полученный PDF-файл стандартным просмотрщиком документов Linux и отправьте его на физический принтер Kyocera. Системные просмотрщики документов печатают на Kyocera без каких-либо сбоев.

Резюме

Мы подробно разобрали причины нестабильного поведения платформы 1С на Linux при печати на принтеры Kyocera. Наиболее надежным решением, устраняющим корень проблемы, является замена проприетарного PPD-драйвера в CUPS на стандартный драйвер Generic PCL 6 или Generic PostScript, а также оптимизация имени принтера и установка пакета шрифтов Microsoft Core Fonts. Эти несложные системные настройки позволят вашим пользователям работать в 1С на Linux стабильно и без внезапных вылетов программы.

← На главную