Разработка печатных форм в 1С часто сталкивается с задачей обеспечения единого вида документа для всех пользователей. Одной из наиболее частых просьб является автоматическая установка масштаба По ширине страницы. Разберем, почему эта задача сложнее, чем кажется на первый взгляд, и как правильно подойти к её решению.
Первое, что необходимо уяснить: ТабличныйДокумент в памяти (на сервере) и ТабличныйДокумент, который отображается в форме для пользователя — это два разных объекта. Когда вы программно задаете параметры страницы, вы работаете с первым объектом. Однако при выводе его в форму 1С применяет механизм сохраненных настроек.
Если вы принудительно устанавливаете масштаб, но он «слетает», вероятнее всего, срабатывает механизм БСП (Библиотеки стандартных подсистем) или стандартный механизм платформы, который восстанавливает настройки, сохраненные пользователем для данного отчета или печатной формы в регистре сведений Сохраненные настройки.
ТабличногоДокумента происходит на сервере, а показ — на клиенте, важно правильно передать параметры. Часто разработчики забывают, что «живая» форма существует только на клиенте.АвтоМасштаб напрямую зависит от того, какой принтер выбран у пользователя по умолчанию. Если принтер недоступен (например, в терминальной сессии), система не может корректно рассчитать ширину листа и сбрасывает настройки в состояние «по умолчанию» (обычно 100%).Рассмотрим пошагово, как обеспечить корректное отображение формы. Главная рекомендация — избегайте жесткой фиксации, которая может навредить пользователю при печати на специфических устройствах.
Для того чтобы документ автоматически подстраивался под ширину страницы, необходимо манипулировать свойствами АвтоМасштаб и ОриентацияСтраницы непосредственно перед выводом документа в форму.
// Пример установки параметров для табличного документа
ТабДок = Новый ТабличныйДокумент;
// ... заполнение табличного документа ...
ТабДок.АвтоМасштаб = Истина;
ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Портрет; // Или Ландшафт
Если вы используете типовую подсистему «Печать», помните, что формирование печатных форм происходит через структуру параметров. В таких случаях нужно передавать параметры печати в метод СформироватьПечатныеФормы. БСП имеет свои алгоритмы сохранения пользовательских настроек, поэтому попытка «сломать» их через прямой вызов свойств документа может не дать ожидаемого результата, так как настройки будут применены позже, уже при открытии формы.
Проанализировав ситуацию, можно сделать вывод, что навязывание пользователю принудительного масштабирования — не лучший путь с точки зрения удобства интерфейса. Рассмотрим альтернативные стратегии:
АвтоМасштаб = Истина как значение по умолчанию при первом формировании, но не блокируйте возможность пользователя изменить его вручную.Сохраненными настройками в модуле формы.ТабличногоДокумента на клиентской стороне, так как именно там происходит отрисовка формы.Помните, что принудительное масштабирование «по ширине» может сделать шрифт настолько мелким, что документ станет нечитаемым. Всегда учитывайте формат бумаги и целевое устройство вывода (принтер, PDF или ЭДО), чтобы не столкнуться с жалобами пользователей на некорректный вид печатных форм.