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

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

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

Гайд 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 с фильтром по контексту отчета.