Как изменить масштаб просмотра поля табличного документа программно в 1С

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

Разбор основной проблемы и типичных ошибок

Рассмотрим ситуацию: разработчик пытается программно имитировать действия пользователя или напрямую установить масштаб, но сталкивается с тем, что код либо не отрабатывает, либо вызывает критическую ошибку Переменная не определена (РежимМасштабированияПросмотра). Проанализируем, почему стандартные подходы могут не работать.

Использование Wscript.Shell для имитации нажатия клавиш (SendKeys) — это путь, который крайне не рекомендуется в современной разработке на 1С. Во-первых, он зависит от фокуса окна, во-вторых, как мы видим из обсуждения, пункты меню могут быть неактивны. В-третьих, это решение абсолютно неработоспособно на мобильных клиентах или планшетах. Нам необходимо использовать штатные свойства встроенного языка 1С.

Проверка режима совместимости конфигурации

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

Свойство РежимМасштабированияПросмотра появилось в платформе версии 8.3. Чтобы оно стало доступным для использования в программном коде, режим совместимости конфигурации должен быть установлен в значение «Не использовать» или, как минимум, «8.3.3» и выше. Если ваша конфигурация работает в режиме совместимости «8.2.16» (как в рассматриваемом случае), платформа намеренно скрывает новые свойства 8.3, чтобы обеспечить обратную совместимость. В таком случае программное масштабирование именно через это свойство будет недоступно.

Различие между элементом формы и реквизитом

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

Масштаб отображения на экране — это свойство Элемента формы. Поэтому обращаться нужно не к реквизиту, в котором хранятся данные таблицы, а к визуальному элементу.

Правильная иерархия обращения:

  1. Реквизит (тип ТабличныйДокумент) — отвечает за содержимое (ячейки, текст, формулы) и параметры печати (МасштабПечати).
  2. Элемент формы (тип ПолеТабличногоДокумента) — отвечает за то, как пользователь видит этот документ на экране (скроллбары, сетка, масштаб просмотра).

Программная установка масштаба через системное перечисление

Посмотрим на пример кода, который решает задачу. Программно мы не можем задать произвольный процент (например, 87%), но мы можем переключаться между предустановленными режимами, которые предоставляет платформа. Этого обычно достаточно для большинства бизнес-задач.

Рассмотрим использование системного перечисления РежимМасштабированияПросмотра. Доступны следующие варианты:

Пример кода для установки мелкого масштаба:


&НаКлиенте
Процедура УстановитьМелкийМасштаб()
    // Обращаемся именно к элементу формы (Элементы.ИмяЭлемента)
    Элементы.РезультатТаб.РежимМасштабированияПросмотра = РежимМасштабированияПросмотра.Мелкий;
КонецПроцедуры

Если вы хотите гарантировать работу кода даже в сложных условиях контекста исполнения, можно использовать функцию ПредопределенноеЗначение. Это помогает избежать ошибок при обращении к системным перечислениям на разных типах клиентов.


&НаКлиенте
Процедура УстановитьМасштабНадежно()
    ЗначениеМасштаба = ПредопределенноеЗначение("РежимМасштабированияПросмотра.Обычный");
    Элементы.Табличка.РежимМасштабированияПросмотра = ЗначениеМасштаба;
КонецПроцедуры

Особенности масштабирования на мобильных устройствах

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

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

Итоги и рекомендации

Подводя итог, для реализации программного масштабирования табличного документа выполним следующие шаги:

  1. Убедимся, что платформа выше 8.3.3 и Режим совместимости конфигурации позволяет использовать новые свойства.
  2. Определим имя Элемента формы, который отображает нашу таблицу.
  3. В коде на стороне клиента присвоим свойству РежимМасштабированияПросмотра одно из значений системного перечисления.
  4. Если требуется более тонкая настройка (произвольный процент), помните, что на данный момент платформа 1С не предоставляет прямого свойства ПроцентМасштаба для управления экранным отображением через встроенный язык, и такие манипуляции остаются доступными только пользователю через интерактивные действия (Ctrl + колесо).

Соблюдение этих правил позволит вам избежать ошибок компиляции и обеспечить корректную работу интерфейса в ваших решениях на базе 1С.

← На главную