Почему не работает двусторонняя печать в 1С и как это исправить?

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

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

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

Выясняем причину: разница в механизмах печати между старыми и новыми версиями 1С

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

В старых версиях платформы (например, в 1С 7.7 и ранних релизах 8.2) механизмов прямого управления двусторонней печатью на уровне встроенного языка практически не существовало. Платформа формировала печатную форму в виде табличного документа и отправляла ее на печать как стандартный графический объект Windows. Всеми параметрами разметки, включая дуплекс (двустороннюю печать) и разбор по копиям (колларирование), управлял непосредственно драйвер принтера. Пользователю достаточно было один раз настроить свойства принтера в операционной системе, и 1С послушно следовала этим параметрам.

Начиная с версии платформы 8.3, разработчики 1С кардинально изменили этот механизм, внедрив собственное управление двусторонней печатью непосредственно на уровне объекта ТабличныйДокумент. В платформу было добавлено специализированное свойство ДвусторонняяПечать и соответствующее системное перечисление ТипДвустороннейПечати. Это перечисление включает в себя несколько значений:

Главная проблема кроется в значении ИспользоватьНастройкиПринтера. Начиная с релиза платформы 8.3.9, интеграция этого механизма с драйверами многих производителей принтеров (в особенности HP, Kyocera, Canon и Brother) работает крайне нестабильно. Платформа 1С не может корректно считать структуру настроек (DevMode) из драйвера принтера или передает их обратно в искаженном виде. В результате принтер сбрасывает настройки дуплекса по умолчанию и печатает документ в одностороннем режиме.

Известные баги платформы 1С, связанные с двусторонней печатью

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

  1. Баг пакетной печати (ошибка №10167935): Если пользователь отправляет на печать пакет документов (например, комплект закрывающих документов для нескольких контрагентов), и один из документов содержит нечетное количество страниц, то первая страница следующего документа может распечататься на обратной стороне последнего листа предыдущего документа. Платформа некорректно разделяет задания печати в рамках одного сеанса отправки.
  2. Конфликт разрядности (32-bit vs 64-bit): Проблемы со считыванием параметров принтера гораздо чаще проявляются при использовании 64-разрядного клиента «1С:Предприятие». Из-за разницы в разрядности процесса платформы и библиотек драйвера принтера (особенно если используются устаревшие 32-битные драйверы на сервере терминалов) вызов функций настройки дуплекса завершается ошибкой, и 1С сбрасывает печать в односторонний режим.
  3. Нарушение порядка страниц при принудительном дуплексе: На некоторых моделях принтеров Hewlett-Packard включение свойства ПереворотВлево в 1С приводит к тому, что документ начинает печататься в обратном порядке — со второй страницы на первую, из-за чего нарушается хронология листов в пачке.

Рассмотрим по шагам все возможные методы решения данной проблемы, начиная от самых простых и заканчивая продвинутыми административными и программными способами.

Способ 1: Ручная настройка параметров страницы в режиме «1С:Предприятие»

Если проблема возникает редко или у ограниченного круга пользователей, мы можем решить ее штатными средствами настройки печатных форм. Для этого выполним следующие действия:

  1. Откроем необходимый документ в 1С и сформируем его печатную форму на экране.
  2. В главном меню программы перейдем в раздел Файл, далее выберем пункт Параметры страницы.
  3. В открывшемся диалоговом окне найдем реквизит Двусторонняя печать.
  4. По умолчанию там установлено значение Использовать настройки принтера. Нам необходимо принудительно изменить его на Переворот влево (для стандартных документов книжной ориентации) или Переворот вверх (если документ имеет альбомную ориентацию).
  5. Нажмем кнопку ОК для сохранения настроек и отправим документ на печать.

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

Способ 2: Программная автоматизация настройки дуплекса (для разработчиков)

Если пользователей в компании много, ручная настройка параметров страницы для каждого отчета и документа становится неэффективной. Мы можем автоматизировать этот процесс, написав небольшую доработку в конфигурации или через расширение. Наша задача — принудительно устанавливать тип двусторонней печати на уровне кода перед выводом табличного документа на принтер.

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


