Как программно сохранить параметры печати табличного документа в 1С?

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

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

Причины сброса настроек печати

Чаще всего проблема кроется в двух аспектах:

  1. Различия в именах принтеров: Платформа 1С использует свойство ИмяПринтера для поиска конкретного устройства в ОС. Если на одном ПК принтер именуется как Принтер1, а на другом — как host\Принтер1, настройки могут сбрасываться на значения по умолчанию, так как 1С не находит принтер по указанному пути.
  2. Системное хранилище настроек: 1С сохраняет пользовательские правки параметров печати в системных настройках (_SystemSettings). Когда вы программно задаете параметры, а затем открываете форму печати, эти сохраненные настройки могут перекрывать ваши программные установки.
  3. Копирование свойств в общих формах: При использовании общих форм (например, типовой ПечатьДокументов) происходит копирование области табличного документа в элемент управления. Если в коде этой формы не предусмотрено явное копирование свойств принтера и полей, настройки теряются.

Методы решения проблемы

Для обеспечения корректной печати используйте следующие рекомендации:

1. Правильная работа с Именем принтера

Всегда проверяйте актуальное имя принтера в операционной системе на каждом рабочем месте. Если вы принудительно задаете ИмяПринтера в коде, убедитесь, что оно идентично строке, получаемой через стандартный диалог выбора принтера в Windows.


ТабДокумент.ИмяПринтера = "ИмяВашегоПринтераКакВСистеме";
ТабДокумент.АвтоМасштаб = Истина;

2. Работа с ключом параметров печати

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


// Принудительная установка ключа
ТабДокумент.КлючПараметровПечати = "МояУникальнаяНастройкаПечати";

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

3. Передача настроек в общие формы

Если печать идет через общую форму, стандартное присвоение Форма.ПечатныйДокумент = ТабДокумент не всегда переносит все свойства (например, поля или имя принтера). Вам необходимо либо модифицировать код общей формы, добавив туда явную передачу свойств, либо передавать структуру параметров.

Проанализируем пример передачи параметров через универсальные механизмы:


ПараметрыПечДокумента = Новый Структура("АвтоМасштаб,ПолеСверху,ПолеСлева,ПолеСнизу,ПолеСправа,ИмяПараметровПечати", 
    Истина, 3, 0, 0, 0, "ПАРАМЕТРЫ_ПЕЧАТИ_Этикетка");

УниверсальныеМеханизмы.НапечататьДокумент(ТабДокумент, КоличествоЭкземпляров, НаПринтер, Заголовок, НепосредственнаяПечать);

4. Использование метода восстановления настроек

В случаях, когда настройки пользователя критичны, но нужно принудительно задать свои, используйте метод сохранения состояния перед формированием и его восстановление после:


&НаКлиенте
Процедура ПечатьСВосстановлениемНастроек()
    // Сохраняем текущий ключ настроек
    Настройки = ТаблицаОтчета.КлючПараметровПечати;
    
    // Формируем документ
    СформироватьТаблицуНаСервере();
    
    // Восстанавливаем сохраненные параметры
    ТаблицаОтчета.КлючПараметровПечати = Настройки;
КонецПроцедуры

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

Рассмотрев эти подходы, вы сможете добиться стабильной работы печатных форм на любом оборудовании в вашей сети.

← На главную