В практике системного администрирования и сопровождения программ 1С часто встречаются ситуации, когда техника ведет себя необъяснимо. Одной из таких проблем является появление широких черных полос или полной «заливки» листа черным цветом при печати конкретных документов. Особенно часто это проявляется на принтерах марки Panasonic (например, серия KX-FLM663) при работе в среде Windows XP с конфигурациями на базе 1С:Предприятие. Ситуация осложняется тем, что проблема может возникать только у одного конкретного пользователя, в то время как другие сотрудники печатают те же формы без нареканий.
Рассмотрим детально, почему возникает этот эффект, проанализируем техническую составляющую взаимодействия 1С с драйверами печати и разберем пошагово методы решения этой проблемы.
Прежде всего, выясним причину на аппаратном уровне. Большинство недорогих МФУ и принтеров Panasonic тех лет являются так называемыми GDI-устройствами (Host-Based). Это означает, что у принтера нет собственного мощного процессора для обработки графики. Формирование изображения страницы (растеризация) происходит на стороне центрального процессора компьютера с помощью ресурсов операционной системы.
Когда 1С отправляет на печать сложный табличный документ (например, «Отчет кассира 52н»), она формирует метафайл. Драйвер принтера должен перевести этот файл в растровое изображение. Если отчет содержит много тонких линий, специфических шрифтов или занимает более одной страницы, драйвер Panasonic может некорректно обработать команды прозрачности. Вместо того чтобы оставить фон прозрачным, драйвер интерпретирует его как сплошной черный цвет. В результате вместо текста мы видим «черный квадрат» на весь лист.
Проанализируем ситуацию: почему под одним пользователем принтер печатает черные полосы, а под другим — нет? Ответ кроется в механизме сохранения настроек 1С. Для каждого пользователя и для каждой печатной формы система запоминает параметры страницы: масштаб, поля, ориентацию и выбранный принтер.
Если пользователь хотя бы однажды изменил масштаб печати (например, установил «По ширине страницы» или выбрал 95% вместо 100%), 1С сохраняет эти параметры в системном хранилище (в базе данных или в файловом кэше профиля). При использовании GDI-принтеров дробный масштаб часто вызывает математические ошибки округления при расчете координат пикселей. Драйвер принтера «сходит с ума» и заливает область печати черным.
Для решения этой проблемы выполним следующие действия:
После этого попробуем распечатать документ снова. В большинстве случаев корректная установка масштаба убирает графические артефакты.
Если ручное изменение параметров страницы не помогло, или настройки «слетают» через некоторое время, нам поможет радикальный сброс настроек пользователя в самой информационной базе. Рассмотрим, как это сделать правильно, чтобы не потерять важные данные о производительности и историю действий пользователя.
Как отмечалось в обсуждении, простое удаление пользователя может привести к потере ссылочной целостности (в документах останутся «битые» ссылки на автора). Поэтому воспользуемся методом переименования:
// Пример логики очистки настроек программным способом (если есть доступ к коду)
Процедура ОчиститьНастройкиПечати(ИмяПользователя)
// Настройки пользователя в 1С 8 хранятся в системном хранилище
ХранилищеОбщихНастроек.Удалить("Печать", "ПараметрыСтраницы_ОтчетКассира52н", ИмяПользователя);
КонецПроцедуры
Если вы не хотите писать код, выполните следующие шаги в режиме Конфигуратора:
Важный нюанс: Чтобы сохранить историю в отчетах, можно просто воспользоваться обработкой «Удаление настроек пользователя», которая входит в состав типовых конфигураций (например, в БГУ 1.0 это часть «Сервиса»). Нужно выбрать проблемного пользователя и очистить только настройки «Печать» и «Внешний вид». Это безопаснее, чем пересоздание учетной записи.
Выясним, какие настройки самого драйвера в Windows XP могут влиять на появление черных полос. Часто проблема решается переключением режима обработки шрифтов.
Разберем алгоритм настройки драйвера Panasonic:
Поскольку 1С при печати многостраничных отчетов генерирует объемные временные файлы, нехватка места в папке TEMP пользователя Windows XP может приводить к обрыву формирования изображения. В результате первая страница печатается нормально, а вторая — черным полотном.
Проанализируем состояние системы:
C:\Documents and Settings\Имя_Пользователя\Local Settings\Temp.C:\WINDOWS\system32\spool\PRINTERS (предварительно остановив службу «Диспетчер печати»).Если ни один из вышеперечисленных способов не помогает, и принтер упорно выдает черные полосы, рассмотрим «хитрость», проверенную годами. Многие модели Panasonic частично совместимы со стандартным языком управления печатью PCL.
Попробуйте установить в систему дополнительный принтер, используя встроенный в Windows XP драйвер HP LaserJet 1100 или HP LaserJet 6L, но при установке укажите порт, к которому подключен ваш Panasonic (например, USB001 или DOT4). Эти драйверы формируют поток данных гораздо проще и надежнее, чем родной софт Panasonic. В 90% случаев это полностью снимает проблему «черных заливок» при печати из 1С.
Мы выяснили, что черные полосы при печати из 1С — это не аппаратная поломка принтера, а программный конфликт. Основная причина кроется в несоответствии масштабирования в настройках пользователя 1С и особенностях обработки графики GDI-драйвером Panasonic. Совместное использование сброса настроек печати в программе и оптимизация параметров драйвера (отключение дополнительных функций печати) гарантированно решают эту задачу без применения «чеснока и святой воды».