При разработке интерфейсов в 1С:Предприятие иногда возникает необходимость жестко зафиксировать отображение данных в поле табличного документа. Например, когда форма автоматически масштабируется под размер экрана, и требуется защитить интерфейс от случайного сдвига или изменения масштаба пользователем (через комбинацию Ctrl + колесо мыши или обычный скроллинг). Рассмотрим, какими средствами платформы и альтернативными решениями можно заблокировать прокрутку и масштабирование.
Самый быстрый и простой способ запретить любые интерактивные манипуляции с полем табличного документа на форме — отключить доступность самого элемента формы.
Выясним причину, почему обычная установка свойства ТолькоПросмотр = Истина у табличного документа или Защита = Истина у ячеек не помогает: эти свойства запрещают только редактирование текста, но элемент всё равно продолжает принимать фокус ввода, из-за чего прокрутка и изменение масштаба остаются активными. Если же установить свойство Доступность = Ложь у элемента формы, поле перестает получать фокус, и обработка событий мыши блокируется.
Разберем пример кода для отключения доступности элемента формы:
// Отключаем доступность элемента формы табличного документа
Элементы.ПолеТабличногоДокумента.Доступность = Ложь;
Обратите внимание: при отключении доступности пользователь не сможет выделить текст в ячейках или скопировать данные. Если задача состоит исключительно в отображении информации, данный метод решает проблему штатными средствами.
Если требуется сохранить эстетичный внешний вид без визуального «серого» стиля недоступного элемента 1С, проанализируем вариант с выводом данных через элемент формы Поле HTML-документа.
Разберем данный подход по шагам:
ПолучитьHTML().Поле HTML-документа.overflow: hidden для отключения полос прокрутки, а с помощью скриптов JavaScript отменяем обработку событий wheel и keydown.Рассмотрим ситуацию, когда табличный документ выполняет роль статичного дашборда или инфографики. В этом случае документ можно сгенерировать и перевести в графический объект.
Используем метод ПолучитьКартинку() табличного документа и выводим результат в элемент формы Поле картинки. В свойствах элемента настраиваем режим размера (например, АвтоРазмер или РеальныйРазмер). Элемент «Поле картинки» не реагирует на прокрутку колеса мыши и комбинации изменения масштаба.
Посмотрим на настройки отображения полос прокрутки в свойствах поля табличного документа на форме:
ВертикальнаяПрокрутка и ГоризонтальнаяПрокрутка значение НеИспользовать (или ИспользоватьНеОтображать).Важный момент: само по себе отключение отображения полос прокрутки не блокирует вращение колесика мыши, если элемент находится в фокусе, поэтому данный параметр рекомендуется использовать совместно с отключением доступности элемента.