// Пример программной настройки двусторонней печати
ТабДок = Новый ТабличныйДокумент;
// ... Здесь происходит заполнение и формирование табличного документа ...

// Проверяем количество страниц перед отправкой на печать
КоличествоСтраниц = ТабДок.КоличествоСтраниц();

Если КоличествоСтраниц > 1 Тогда
    // Принудительно устанавливаем переворот страницы влево, игнорируя сбойные настройки принтера
    ТабДок.ДвусторонняяПечать = ТипДвустороннейПечати.ПереворотВлево;
Иначе
    // Для одностраничных документов отключаем двусторонний режим
    ТабДок.ДвусторонняяПечать = ТипДвустороннейПечати.Нет;
КонецЕсли;

// Выводим документ на печать или показываем пользователю
ТабДок.Показать("Печать документа");

Этот код гарантированно решает проблему, так как команда ТипДвустороннейПечати.ПереворотВлево передается в подсистему печати Windows явным образом, минуя стадию анализа настроек драйвера по умолчанию. Данный код лучше всего внедрить в общие модули печати конфигурации (например, в процедуру управления печатью перед непосредственным выводом на экран или принтер) с помощью механизма расширений конфигурации, чтобы не снимать основную программу с поддержки.

Способ 3: Создание «виртуальных» принтеров в операционной системе Windows

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

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

  1. Откройте панель управления Windows и перейдите в раздел Устройства и принтеры.
  2. Установите принтер повторно (добавьте новое устройство), используя тот же сетевой порт или IP-адрес, на котором работает ваш текущий принтер.
  3. Переименуйте первый принтер в понятное для пользователя имя, например, Kyocera_Односторонняя. Перейдите в его свойства и в настройках печати по умолчанию отключите дуплекс.
  4. Второй принтер назовите Kyocera_ДВУСТОРОННЯЯ. Перейдите в свойства этого принтера, найдите вкладку «Параметры устройства» или «Настройка печати» и принудительно включите двустороннюю печать (дуплекс) в качестве постоянного режима по умолчанию.
  5. Теперь в 1С при отправке документов пользователю достаточно просто выбрать принтер с суффиксом ДВУСТОРОННЯЯ в списке доступных устройств. В этом случае драйвер операционной системы сам принудительно перевернет листы, а 1С не сможет заблокировать это действие своими некорректными запросами настроек.

Способ 4: Смена и правильный выбор драйвера принтера

Опыт эксплуатации печатной техники совместно с платформой 1С 8.3 показывает, что частота проявления багов двусторонней печати напрямую зависит от версии и типа используемого драйвера принтера. Наиболее проблемными брендами в этом отношении являются Kyocera и Hewlett-Packard.

Проанализируем рекомендации по выбору драйверов для стабильной работы дуплекса в 1С:

Способ 5: Сброс кэша и сохраненных настроек печатных форм пользователя

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

Для решения этой проблемы необходимо очистить сохраненные настройки печатных документов пользователя. Сделаем это по шагам:

  1. Запустите информационную базу 1С в режиме «1С:Предприятие» под правами администратора.
  2. Перейдите в раздел меню Администрирование (или НСИ и администрирование).
  3. Выберите пункт Настройки пользователей и прав, затем откройте справочник Пользователи.
  4. Найдите в списке проблемного пользователя, откройте его карточку и перейдите по ссылке Настройки (на верхней панели формы).
  5. Перейдите на вкладку Прочие настройки или воспользуйтесь кнопкой очистки настроек.
  6. Найдите пункт Настройки печатных документов (или «Параметры страниц документов»), выделите его и нажмите кнопку Очистить.

После выполнения этой процедуры при первой последующей отправке документа на печать платформа заново считает актуальные параметры из операционной системы и корректно применит настройки дуплекса.

Подводя итог, отметим, что проблема с двусторонней печатью в 1С 8.3 — это комплексная техническая неполадка, лежащая на стыке работы платформы, операционной системы и драйверов оборудования. Сочетание ручной корректировки параметров страницы в программе, перехода на совместимые драйверы (KPDL/PCL6) и, при необходимости, написание несложного программного кода в расширении позволяет навсегда избавить пользователей от рутинных ручных настроек при работе с многостраничными печатными формами.

← На главную