1С подвисает при открытии большого списка

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

Характеристики справочника

  • Более 1 млн элементов справочника
  • Полный список смотреть не надо, бессмысленно на таких объемах – возможна корректировка начального отображения  с последующей работой только через уточняющие запросы
  • До “разгруппировки” справочника требуется быстрая работа именно с ним, в дальнейшем – при наличии групп – предполагается что производительность должна нормализоваться

Анализ возможных причин

  • реально большой размер списка (с этим ничего не поделать)
  • некорректная работа платформы 8.3.8 (добавились кнопки листания, допускаем, что в начале производится какие-то промежуточные расчеты)
  • наличие сортировки (при установке сортировка, форма запоминает настройки пользователя и восстанавливает при открытии) – отмена сортировки через свойства формы не решила проблему
  • работа на файловом варианте базы данных (на первых этапах добиваемся оптимальности в этом режиме, далее оттестируем в sql)
  • отборы (отсутствуют), но будут по проиндексированным полям
  • наличие событий обработчиков активизации по строке (отсутствуют)
  • медленная работа с диском (пока отметаем такой вариант, диск ssd)

Варианты решения

  1. Пробуем вариант с использованием команды “ПЕРВЫЕ 1000”, но она вызывает ошибку в том, что запрос динамического списка не должен ее содержать. Перенос “ПЕРВЫЕ” во вложенный запрос решает проблему. Дальше, наблюдается медленная работа полнотекстового поиска (поиск альтернативными средствами, достаточно не комфортно и это не позволит оперативно работать с таким большим списком на этапе его разгруппировки).
  2. Следующей итерацией будет внутреннее соединение двух таблиц одного справочника (второй будет формироваться с командой ПЕРВЫЕ).Цель  – вернуться к основной таблице с полнотекстовым поиском.

Результаты проверки

  • поиск восстановился
  • отборы и поиск идет не по всему списку а по 1000 (указанной в директиве, это плохой вариант)
  • поднятие выборки до 100000 дает допустимую скорость выборки и поиска (но все равно не полную)
  • отключение динамического считывания – не ускоряет начальное получение данных, но ускоряет листание – происходит без задержек
  • начальное формирование 2-3 секунды (при 100000) – быстрее примерно во столько же на сколько уменьшилась выборка
  • при вводе длинных фраз в полнотекстовом поиске наблюдаются тормоза – необходимо запрещать поиск до 3 символов (если внести фразу сразу из буфера обмена – поиск моментальный)

3. Останавливаемся на варианте, когда полнотекстовый поиск вызывается не стандартным диалогом, а более управляемым, после этого полученный список передается как параметры отбора для динамического списка.

  • При этом работа замедляется только при размере таких отборов более 10000 позиций.
  • Также остается минусом – зависимость от наличия и актуальности индекса полнотекстового поиска.

Искусство пропаганды в том виде, как его понимают современные политики, напрямую связано с искусством рекламы. Психология как наука во многом обязана рекламодателям.

— Бертран Рассел