В процессе работы с программами 1С:Предприятие, особенно в редакциях на обычных формах (таких как «Управление торговлей 10.3»), пользователи часто сталкиваются с досадной проблемой: при печати конкретного документа, например, Счета-фактуры, система упорно предлагает отправить задание на принтер, который не является основным в системе. При этом печать других документов (ТОРГ-12, накладные, отчеты) проходит корректно на принтер по умолчанию.
Ситуация осложняется, если работа ведется в терминальной среде через RemoteApp или RDP. В этой статье мы подробно разберем, почему 1С «запоминает» старые принтеры, как работает механизм привязки настроек печати к метаданным и какими способами можно вернуть управление принтером операционной системе.
Давайте проанализируем ситуацию с технической стороны. Платформа 1С:Предприятие обладает встроенным механизмом сохранения индивидуальных настроек пользователя. К ним относятся не только отборы в списках или цвета форм, но и параметры печати для каждого конкретного объекта метаданных. Когда вы один раз успешно распечатали «Счет-фактуру» на определенный принтер, 1С создает запись в своем внутреннем хранилище (в базе данных), связывая идентификатор формы счета-фактуры с именем выбранного печатающего устройства.
Особенно остро это проявляется при обновлении форм. Рассмотрим пример: до 2012 года действовал один бланк счета-фактуры, а после — другой. 1С воспринимает их как разные объекты. Если для нового бланка настройки были случайно сохранены с некорректным принтером, система будет предлагать его каждый раз, игнорируя системные настройки Windows.
В среде RDP проблема усугубляется «перенаправленными принтерами» (Redirected). Имя такого принтера часто содержит номер сессии, например, HP LaserJet (перенаправлено 12). Когда пользователь заходит в систему на следующий день, номер сессии меняется на 15, но 1С продолжает искать «сессию 12». Не найдя ее, программа выбирает первый попавшийся принтер из списка (часто это PDF-принтер или сетевой аппарат соседа).
Этот метод помогает в 90% случаев и не требует прав администратора или изменения кода. Мы принудительно заставим 1С перезаписать настройки для конкретного документа. Выполним следующие шаги:
После выполнения этих действий 1С перезапишет привязку принтера в базе данных для текущего пользователя и данного типа документа. При следующем открытии счета-фактуры принтер должен подставиться правильно.
Если первый способ не помог или проблема приобрела массовый характер, нам необходимо очистить кэш настроек внутри информационной базы. Обратите внимание, что обычная очистка папок в AppData на компьютере пользователя здесь не поможет, так как данные хранятся в самой БД.
Проанализируем шаги для администратора системы:
Печать или ПараметрыСтраницы.После этого при следующей печати 1С обнаружит отсутствие сохраненных предпочтений и обратится к системному принтеру по умолчанию.
Если вы хотите раз и навсегда запретить 1С «самодеятельность» в выборе принтеров для конкретного документа, можно внести небольшую правку в модуль печати. Наша задача — принудительно очищать свойство ИмяПринтера у табличного документа перед его выводом на экран или на печать.
Рассмотрим пример кода в процедуре печати:
// В модуле объекта или в модуле обработки печати
ТабДокумент = Новый ТабличныйДокумент;
// ... (здесь идет формирование макета) ...
// Принудительно сбрасываем имя принтера, чтобы использовался системный по умолчанию
ТабДокумент.ИмяПринтера = "";
// Теперь выводим на экран
ТабДокумент.Показать("Печать счета-фактуры");
Установка пустой строки в свойство ИмяПринтера заставляет платформу игнорировать любые ранее сохраненные настройки для этой формы и всегда использовать текущий принтер по умолчанию из настроек Windows.
Если вы системный администратор и боретесь с принтерами на сервере 2008 R2 или выше, обратите внимание на следующие настройки:
HKEY_CURRENT_USER\Software\1C\1Cv8\2.0\Common\PrintSettings. Будьте осторожны, это сбросит настройки печати для всех документов в 1С.Подводя итог, можно сказать, что проблема «неправильного принтера» — это не ошибка программы, а следствие работы механизма персонализации 1С. Выбирая наиболее подходящий метод из описанных выше, вы сможете быстро вернуть комфорт в работу пользователей.