Центр Диагностики & База Системных Ошибок

Решения для Windows Server, Active Directory, 1С, СУБД, Linux, Cisco, MikroTik и IP-телефонии.

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

Оптимизация производительности динамических списков в 1С 8.3

Обновлено: 16.09.2026  ·  Официальная база знаний

Симптомы деградации производительности динамических списков

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

Симптом / ПоведениеМесто фиксацииПричина возникновения
Задержка 5–15 секунд при первичном открытии формы спискаКлиент 1С / APDEXВычисление общего количества строк (ОтображатьКоличество = Истина) или неоптимизированный произвольный запрос
Зависание при листании списка внизSQL Server Profiler (запросы с TOP 45)Отсутствие индекса под текущий порядок сортировки динамического списка
Высокая загрузка TempDB / Spills to diskПлан выполнения MS SQL (Sort/Hash Join)Использование левых соединений с виртуальными таблицами итогов и подзапросов в тексте запроса списка

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

  1. Отключение подсчета общего числа строк:

    Подсчет количества записей принудительно заставляет СУБД сканировать всю таблицу (Table Scan / Index Scan), игнорируя порционную выборку TOP N:

    // В свойствах элемента формы 'Список' или программно при создании на сервере:
    Элементы.Список.ОтображатьКоличество = Ложь;
    Список.ДинамическоеСчитываниеДанных = Истина;
  2. Отказ от соединений с виртуальными таблицами и подзапросов:

    Не используйте в запросе динамического списка конструкции ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Остатки(...). Виртуальные таблицы рассчитывают остатки на лету на «точку времени», что приводит к блокировкам и сканированию миллионов строк. Выносите расчет остатков в контекст формы или используйте денормализованные реквизиты объектов.

  3. Настройка правильной индексации под порядок сортировки:

    Динамический список считывает порции записей (обычно по 20–45 строк) с условием WHERE ПолеСортировки > @ПоследнееЗначение ORDER BY ПолеСортировки ASC. Если поле сортировки (например, реквизит «Автор» или «СуммаДокумента») не проиндексировано в СУБД, сервер выполнит полную сортировку всей таблицы в памяти.

    // Включение индексации реквизита в метаданных:
    // Конфигуратор -> Свойства реквизита -> Индексировать -> Индексировать (или С доп. упорядочиванием)
  4. Принудительное ограничение используемых колонок:

    Уберите флаг «Использовать всегда» у всех колонок динамического списка, кроме системных (Ссылка, ПометкаУдаления). Если флаг активен, поле выгружается с сервера даже тогда, когда колонка скрыта пользователем в настройках формы.

Важное архитектурное правило: Избегайте использования функций ВЫРАЗИТЬ(... КАК СТРОКА) и логических блоков ВЫБОР КОГДА ... ТОГДА в секции ГДЕ произвольного запроса динамического списка. Они делают предикат не sargable, исключая применение индексов таблицы.

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

Частые вопросы (FAQ)

Почему включение галочки 'Динамическое считывание данных' иногда не помогает?

Динамическое считывание автоматически отключается платформой 1С, если в свойствах списка установлен флаг подсчета итогов, если в коде вызывается метод Список.Количество(), либо если в запросе отсутствует возможность однозначного упорядочивания по уникальному ключу (Ссылка).

Как влияет условное оформление динамического списка на производительность?

Если условное оформление наложено на строки с проверкой тяжелых условий (например, анализ реквизитов через точку), платформа вычисляет правила для каждой отображаемой строки на клиенте, вызывая задержки при отрисовке интерфейса.

Можно ли использовать временные таблицы в динамическом списке?

Нет, механизм динамических списков платформы 1С не поддерживает пакетные запросы с оператором создания временных таблиц ПОМЕСТИТЬ. Допускается только одиночный запрос SELECT.

Как увидеть реальный SQL-запрос, который динамический список отправляет в базу?

Необходимо настроить сбор технологического журнала 1С (событие SDBL или DBMSSQL с фильтром по контексту формы) либо использовать трассировку через MS SQL Profiler / Extended Events.