Проблема взаимодействия платформы 1С:Предприятие с печатающей техникой Kyocera (особенно популярной моделью m2540dn) является классической системной сложностью. Часто возникает ситуация: в настройках принтера в Windows дуплекс включен, из сторонних программ (например, Microsoft Excel или Word) печать идет корректно с двух сторон, но 1С упорно выдает документ на отдельных листах. Рассмотрим детально, почему это происходит и как настроить систему для корректной работы.
Проблема чаще всего кроется в том, как 1С формирует задание на печать. В отличие от многих офисных приложений, 1С передает настройки печати через собственный механизм взаимодействия с драйвером. Если драйвер принтера (особенно универсальный KX Driver) ожидает команды в одном формате, а 1С посылает их в другом или игнорирует стандартные флаги Windows, происходит сброс настроек к значениям по умолчанию. Проанализируем ситуацию по шагам и найдем решение.
Первое, что мы должны проверить, — это дублирование настроек. На практике доказано, что для принтеров Kyocera недостаточно просто выставить параметры в свойствах принтера через панель управления. Проанализируем, где еще нужно внести изменения:
Такой подход заставляет 1С явно передать команду DUPLEX в потоке данных задания.
Выясним причину, связанную с программным обеспечением самого принтера. Универсальный драйвер Kyocera KX Driver имеет сложную структуру и массу графических надстроек, которые могут конфликтовать с командами платформы 1С. Рассмотрим альтернативные варианты:
Если мы являемся разработчиками и хотим, чтобы у пользователя всё работало «из коробки», нам следует программно управлять свойствами объекта ТабличныйДокумент. Посмотрим на пример кода, который принудительно включает двухстороннюю печать перед выводом формы на экран или принтер:
// Создаем объект табличный документ
ТабДок = Новый ТабличныйДокумент;
// ... заполнение документа данными ...
// Устанавливаем двухстороннюю печать программно
// Возможные значения: ТипДвусторонняяПечать.Нет,
// ТипДвусторонняяПечать.ПереворотВлево, ТипДвусторонняяПечать.ПереворотВверх
ТабДок.ДвусторонняяПечать = ТипДвусторонняяПечать.ПереворотВлево;
// Очищаем старые настройки, которые могли сохраниться у пользователя
ТабДок.ОчиститьНастройкиПечати();
// Выводим на печать
ТабДок.Напечатать(РежимИспользованияДиалогаПечати.Использовать);
Использование метода ОчиститьНастройкиПечати() критически важно, так как 1С кэширует настройки для каждой печатной формы в разрезе пользователей. Если однажды форма была распечатана без дуплекса, система может игнорировать новые настройки драйвера, используя старый сохраненный профиль.
Иногда программная часть 1С и драйвер настроены верно, но сам драйвер «не верит», что в принтере физически установлен модуль дуплекса. Разберем, как это проверить:
Для продвинутых случаев, когда стандартные методы бессильны, можно прибегнуть к «секретному оружию» Kyocera — языку PRESCRIBE. Это низкоуровневые команды, которые принтер понимает напрямую, игнорируя интерпретацию драйвера. Мы можем внедрить такую команду прямо в макет 1С.
Рассмотрим, как это работает: принтер ищет в потоке текста специфические маркеры, например !R!. Если добавить в начало документа текстовую строку с командой включения дуплекса, принтер переключит режим аппаратно.
Пример команды для включения двухсторонней печати с переворотом по длинному краю:
!R! UNIT C; SCP; ELP 1; EXIT;
Эту строку можно поместить в маленькую ячейку в самом верху макета 1С, установив цвет шрифта белым (чтобы ее не было видно на бумаге), но используя специальный шрифт принтера или просто передавая ее как текст. Однако этот метод требует осторожности и понимания документации Kyocera Prescribe.
Проанализируем еще одну тонкую ситуацию: 1С может отправлять многостраничный отчет не как один многостраничный файл, а как совокупность одиночных заданий. В этом случае принтер получает 10 заданий по 1 странице. Физически он не может напечатать их с двух сторон, так как каждое задание для него — это новый документ.
Чтобы избежать этого, убедимся, что в коде не используется цикл, внутри которого вызывается метод Напечатать() для каждой страницы отдельно. Весь контент должен быть скомпонован в один объект ТабличныйДокумент, и печать должна инициироваться один раз.
Мы рассмотрели комплекс мер по исправлению работы дуплекса. В большинстве случаев помогает смена драйвера на KPDL и явное указание свойства «Двусторонняя печать» в параметрах страницы внутри 1С. Если это не помогает, следует очистить кэш настроек печати пользователя и проверить конфигурацию оборудования в свойствах принтера Windows.