Оптимизация СКД в 1С: как находить ошибки и ускорять отчеты

10.07.26

Разработка - СКД

В СКД существует несколько распространенных типов ошибок: часть из них легко найти и диагностировать, часть – это особенности работы СКД, которые не очевидны. В статье описываю базовый алгоритм, с которого удобно начинать системную диагностику.

В СКД существует несколько распространенных типов ошибок: часть из них легко найти и диагностировать, часть – это особенности работы СКД, которые не очевидны.

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

Ниже – базовый алгоритм, с которого удобно начинать системную диагностику: сначала измеряем этапы выполнения СКД, затем методом исключения находим проблемные места и оптимизируем их.

Немного теории: из каких этапов состоит выполнение СКД

Выполнение СКД делится на 3 основных этапа, в которых и можно найти ошибки.

1. Получение макета

На этом этапе формируется итоговый текст запроса или запросов, если используется набор данных «Запрос».

Итоговый запрос часто сильно отличается от запроса в самой схеме СКД. Это зависит от:

  • настроек СКД: параметров, структуры вывода;
  • ролей полей в СКД;
  • программной модификации схемы СКД и/или запроса в типовых конфигурациях.

2. Работа процессора компоновки

На этом этапе можно передать набор данных «Объект». Он может стать источником проблем из-за двух типичных ошибок:

  • передается слишком большой объем данных;
  • в набор данных «Объект» передаются ссылки без представлений.

3. Работа вывода

На этапе вывода чаще всего возникают следующие проблемы:

  • вычисление выражений СКД и/или вызов функций общих модулей;
  • большое количество строк для вывода;
  • в наборе данных «Объект» используются ссылки, но не используются представления ссылок.

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

Этот алгоритм – основа системной работы с СКД. Но на практике бывают разные ситуации и контексты, а многие аспекты требуют отдельного внимания. На курсе «Углубленное изучение СКД в 1С»  я по шагам разбираю не только поиск ошибок, но и доработку типовых отчетов под ERP и УХ, программное управление схемами, вложенные схемы и работу СКД за пределами отчетов. 

Изучить программу

Как замерить этапы выполнения СКД

Замерить этапы выполнения СКД можно в событии ПриКомпоновкеРезультата с директивой &После в расширении:

&После("ПриКомпоновкеРезультата")

Процедура ЭД8_ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)



СтандартнаяОбработка = Ложь;



ДатаСтарта = ТекущаяУниверсальнаяДатаВМиллисекундах();



КМКД = Новый КомпоновщикМакетаКомпоновкиДанных;

Макет = КМКД.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.ПолучитьНастройки(), ДанныеРасшифровки);



ДатаКомпоновкиМакета = ТекущаяУниверсальнаяДатаВМиллисекундах();



//НО Объект

ПКД = Новый ПроцессорКомпоновкиДанных;

ПКД.Инициализировать(Макет,,ДанныеРасшифровки);



ДатаПроцессораКомпоновки = ТекущаяУниверсальнаяДатаВМиллисекундах();



//Выбираются данные, рассчитываются данные, связи наборов данных, выводятся данные

ПВКД = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;

ПВКД.УстановитьДокумент(ДокументРезультат);

ПВКД.Вывести(ПКД);



ДатаВывода = ТекущаяУниверсальнаяДатаВМиллисекундах();



Сообщить("Дата передачи объекта: " + ((ДатаПроцессораКомпоновки - ДатаКомпоновкиМакета)/1000));

Сообщить("Дата рассчета данных: " + ((ДатаВывода - ДатаПроцессораКомпоновки)/1000));



КонецПроцедуры

 

После замеров можно двигаться по схеме диагностики:

Отладка запроса

Сначала забираем текст запроса. Для этого я использую расширение из публикации.

Далее выполняем и анализируем сам запрос.

Текст запроса, полученный из СКД

Если нужно копнуть глубже, можно получить запрос к СУБД и проанализировать уже его.

Опция «Показывать план выполнения запроса» в консоли запросов

Подключаем нейросети для анализа.

Промпт для анализа запроса и плана выполнения нейросетью

Итоговый приоритет рекомендаций по оптимизации запроса

Отладка связей наборов данных

Если используются связи наборов данных, таблица справа, которую мы соединяем, может содержать большое количество строк.

Если не использовать параметры, правая таблица полностью загружается в память без отборов.

Связь наборов данных без параметра — правая таблица грузится полностью

Связь наборов данных с параметром «Список параметров» — данные ограничены

В такой ситуации связь нужно ограничивать параметром.

Проверка размера переданной таблицы значений через Т3.Количество()

Отладка набора данных «Объект»

На этом этапе смотрим на размер передаваемых данных и стараемся его ограничить.

Замеры времени по этапам: получение макета, процессор компоновки, вывод

Если используется набор данных «Объект» и много времени уходит на этап вывода, проверяем, что все ссылочные типы имеют ПредставлениеСсылки.

Ресурсы и вычисляемые поля СКД: КоличествоОборот, АВСКлассификация

Отладка вычислений выражений

Чтобы проверить влияние вычисляемых полей, можно временно исключить их из отчета. Если после этого отчет выполняется быстрее, значит, часть проблемы связана с вычислениями.

