Мы сталкиваемся с распространенной проблемой, когда при использовании платформы 1С:Предприятие версий 8.3.16 и 8.3.17 под операционной системой Linux, этикетки, предназначенные для печати, выводятся на формат А4 вместо их заданного размера. При этом на платформе 8.3.15.1656 печать этикеток осуществляется корректно, 1С правильно определяет заданный размер в драйвере принтера. Давайте разберем эту ситуацию подробнее и выясним, какие шаги можно предпринять для устранения этой неполадки.
Мы выяснили, что основная причина возникновения данной проблемы кроется в полной переработке подсистемы работы с принтером, которая была реализована в версии 1С:Предприятие 8.3.16. Ранее для взаимодействия с принтерами использовались DLL-библиотеки в адресном пространстве клиента, но в новой архитектуре был введен отдельный запускаемый процесс. Это изменение, призванное, вероятно, повысить стабильность и изолировать ошибки, привело к возникновению новых сложностей, особенно при работе в среде Linux.
Рассмотрим подробнее сценарии, в которых проявляется некорректное поведение:
Дополнительно, проблемы с печатью из 1С под Linux возникают уже давно и могут быть связаны с некорректной работой внутренней библиотеки 1С libMagickCore-6.Q8.so.2 (которая является частью ImageMagick). Предполагается, что эта библиотека может жестко прописывать формат "Tabloid" или неправильно определять размеры бумаги, что, как мы видели, приводило к проблемам даже в версии 8.3.15, где 1С-ка автоматом подставляла формат Tabloid вместо А4, требуя ручной корректировки. Служба поддержки 1С часто акцентирует внимание на использовании только официально поддерживаемых дистрибутивов Linux, и любое отклонение от этого списка может привести к непредсказуемым проблемам.
Решение этой проблемы, как показывает практика, требует комплексного подхода, затрагивающего как операционную систему и драйверы принтера, так и настройки внутри самой платформы 1С. Мы разберем шаги, которые помогут вам восстановить корректную печать этикеток.
Для стабильной и корректной работы клиента 1С:Предприятия под Linux, включая функциональность печати, критически важно убедиться в наличии и правильной установке всех необходимых системных библиотек и шрифтов.
Установка необходимых библиотек:
Мы должны убедиться, что следующие библиотеки установлены в вашей операционной системе:
libwebkitgtk-3.0.0: Важно, чтобы была установлена версия 1.4.3 или выше. Эта библиотека отвечает за корректное отображение веб-компонентов, которые могут использоваться 1С.libpng12: Библиотека для работы с PNG изображениями.libicu48: Библиотека для поддержки интернационализации и Unicode.ImageMagick (пакет libmagickcore-6.q16-dev): Используется для обработки изображений, и, как мы упоминали, её некорректная работа может влиять на определение размеров бумаги.libfontconfigl и libfreetype6-dev: Отвечают за работу со шрифтами и их растеризацию.libgsf-l-dev и libglib2.0-dev: Общие библиотеки для графического интерфейса и базовых функций.libodbcl: Библиотека для работы с ODBC-драйверами, если ваше решение использует их.Отсутствие какой-либо из этих библиотек может приводить к разнообразным ошибкам, включая некорректную печать штрихкодов или неправильное определение размеров страниц.
Шрифты:
Для корректного отображения и печати шрифтов мы настоятельно рекомендуем установить шрифты из состава Microsoft Core Fonts. Это обеспечит единообразие отображения документов, разработанных в 1С, независимо от операционной системы.
Актуальность дистрибутива Linux:
Мы заметили, что проблемы с печатью могут возникать даже в более новых версиях платформы 1С, таких как 8.3.18, особенно при обновлении дистрибутива Linux (например, переход с Ubuntu 20.04 на 22.04). В таких случаях часто проявляются артефакты в виде некорректной растеризации шрифтов, что может свидетельствовать о конфликтах новых версий системных библиотек с внутренними компонентами 1С.
Настройки системы печати CUPS (Common Unix Printing System) в Linux играют ключевую роль в корректной работе принтеров.
Корректная установка драйвера и пользовательского размера бумаги:
Мы должны тщательно проверить и убедиться, что в настройках драйвера принтера в ОС Linux (которые обычно доступны через веб-интерфейс CUPS по адресу http://localhost:631 или через системные настройки печати) корректно установлен пользовательский размер бумаги, полностью соответствующий размеру вашей этикетки. Это критически важный шаг, так как 1С, по-видимому, не всегда корректно взаимодействует с этой системной информацией в версиях 8.3.16 и выше.
Переустановка принтера:
Если мы сталкиваемся с проблемами, такими как неправильная ориентация печати, обрезанные края или некорректная растеризация шрифтов, иногда помогает полная переустановка принтера в CUPS. Удаление и повторное добавление принтера может сбросить поврежденные настройки и заставить систему перечитать параметры драйвера.
Обходное решение через CUPS-PDF и скрипты (Микросервис):
Это один из наиболее надежных обходных путей, упомянутых в форуме, который по сути является реализацией "микросервиса" или "прокладки". Мы можем настроить печать через виртуальный принтер cups-pdf. Логика следующая:
cups-pdf: Если он еще не установлен, устанавливаем пакет cups-pdf. Он создает виртуальный принтер, который вместо физической печати генерирует PDF-файлы.CUPS-PDF Printer. Это позволит 1С корректно сформировать PDF-файл с нужными данными и размерами (если они были правильно заданы в макете 1С)./var/spool/cups-pdf/ANONYMOUS/), мы можем использовать специальный скрипт. Этот скрипт будет отслеживать появление новых PDF-файлов в этой директории, обрабатывать их (при необходимости, например, преобразовывать в формат ZPL для термопринтеров) и отправлять на физический принтер этикеток. Например, для отправки ZPL можно использовать команду lpr -P <имя_принтера> -o raw <файл.zpl> или cat <файл.zpl> > /dev/usb/lp0. Для PDF-файлов можно использовать lp -d <имя_принтера> <файл.pdf>.Такой подход помогает обойти проблемы прямого взаимодействия 1С с драйверами принтера в проблемных версиях платформы, перекладывая задачу на более гибкие и управляемые системные инструменты Linux.
Помимо системных настроек, мы должны также уделить внимание параметрам печати непосредственно в конфигурации 1С.
Параметры страницы в макетах этикеток:
При настройке шаблонов этикеток в 1С:Предприятии, нам крайне важно убедиться, что размер этикетки, заданный в параметрах страницы 1С, полностью и точно соответствует настройкам, установленным для принтера в операционной системе. Часто 1С может "забывать" эти настройки, требуя их повторного указания при каждой новой печати, что приводит к дискомфорту пользователей. Поэтому мы рекомендуем:
Особенности выбора типа печати:
При печати этикеток из табличных документов в 1С, мы можем столкнуться с двумя опциями, которые ведут себя по-разному:
Поэтому нам необходимо экспериментировать с этими настройками в связке с системными параметрами принтера, чтобы найти работающую комбинацию.
Если вышеуказанные шаги не приносят желаемого результата, или если мы ищем более надежное и универсальное решение, рассмотрим дополнительные подходы.
Использование промежуточного ПО (Микросервис/Прокладка):
Как мы уже упоминали, это одно из наиболее эффективных решений. Мы можем разработать или использовать готовый "микросервис" (или "прокладку"), который будет принимать данные для печати от 1С. Этот сервис может:
После получения данных микросервис берет на себя задачу по их преобразованию в нужный формат (например, ZPL для термопринтеров TSC) и отправке непосредственно на принтер. Этот подход позволяет полностью изолировать проблемы взаимодействия 1С с принтерной подсистемой Linux и обеспечить надежную печать. На рынке существуют готовые решения для серверной печати, которые могут быть интегрированы.
Обновление драйверов принтера:
Мы должны всегда убеждаться, что драйверы принтера, установленные в вашей ОС Linux, обновлены до последней версии. Производители принтеров постоянно выпускают обновления, которые могут исправлять проблемы совместимости с новыми версиями операционных систем или приложений.
Настройка принтера в 1С:Библиотеке подключаемого оборудования:
Если вашего принтера нет в "Библиотеке подключаемого оборудования" 1С, мы можем настроить его как обычный системный принтер. В этом случае 1С будет использовать системные драйверы, и все настройки, сделанные в CUPS, станут критически важными.
Тестовая печать из другой программы:
Перед тем как пытаться печатать из 1С, мы всегда должны выполнить тестовую печать из другой программы в Linux (например, текстового редактора, браузера или графического редактора). Это позволит нам убедиться в общей работоспособности принтера и его драйверов в системе, исключив проблемы, не связанные с 1С.
Актуальные версии платформы 1С:
Мы выяснили, что проблема с подсистемой печати, появившаяся в 8.3.16, вроде как была исправлена в более поздних версиях платформы, возможно, начиная с 8.3.18. Если у вас есть возможность, мы рекомендуем попробовать обновиться до самой актуальной стабильной версии 1С:Предприятия. Однако, как мы уже отмечали, даже в 8.3.18 могут возникать новые проблемы, например, с растеризацией шрифтов при обновлении дистрибутива Linux, что свидетельствует о продолжающейся эволюции и отладке подсистемы печати под Linux.
В целом, эффективное решение проблемы печати этикеток в 1С под Linux на платформах 8.3.16 и 8.3.17 требует тщательного и системного подхода. Мы должны последовательно проверять и настраивать каждый уровень: от базовых системных библиотек и драйверов в Linux, через настройки CUPS, до параметров печати в самой 1С:Предприятии. В некоторых случаях, наиболее надежным решением может оказаться применение дополнительного программного слоя, такого как микросервис, для управления процессом печати.