Почему при печати счета-фактуры в 1С выбирается принтер не по умолчанию и как это исправить?

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

В процессе работы с программами 1С:Предприятие, особенно в редакциях на обычных формах (таких как «Управление торговлей 10.3»), пользователи часто сталкиваются с досадной проблемой: при печати конкретного документа, например, Счета-фактуры, система упорно предлагает отправить задание на принтер, который не является основным в системе. При этом печать других документов (ТОРГ-12, накладные, отчеты) проходит корректно на принтер по умолчанию.

Ситуация осложняется, если работа ведется в терминальной среде через RemoteApp или RDP. В этой статье мы подробно разберем, почему 1С «запоминает» старые принтеры, как работает механизм привязки настроек печати к метаданным и какими способами можно вернуть управление принтером операционной системе.

Разберем причину: как 1С запоминает настройки печати

Давайте проанализируем ситуацию с технической стороны. Платформа 1С:Предприятие обладает встроенным механизмом сохранения индивидуальных настроек пользователя. К ним относятся не только отборы в списках или цвета форм, но и параметры печати для каждого конкретного объекта метаданных. Когда вы один раз успешно распечатали «Счет-фактуру» на определенный принтер, 1С создает запись в своем внутреннем хранилище (в базе данных), связывая идентификатор формы счета-фактуры с именем выбранного печатающего устройства.

Особенно остро это проявляется при обновлении форм. Рассмотрим пример: до 2012 года действовал один бланк счета-фактуры, а после — другой. 1С воспринимает их как разные объекты. Если для нового бланка настройки были случайно сохранены с некорректным принтером, система будет предлагать его каждый раз, игнорируя системные настройки Windows.

В среде RDP проблема усугубляется «перенаправленными принтерами» (Redirected). Имя такого принтера часто содержит номер сессии, например, HP LaserJet (перенаправлено 12). Когда пользователь заходит в систему на следующий день, номер сессии меняется на 15, но 1С продолжает искать «сессию 12». Не найдя ее, программа выбирает первый попавшийся принтер из списка (часто это PDF-принтер или сетевой аппарат соседа).

Способ 1. Самый простой: ручное пересохранение через параметры страницы

Этот метод помогает в 90% случаев и не требует прав администратора или изменения кода. Мы принудительно заставим 1С перезаписать настройки для конкретного документа. Выполним следующие шаги:

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

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

Способ 2. Очистка пользовательских настроек в базе

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

Проанализируем шаги для администратора системы:

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

После этого при следующей печати 1С обнаружит отсутствие сохраненных предпочтений и обратится к системному принтеру по умолчанию.

Способ 3. Решение для программистов (изменение кода)

Если вы хотите раз и навсегда запретить 1С «самодеятельность» в выборе принтеров для конкретного документа, можно внести небольшую правку в модуль печати. Наша задача — принудительно очищать свойство ИмяПринтера у табличного документа перед его выводом на экран или на печать.

Рассмотрим пример кода в процедуре печати:


// В модуле объекта или в модуле обработки печати
ТабДокумент = Новый ТабличныйДокумент;
// ... (здесь идет формирование макета) ...

// Принудительно сбрасываем имя принтера, чтобы использовался системный по умолчанию
ТабДокумент.ИмяПринтера = ""; 

// Теперь выводим на экран
ТабДокумент.Показать("Печать счета-фактуры");

Установка пустой строки в свойство ИмяПринтера заставляет платформу игнорировать любые ранее сохраненные настройки для этой формы и всегда использовать текущий принтер по умолчанию из настроек Windows.

Особенности работы в терминальной среде (RDP)

Если вы системный администратор и боретесь с принтерами на сервере 2008 R2 или выше, обратите внимание на следующие настройки:

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

← На главную