Счетчик вызовов функции КлассификацияАВС в общем модуле

Также можно посчитать, сколько раз выполняются вычисления. Для этого вызов можно обернуть в общий модуль.

SQL-запрос к СУБД и счетчик вызовов функции после отключения ДанныеРасшифровки

Есть важная особенность: поле может рассчитываться дважды – один раз для вывода значения и второй раз для расшифровки. Если убрать ДанныеРасшифровки из программного формирования, можно сократить время выполнения СКД.

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)

 

ДатаСтарта = ТекущаяУниверсальнаяДатаВМиллисекундах();

 

КМКД = Новый КомпоновщикМакетаКомпоновкиДанных;

Макет = КМКД.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.ПолучитьНастройки(),);

 

ДатаКомпоновкиМакета = ТекущаяУниверсальнаяДатаВМиллисекундах();

 

ПКД = Новый ПроцессорКомпоновкиДанных;

ПКД.Инициализировать(Макет,,,Истина);

 

ДатаПроцессораКомпоновки = ТекущаяУниверсальнаяДатаВМиллисекундах();

 

ПВКД = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;

ПВКД.УстановитьДокумент(ДокументРезультат);

ПВКД.Вывести(ПКД);

 

КонецПроцедуры

 

SQL-запрос и план выполнения после отключения ДанныеРасшифровки

Настройки полей набора данных «Объект» и выражения представления ссылок

Отладка вывода

На этапе вывода возможна проблема при использовании набора данных «Объект»: для каждого ссылочного поля будет выполняться подзапрос на получение представления ссылки. Это нужно исправлять на уровне набора данных «Объект».

Проверка количества строк отчета через ДокументРезультат.ВысотаТаблицы

Еще одна частая причина замедления – слишком большое количество строк для вывода. В этом случае нужно проанализировать, зачем в отчете столько строк и можно ли сократить их количество.

Пример результата после сокращения количества строк отчета

Как закрепить навык

Прочитать алгоритм и применить его на реальных проектах, разные вещи. Навык закрепляется только через практику с обратной связью, поэтому я построил курс «Углубленное изучение СКД в 1С: профессиональная разработка и доработка отчетов для ERP и УХ» именно так. 80% времени в курсе я отвожу на практику на реальных кейсах и домашние задания с развернутой обратной связью, а вопросы разбираю в чате с группой.

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

Изучить программу

Вступайте в нашу телеграмм-группу Инфостарт

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта 1С:Предприятие 8 Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

16500 руб.

02.09.2020    266199    1483    421    

1177

СКД Программист 1С:Предприятие 8 Бесплатно (free)

Как решить проблему с отборами по полям СКД, когда с одинаковым отбором Отчет показывает одно, а Консоль запросов другое.

16.06.2026    3566    sapervodichka    45    

48

Инструментарий разработчика СКД Программист 1С 8.3 Бесплатно (free)

В этой статье представлен СКДБилдер — общий модуль-обёртка над объектной моделью СКД, который сокращает код в 3-4 раза и делает его читаемым.

29.01.2026    7611    390    shapa_pro    27    

71

СКД Программист 1С:Предприятие 8 Бесплатно (free)

Статья написана по результатам проведенного внутреннего обучающего вебинара для разработчиков ГК «СофтБаланс». Если осилить 25 000 знаков - задача для вас непосильная, где-то на бескрайних просторах интернета видео есть (или будет). Но здесь информация точнее. Разберем, чем запрос для СКД принципиально отличается от обычного запроса и как модифицируется в зависимости от настроек. Изучим «базовый рецепт» написания запроса для СКД, сформируем чек-лист. Полезно будет всем – от стажеров до тех. лидов. Всем, кто не снимает галку «автозаполнение» и пишет запросы для отчетов в консоли запросов – читать (вдумчиво) обязательно.

29.10.2025    21979    ovetgana    112    

115

СКД Программист 1С:Предприятие 8 Бесплатно (free)

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

01.07.2025    12631    krasnoshchekovpavel    7    

68

СКД Программист Стажер 1С:Предприятие 8 Россия Бесплатно (free)

Несколько способов управления формами выбора параметров и отборов СКД.

10.04.2025    12208    Neti    0    

42

СКД Программист 1С:Предприятие 8 Бесплатно (free)

Хорошая отчетная форма - сродни искусству. Есть какое-то невероятное эстетическое удовольствие в том, чтобы разобраться в логике учета и анализируемых показателях, спроектировать архитектуру хранения данных так, чтобы оптимально собрать эти показатели вместе с аналитическими разрезами в запросе, а затем настроить отображение так, чтобы, глядя на результат, сразу было понятно, что это за отчет и какие задачи он призван решать. Система компоновки данных - это моя первая, главная и, наверное, единственная "рабочая" любовь. Ее я использую везде, где только можно и где нельзя тоже. Хочу поделиться с вами некоторыми практическими приемами в работе с отчетами на СКД, которые, надеюсь, будут полезны.

27.02.2025    17578    ovetgana    50    

93

СКД Программист 1С:Предприятие 8 Бесплатно (free)

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

24.12.2024    15385    Akcium    17    

47
Для отправки сообщения требуется регистрация/авторизация