Skip to content

Медленное открытие управляемых форм с динамическими списками

При разработке интерфейса управляемых форм с динамическими списками столкнулся с неочевидным поведением технологической платформы 1С:8.2. Этот нюанс приводил к существенным задержкам при открытии управляемых форм.

Проблема.

Версия технологической платформы: 8.2.17.143

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

Имеем форму, на которой размещен один динамический список – «Реквизит1» (далее, динамический список), с выключенной видимостью:

Источником информации для вывода в динамическом списке являются данные справочника «киДоговоры»:

Открываем форму в режиме конфигуратора и ставим точки останова на:

  • последней инструкции события «При создании на сервере»;
  • первой инструкции события «При открытии».

Открываем форму в режиме отладки.

После остановки на последней инструкции события «При создании на сервере» запускаем SQL Profiler, с целью фиксации всех запросов которые выполняются на стороне базы данных. Выполняем сбор этих данных до первой инструкции события «При открытии»:

таблица БД в которой хранятся элементы справочника «киДоговоры» называется Reference418

Видим, что запрос для получения информации, с целью ее последующего вывода в динамическом списке выполнялся, несмотря на то, что динамический список не отображается на форме (у него отключена видимость).

Решение.

Вариантов много, например, для динамических списков с отключенной видимостью устанавливать параметры отбора, повышающие скорость выполнения запросов, получающих данные для вывода. В случаях когда скрытые динамические списки предназначены для отображения информации ограниченной сложными механизмами record level security (что может очень сильно снижать скорость получения данных), в качестве источника данных для них можно использовать произвольные запросы-пустышки.

11/08/2014

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

Be First to Comment

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *