Часто возникает ситуация, когда при формировании конкретной печатной формы (например, личной карточки сотрудника Т-2 в 1С:Зарплата и Управление Персоналом) документ автоматически отправляется совершенно не на тот принтер, который нужен пользователю. При этом в параметрах страницы может отображаться правильное устройство. Рассмотрим подробнее, почему так происходит, и разберем по шагам все доступные способы решения этой проблемы.
Проанализируем основные причины такого поведения системы. Настройки принтеров в 1С работают по специфическому алгоритму:
КлючПараметровПечати или ИмяПараметровПечати. Если пользователь один раз ошибочно отправил документ не на то устройство, система зафиксирует этот выбор в своей базе настроек и будет использовать его по умолчанию для этой формы.Полная очистка настроек пользователя — мера радикальная, так как она удаляет все привычные виды списков и ширину колонок. Разберем более деликатный метод — удаление только зависших параметров печати.
Посмотрим на простой пример, как заставить 1С «забыть» старое устройство без привлечения системного администратора. Выясним последовательность действий:
За счет изменения параметра страницы 1С посчитает, что конфигурация вывода обновилась, и принудительно перезапишет КлючПараметровПечати в базе данных, зафиксировав заодно и правильный принтер.
Если проблема носит массовый характер и предыдущие варианты не помогли, применим более жесткий подход. В некоторых случаях путаница возникает на уровне реестра операционной системы.
Сначала уберем галочку «Использовать принтер по умолчанию» в настройках печати самой 1С. Выберем верный принтер, сохраним параметры и перезапустим программу. Если это не сработает, системному администратору следует удалить конфликтующие драйверы, очистить системный кэш и заново установить только нужное устройство. После чистой установки в 1С будет отображаться только один корректный принтер, что полностью исключит вероятность ошибки.
Если вы являетесь разработчиком и создаете внешнюю печатную форму, вы можете жестко задать устройство вывода в коде. Посмотрим на пример реализации.
Для программного управления выводом используется свойство ИмяПринтера объекта ТабличныйДокумент:
Процедура ПечатьДокумента()
ТабличныйДок = Новый ТабличныйДокумент;
// ... логика заполнения макета ...
// Принудительно указываем имя принтера в системе
ТабличныйДок.ИмяПринтера = "HP LaserJet M402";
// Выводим на печать без дополнительных диалогов
ТабличныйДок.Напечатать();
КонецПроцедуры
Используя этот метод, 1С будет игнорировать сохраненные ранее пользовательские предпочтения и отправит задание строго на указанное в коде устройство. Однако данный способ стоит применять осторожно, так как при замене оборудования в офисе придется вносить изменения в код обработки.