Оптимизация отчетов с набором данных - объект

23.06.25

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

Проблемы производительности, связанные с отчетами на источнике данных - объекте, и методы их решения. В частности рассмотрен способ разработки отчета с двумя схемами компоновки данных. Когда одна используется как служебная, скрытая от глаз пользователя - для получениях данных. А вторая используется для вывода этих данных пользователю.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
СКД "Набор данных запрос" в СКД "Набор данных объект"
.epf 8,26Kb
0
0 Скачать (1 SM) Купить за 1 850 руб.

Введение

Наша цель, это оптимизация отчетов на СКД, в которых используется "Набор данных - объект"

Для начала, опишем проблему.

Рассмотрим стандартную схему работы с внешними наборами данных в отчетах на СКД:

В обработчике события отчета "ПриКомпоновкеРезультата":

 1) Получаем полные данные 

 2) Передаем полученные данные в качестве внешних наборов данных в процессор компоновки

 3) При формировании отчета отборы пользователя накладываются на изначально излишние данные

 

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

 
 Пример кода приведенной выше схемы

 

Варианты решения проблемы

 

1) Анализ настроек компоновки

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

В обработчике события отчета "ПриКомпоновкеРезультата":

 1) Анализируем настройки компоновки данных, формируем на их основе собственные параметры для нашего алгоритма

 2) Получаем данные с учетом некоторых настроек пользователя

 3) Передаем полученные данные в качестве внешних наборов данных в процессор компоновки

 4) При формировании отчета отборы пользователя все еще могут сузить изначальный объем полученных данных

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

 
 Пример кода приведенной выше схемы

Посмотрев на код сразу становиться понятно, что анализировать отборы и пытаться их учесть в собственном алгоритме получения данных практически невозможно. Поэтому для текущего подхода лучше всего использовать параметры СКД. Параметры мы явно определяем при разработке схемы и знаем их структуру. Но это лишает нас гибкости и противоречит стандартам (#std407).

 

2) Использование двух СКД

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

  • Создадим схему компоновки данных, которая будет получать данные. Назовем её "СхемаКомпоновкиЗапрос".
  • Создадим схему компоновки данных, которая будет указана в качестве основной схемы отчета. В этой схеме источником будет "Набор данных - объект".

В обработчике события отчета "ПриКомпоновкеРезультата":

  • Переносим параметры и отборы из настроек основной схемы компоновки данных в нашу "СхемуКомпоновкиЗапрос".
  • Выводим результат "СхемыКомпоновкиЗапрос" в таблицу значений и передаем в качестве внешнего набора данных в основную схему компоновки отчета.
 
 Пример кода приведенной выше схемы

Требование, предъявляемое к двум СКД - имена полей и параметров должны совпадать. Ведь именно по ним будет происходит сопоставление и перенос настроек.

 

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

 

Итог

 

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

Ограничения и минусы описанного метода:

  • Источником данных может выступать только СКД
  • При разработке отчета необходимо следить за соответствием полей в двух СКД

Примеры подобных отчетов из конфигурации ERP 2.5 (2.5.21.104): ОборачиваемостьЗапасов, ТоварныйКалендарь.

Проверено на следующих конфигурациях и релизах:

  • 1С:ERP Управление предприятием 2, релизы 2.5.22.67

См. также

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

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

15500 руб.

02.09.2020    194084    1067    405    

995

СКД Программист Платформа 1С v8.3 Система компоновки данных Бесплатно (free)

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

27.02.2025    11042    ovetgana    50    

89

СКД Программист Платформа 1С v8.3 Система компоновки данных Бесплатно (free)

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

24.12.2024    8293    Akcium    13    

45

Запросы СКД Программист Стажер Система компоновки данных Россия Бесплатно (free)

Часто при разработке отчетов в СКД возникает ситуация, когда не совсем понятно, почему отчет выводит не те данные, которые нужны, либо не выводит вовсе. Возникает потребность увидеть конечный запрос, который формирует СКД. Как это сделать, рассмотрим в этой статье.

15.05.2024    15327    implecs    7    

52

Инструментарий разработчика СКД Программист Платформа 1С v8.3 1C:Бухгалтерия Абонемент ($m)

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

3 стартмани

05.02.2024    9857    68    obmailok    21    

83

Запросы СКД Программист Платформа 1С v8.3 Управляемые формы 1C:Бухгалтерия Абонемент ($m)

Есть список полей в виде текста, или запрос - закидываем в набор СКД.

1 стартмани

31.01.2024    3907    7    Yashazz    2    

34

СКД WEB-интеграция Программист Платформа 1С v8.3 1C:Бухгалтерия Абонемент ($m)

Долгое время поддерживаю web-портал, в котором появилась необходимость создавать отчеты. Просмотрев различные фреймворки на js, я решил сделать свое решение, которое позволяло бы быстро разрабатывать и добавлять новые отчеты на web-портал.

2 стартмани

11.12.2023    13428    27    John_d    30    

128
Оставьте свое сообщение