Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

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

PERF_SKD_REPORT_SLOW 1С:Предприятие и СУБД

Гайд 1С: Оптимизация построения отчетов на СКД (Система компоновки данных)

Обновлено: 26.08.2026 · Официальная документация ↗
  • Формирование отчета на СКД блокирует таблицы СУБД или длится более нескольких минут.
  • СКД генерирует монструозные SQL-запросы с десятками левых соединений (LEFT JOIN) и подзапросов.
  • Потребление десятков гигабайт памяти процессом rphost во время компоновки результата.
  • Падение производительности сервера при одновременном запуске отчетов несколькими пользователями.

1. Отключение автозаполнения и явный контроль полей

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

  • Отключите автозаполнение на вкладке «Наборы данных» и явно укажите разрешенные поля выборки, отборов и сортировок.

2. Оптимизация соединений наборов данных

Соединение наборов данных на уровне схемы СКД выполняется в оперативной памяти сервера 1С (в процессе rphost), а не на стороне СУБД.

// НЕПРАВИЛЬНО: Соединять набор данных 'Запрос1' и 'Запрос2' через вкладку 'Связи наборов данных'
// ПРАВИЛЬНО: Объединять таблицы внутри одного текста SQL-запроса через JOIN или временные таблицы

3. Использование параметров виртуальных таблиц

Все условия отборов по периодам и измерениям должны передаваться напрямую в параметры виртуальных таблиц, а не в блок ГДЕ:

// ПРАВИЛЬНО в тексте запроса СКД:
ВЫБРАТЬ
    ПродажиОбороты.Номенклатура КАК Номенклатура,
    ПродажиОбороты.КоличествоОборот КАК Количество
ИЗ
    РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, Авто, {(Номенклатура).* КАК Номенклатура}) КАК ПродажиОбороты
💡 Практика специалистов: Избегайте вычисляемых полей в СКД, использующих тяжелые экспортные функции общих модулей 1С — это отключает векторную обработку и вызывает миллионы контекстных переключений между сервером 1С и СУБД.

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

Почему соединение наборов данных в СКД вызывает утечку памяти?

При связи двух наборов данных СКД считывает первый набор целиком, затем для каждой его строки выполняет итерационный поиск или дополнительный запрос во второй набор, создавая квадратичную сложность O(N*M) в оперативной памяти rphost.

Что такое синтаксис фигурных скобок {} в запросах СКД?

Это синтаксис расширения языка запросов для СКД. Конструкции внутри фигурных скобок (например, {(Контрагент).*}) включаются в результирующий SQL-запрос только тогда, когда пользователь реально задействовал это поле в отборе или группировке.

Как включить фоновое формирование отчетов без блокировки интерфейса?

В свойствах формы отчета или процедурах инициализации установите свойство 'РежимИсполнения' в значение 'Фоновый', что позволит строить отчет в отдельном фоновом задании.

Как увидеть реальный SQL-запрос, который СКД отправляет в СУБД?

Используйте встроенную обработку 'Консоль компоновки данных' или настройте сбор технологического журнала 1С с событиями SDBL и DBV8DBEng с фильтром по контексту отчета.

Полезные материалы
Рекомендуем