При работе с печатными формами в «1С:Предприятие 8», особенно когда речь идет о специфических задачах вроде печати этикеток на термопринтерах, пользователи часто сталкиваются с досадной проблемой: настроенные вручную параметры страницы (поля, ориентация, масштаб) «слетают» при следующем открытии формы. Платформа по умолчанию возвращает настройки к стандартным значениям, что вынуждает пользователя каждый раз заново выставлять нужные параметры. В этой статье мы подробно разберем, как программно зафиксировать эти настройки, чтобы система запоминала их индивидуально для каждого типа документа.
Основным механизмом, который заставляет 1С сохранять выбор пользователя, является использование специального идентификатора. В объектной модели встроенного языка для этого предназначен объект ТабличныйДокумент и его свойство КлючПараметровПечати. Рассмотрим, как это работает на практике.
Когда мы присваиваем уникальную строку свойству КлючПараметровПечати, платформа начинает отслеживать все изменения, внесенные пользователем в диалоге настройки печати. Эти данные сохраняются в системном хранилище настроек. При следующем формировании табличного документа с таким же ключом 1С автоматически извлечет сохраненные параметры и применит их.
Проанализируем пример кода, который необходимо добавить в процедуру печати:
// Создаем объект табличный документ
ТабДок = Новый ТабличныйДокумент;
// Устанавливаем ключ параметров печати.
// Это должна быть уникальная строка, описывающая вашу печатную форму.
ТабДок.КлючПараметровПечати = "УникальныйКлючДляПечатиЭтикеток_58х40";
// Далее идет заполнение табличного документа данными...
// ...
Важно отметить разницу между КлючПараметровПечати и устаревшим свойством ИмяПараметровПечати. Хотя оба свойства служат одной цели, современные стандарты разработки рекомендуют использовать именно «ключ». Если вы установите ИмяПараметровПечати, платформа автоматически заполнит и ключ, но для чистоты кода в актуальных версиях 8.3 лучше оперировать свойством КлючПараметровПечати.
Выясним, где именно хранятся эти данные. Платформа записывает параметры печати в привязке к конкретному пользователю информационной базы. Это означает, что если один бухгалтер настроил печать счетов на одном принтере, а другой — на другом, их настройки не будут конфликтовать, так как они хранятся в разных профилях. В современных версиях платформы эти данные чаще всего записываются непосредственно в базу данных (системные таблицы настроек), что позволяет настройкам сохраняться даже при смене рабочего компьютера пользователем.
Алгоритм работы платформы при использовании ключа следующий:
КлючПараметровПечати.ПолеСверху, ПолеСлева и т.д.), ориентация, масштаб и выбранный принтер.Работа с этикетками часто сложнее, чем с обычными документами А4. Разберем типичную ситуацию: вы установили КлючПараметровПечати, но принтер все равно пытается печатать этикетку размером 58х40 мм как лист А4. Это происходит из-за приоритетов драйвера принтера.
Для корректной работы этикеток мы рекомендуем выполнить следующие действия:
Иногда требуется, чтобы настройки были «зацементированы» и не зависели от того, что пользователь накрутил в прошлый раз. В этом случае мы можем напрямую манипулировать свойствами объекта ТабличныйДокумент, игнорируя или дополняя механизм ключей. Рассмотрим основные свойства:
ОриентацияСтраницы — принимает значения ОриентацияСтраницы.Портрет или ОриентацияСтраницы.Ландшафт.АвтоМасштаб — если установить в значение Истина, 1С попытается уместить документ по ширине страницы. Это критически важно для корректного вывода чеков и этикеток.ПолеСверху, ПолеСнизу, ПолеСлева, ПолеСправа — задаются в миллиметрах.Пример жесткой настройки параметров страницы в коде:
ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
ТабДок.АвтоМасштаб = Истина;
ТабДок.ПолеСверху = 0;
ТабДок.ПолеСнизу = 0;
ТабДок.ПолеСлева = 0;
ТабДок.ПолеСправа = 0;
// Ключ все равно нужен, чтобы запомнить выбор конкретного принтера
ТабДок.КлючПараметровПечати = "ПечатьЧекаККМ";
Бывают ситуации, когда настройки сохранились с ошибкой (например, был выбран принтер, который удалили из системы), и теперь при попытке печати программа выдает ошибку или «зависает». В таком случае нам нужно очистить кэшированные настройки пользователя. Рассмотрим, как это сделать:
КлючПараметровПечати).Подводя итог, можно сказать, что правильное использование КлючПараметровПечати — это стандарт де-факто для разработки в среде 1С. Это значительно повышает удобство работы пользователей, избавляя их от рутинной настройки принтера при каждой печати документа.