В процессе разработки печатных форм, особенно при работе с нестандартными форматами, такими как наклейки или этикетки, часто возникает ситуация, когда настройки печати «привязываются» к конкретному рабочему месту. Рассмотрим, почему параметры могут некорректно применяться у разных пользователей и как реализовать надежное сохранение настроек.
Одной из наиболее частых причин сбоев является работа механизма ХранилищеСистемныхНастроек. Платформа 1С сохраняет параметры печати (ориентацию, поля, масштаб) привязывая их к ИмяПараметровПечати (или КлючПараметровПечати) и к конкретному имени принтера в операционной системе. Если на разных компьютерах принтер установлен с разным сетевым путем (например, \\server\printer против \\server.local\printer), 1С воспринимает их как разные устройства и пытается применять неактуальные настройки, что приводит к «съезжанию» макета или игнорированию заданных полей.
Чтобы обеспечить стабильную печать этикеток на всех рабочих местах, разберем порядок действий при формировании ТабличныйДокумент.
КлючПараметровПечати. Это позволяет 1С автоматически подгружать сохраненные настройки, если они были ранее установлены пользователем.ИмяПринтера, полностью совпадает с тем, как принтер отображается в ОС у этого пользователя.Рассмотрим пример функции, которая корректно настраивает ТабличныйДокумент перед выводом на печать. Обратите внимание на установку свойств документа для работы с этикетками:
Функция ПечатьЭтикетка()
ТабДокумент = Новый ТабличныйДокумент;
ТабДокумент.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_Этикетка";
// Настройки ориентации и масштаба
ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
ТабДокумент.АвтоМасштаб = Ложь;
ТабДокумент.МасштабПечати = 100;
// Геометрия страницы (для этикетки)
ТабДокумент.ШиринаСтраницы = 82;
ТабДокумент.ВысотаСтраницы = 60;
ТабДокумент.ПолеСверху = 3;
ТабДокумент.ПолеСнизу = 0;
ТабДокумент.ПолеСлева = 2;
ТабДокумент.ПолеСправа = 0;
// Отключение колонтитулов и дополнительных настроек
ТабДокумент.РазмерКолонтитулаСверху = 0;
ТабДокумент.РазмерКолонтитулаСнизу = 0;
ТабДокумент.ДвусторонняяПечать = ТипДвустороннейПечати.Нет;
ТабДокумент.ЧерноБелаяПечать = Ложь;
ТабДокумент.ЭкземпляровНаСтранице = 1;
// Заполнение данными...
Макет = ПолучитьМакет("Этикетка");
ОбластьШапка = Макет.ПолучитьОбласть("ШапкаДокумента");
// ... логика заполнения параметров
ТабДокумент.Вывести(ОбластьШапка);
Возврат ТабДокумент;
КонецФункции
Если параметры печати «застряли» в ошибочном состоянии для конкретного пользователя, их можно сбросить программно. Это часто помогает, если у пользователя ранее были заданы неверные параметры, которые теперь препятствуют корректному выводу:
Для удаления сохраненных настроек используйте метод ХранилищеСистемныхНастроек.Удалить(). Необходимо передать объект, для которого были сохранены настройки, и ключ, который вы использовали в КлючПараметровПечати.
Если вы столкнулись с тем, что код работает у вас, но не работает у коллеги, проанализируйте следующие моменты:
Custom для размера страницы.ИмяПринтера является строкой, которая точно соответствует системному наименованию принтера в Система.Принтеры.Применяя данные подходы, вы сможете добиться единообразия печати на всех компьютерах в вашей сети и избежать проблем, связанных с индивидуальными настройками принтеров у пользователей.