Как восстановить работу полос прокрутки в 1С 8, если документ доступен только для чтения?

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

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

В данной статье мы разберем причины такого поведения платформы и рассмотрим пошаговые методы решения этой проблемы, начиная от простых настроек свойств элементов и заканчивая программными методами управления формой.

Разберем разницу между свойствами «Только просмотр» и «Доступность»

Одной из наиболее распространенных ошибок, как было отмечено в обсуждении, является путаница между свойствами ТолькоПросмотр (ReadOnly) и Доступность (Enabled). Проанализируем, как они влияют на поведение интерфейса:

  1. Доступность = Ложь: Если вы устанавливаете это свойство для всей формы или конкретной таблицы, элемент управления полностью исключается из взаимодействия. Платформа «серыми» делает не только поля ввода, но и лишает пользователя возможности выделить строку или воспользоваться скроллбаром. Прокрутка в этом режиме часто перестает работать, так как элемент не может получить фокус.
  2. Только просмотр = Истина: Это свойство предназначено именно для тех случаев, когда данные нужно видеть, но нельзя менять. В идеале полосы прокрутки должны сохранять активность. Однако, если свойство установлено для всей формы (ЭтаФорма.ТолькоПросмотр = Истина), в некоторых релизах платформы это может приводить к блокировке интерактивных элементов, включая скроллбары табличных частей.

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

Использование Условного оформления для управления доступностью

Наиболее современным и корректным способом в управляемых формах является использование Условного оформления. Рассмотрим, как настроить его так, чтобы табличная часть оставалась «живой», но данные были защищены от редактирования.

Проанализируем алгоритм действий:

  1. Откроем форму документа в конфигураторе.
  2. Перейдем на закладку «Условное оформление».
  3. Добавим новое правило, где в качестве оформляемого поля выберем все колонки нужной таблицы.
  4. В колонке «Оформление» установим параметр ТолькоПросмотр в значение Истина.
  5. В качестве условия укажем состояние документа: Объект.Проведен Равно Истина.

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

Настройка способа редактирования табличной части

Выясним причину, связанную со свойствами самой таблицы. У каждого элемента типа «Таблица» в управляемой форме есть свойство СпособРедактирования. Рассмотрим, как оно влияет на доступность прокрутки:

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

Программная установка фокуса при открытии формы

Иногда полосы прокрутки «замирают» из-за того, что при открытии проведенного документа ни один элемент формы не получает фокус ввода. Разберем, как принудительно активировать нужный нам объект. В модуле формы в процедуре ПриОткрытии или ПриЧтенииНаСервере можно прописать установку текущего элемента:


&НаКлиенте
Процедура ПриОткрытии(Отказ)
    Если Объект.Проведен Тогда
        // Устанавливаем фокус на таблицу, чтобы активировать полосы прокрутки
        ЭтаФорма.ТекущийЭлемент = Элементы.Товары;
    КонецЕсли;
КонецПроцедуры

Этот простой прием заставляет платформу пересчитать графическое состояние элемента Товары и корректно отрисовать полосы прокрутки.

Влияние состава прав и механизмов RLS

Если вышеперечисленные методы не помогают, проанализируем ситуацию на уровне прав доступа. При использовании RLS (Row Level Security) платформа накладывает ограничения непосредственно на выборку данных из базы. Если у пользователя настроены сложные шаблоны ограничений, 1С может формировать интерфейс таблицы таким образом, что она кажется пустой или «схлопнутой», хотя данные в ней есть. В этом случае визуально полосы прокрутки могут отсутствовать, так как платформа «считает», что прокручивать нечего.

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

Особенности интерфейса «Такси» и масштабирования

Рассмотрим еще одну техническую особенность. В современных релизах платформы (начиная с 8.3.10 и выше) в интерфейсе «Такси» иногда наблюдается баг: полоса прокрутки становится недоступной для клика мышью, если таблица находится внутри нескольких вложенных групп с типом Группа колонок или Группа страниц. При этом прокрутка колесиком мыши может продолжать работать.

Для решения этой проблемы попробуем следующее:

  1. Проверим масштаб отображения (Ctrl + 0). Иногда некорректный масштаб (например, 95% или 110%) приводит к тому, что элементы интерфейса перекрывают друг друга.
  2. В конфигураторе вынесем таблицу из вложенных групп на верхний уровень формы, чтобы проверить, не восстановится ли функциональность.

Резюме и рекомендации

Подводя итог, отметим: если ваша цель — запретить редактирование проведенного документа, но оставить возможность комфортного просмотра данных с использованием прокрутки, избегайте установки Доступность = Ложь для всей формы или всей таблицы. Используйте свойство ТолькоПросмотр = Истина в сочетании с программной установкой фокуса или, что еще предпочтительнее, механизм Условного оформления. Это обеспечит стабильную работу интерфейса и удобство для конечного пользователя.

← На главную