При работе с управляемыми формами в 1С:Предприятие часто возникает задача управления визуальным представлением данных. Одной из таких задач является программное изменение масштаба ТабличногоДокумента. Пользователи привыкли изменять масштаб вручную, зажимая клавишу Ctrl и прокручивая колесо мыши, однако реализация этого функционала через код имеет свои нюансы, связанные с версиями платформы и режимами совместимости. Разберем подробно, как это сделать правильно, и какие ошибки могут встретиться на пути.
Рассмотрим ситуацию: разработчик пытается программно имитировать действия пользователя или напрямую установить масштаб, но сталкивается с тем, что код либо не отрабатывает, либо вызывает критическую ошибку Переменная не определена (РежимМасштабированияПросмотра). Проанализируем, почему стандартные подходы могут не работать.
Использование Wscript.Shell для имитации нажатия клавиш (SendKeys) — это путь, который крайне не рекомендуется в современной разработке на 1С. Во-первых, он зависит от фокуса окна, во-вторых, как мы видим из обсуждения, пункты меню могут быть неактивны. В-третьих, это решение абсолютно неработоспособно на мобильных клиентах или планшетах. Нам необходимо использовать штатные свойства встроенного языка 1С.
Выясним причину самой частой ошибки. Если при попытке использовать РежимМасштабированияПросмотра система выдает сообщение о том, что переменная не определена, первым делом проверим Режим совместимости вашей конфигурации.
Свойство РежимМасштабированияПросмотра появилось в платформе версии 8.3. Чтобы оно стало доступным для использования в программном коде, режим совместимости конфигурации должен быть установлен в значение «Не использовать» или, как минимум, «8.3.3» и выше. Если ваша конфигурация работает в режиме совместимости «8.2.16» (как в рассматриваемом случае), платформа намеренно скрывает новые свойства 8.3, чтобы обеспечить обратную совместимость. В таком случае программное масштабирование именно через это свойство будет недоступно.
Проанализируем важный методологический момент. В 1С существует разделение на данные (объект ТабличныйДокумент) и их отображение на форме (элемент формы типа Поле табличного документа).
Масштаб отображения на экране — это свойство Элемента формы. Поэтому обращаться нужно не к реквизиту, в котором хранятся данные таблицы, а к визуальному элементу.
Правильная иерархия обращения:
Реквизит (тип ТабличныйДокумент) — отвечает за содержимое (ячейки, текст, формулы) и параметры печати (МасштабПечати).Элемент формы (тип ПолеТабличногоДокумента) — отвечает за то, как пользователь видит этот документ на экране (скроллбары, сетка, масштаб просмотра).Посмотрим на пример кода, который решает задачу. Программно мы не можем задать произвольный процент (например, 87%), но мы можем переключаться между предустановленными режимами, которые предоставляет платформа. Этого обычно достаточно для большинства бизнес-задач.
Рассмотрим использование системного перечисления РежимМасштабированияПросмотра. Доступны следующие варианты:
Авто — платформа определяет масштаб самостоятельно.Обычный — стандартный масштаб 100%.Крупный — увеличение для лучшей читаемости или сенсорных экранов.Мелкий — уменьшение для охвата большего объема данных.Пример кода для установки мелкого масштаба:
&НаКлиенте
Процедура УстановитьМелкийМасштаб()
// Обращаемся именно к элементу формы (Элементы.ИмяЭлемента)
Элементы.РезультатТаб.РежимМасштабированияПросмотра = РежимМасштабированияПросмотра.Мелкий;
КонецПроцедуры
Если вы хотите гарантировать работу кода даже в сложных условиях контекста исполнения, можно использовать функцию ПредопределенноеЗначение. Это помогает избежать ошибок при обращении к системным перечислениям на разных типах клиентов.
&НаКлиенте
Процедура УстановитьМасштабНадежно()
ЗначениеМасштаба = ПредопределенноеЗначение("РежимМасштабированияПросмотра.Обычный");
Элементы.Табличка.РежимМасштабированияПросмотра = ЗначениеМасштаба;
КонецПроцедуры
Выясним ситуацию с планшетами. В мобильном клиенте 1С поведение табличного документа может отличаться. Свойство РежимМасштабированияПросмотра часто игнорируется, если в настройках самого мобильного устройства или в свойствах формы включено автоматическое масштабирование.
Для мобильных решений рекомендуется комбинировать программную установку режима с настройкой ширины колонок. Если ваша цель — «вместить» таблицу в экран планшета, рассмотрите также свойство Автомасштаб, хотя оно преимущественно влияет на вывод на печать, в некоторых версиях мобильной платформы оно косвенно влияет на первоначальный рендеринг документа.
Подводя итог, для реализации программного масштабирования табличного документа выполним следующие шаги:
РежимМасштабированияПросмотра одно из значений системного перечисления.ПроцентМасштаба для управления экранным отображением через встроенный язык, и такие манипуляции остаются доступными только пользователю через интерактивные действия (Ctrl + колесо).Соблюдение этих правил позволит вам избежать ошибок компиляции и обеспечить корректную работу интерфейса в ваших решениях на базе 1С.