О важности псевдонимов полей во временных таблицах и отборах на СКД для производительности

29.05.18

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

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

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

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

 

Как видно, псевдоним у поля временной таблицы не назначен.

А в итоговом запросе это поле уже имеет псевдоним «Контрагент».

 

Поставим в отчете отбор по контрагенту и посмотрим, какой запрос будет сформирован системой компоновки данных.

 

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

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

 

 

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

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

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

В общем, это все, что хотелось рассказать в этой публикации.

СКД

См. также

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

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

15500 руб.

02.09.2020    184629    1027    403    

967

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

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

27.02.2025    9846    ovetgana    50    

87

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

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

24.12.2024    7396    Akcium    13    

43

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

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

15.05.2024    13403    implecs    6    

51

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

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

3 стартмани

05.02.2024    9109    65    obmailok    21    

82

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

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

1 стартмани

31.01.2024    3707    6    Yashazz    2    

34

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

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

2 стартмани

11.12.2023    12774    25    John_d    30    

128
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Dream_kz 129 29.05.18 19:06 Сейчас в теме
А вот иногда такие псевдонимы будут мешать, так как в итогом запросе должны будут присутствовать именно все записи (своя логика по группировке и т.д), и в таких случаях псевдонимы лучше давать отличные от итоговых
POWone; zqzq; +2 Ответить
16. пользователь 02.06.18 06:16
Сообщение было скрыто модератором.
...
2. user_2010 990 29.05.18 21:56 Сейчас в теме
Разве без псевдонима нельзя было настроить для первой таблицы отбор по контрагенту?
swimdog; ValeriTim; elizarovs; olegmedvedev; +4 Ответить
3. tata_1211 65 29.05.18 22:09 Сейчас в теме
(2) Я продемонстрировала лишь факты. Выводы, как пользоваться полученной информацией, пожалуйста, делайте сами.К тому же, в тексте публикации есть оговорка, что пример довольно "искусственный".
Pavl0; &rew; NBir; +3 1 Ответить
5. TMV 11 30.05.18 04:36 Сейчас в теме
4. TMV 11 30.05.18 04:33 Сейчас в теме
9. &rew 52 31.05.18 08:54 Сейчас в теме
(2)Блин, сам со 2 раза вкурил. Смысл в том, что не МЫ накладываем условие, а СКД.
6. spezc 795 30.05.18 06:09 Сейчас в теме
Имхо правильным было бы отключение автозаполнения и добавления необходимого условия вручную на уровне первого запроса через закладку компоновка данных (условия). Автозаполнение зло.
Somebody1; rozer; Артано; kiruha; gea81; kiset; +6 Ответить
7. Бубузяка 62 30.05.18 09:50 Сейчас в теме
Злые вы. :)
Статья для начинающих или не думающих. Автор обращает внимание на проблему. Не всем приходит в голову изучать итоговый запрос. А тут, может кто-то прочтет и почешет затылок.
Полностью согласен с (6).
Артано; +1 Ответить
8. A_Max 20 30.05.18 11:16 Сейчас в теме
(7) А ещё будут почёсывать затылок и травить байки про глючность СКД, когда из-за автозаполнения отборы накладываются непредсказуемо (не так как думалось составителю)
POWone; elizarovs; +2 Ответить
11. SITR-utyos 1434 31.05.18 09:35 Сейчас в теме
(6) Отключать автозаполнение в СКД стоит, когда уже есть опыт и уже понимаешь что делаешь и как это будет интерпретироваться в итоговый запрос.
Автозаполнение - не всегда зло, иногда наоборот экономит время, если запрос простой
12. Артано 798 31.05.18 11:53 Сейчас в теме
(11) Если использовать автозаполнение, то опыт и не появится. Нет ничего сверхсложного самому указать какие поля и как ты хочешь использовать.
14. zqzq 25 01.06.18 10:15 Сейчас в теме
Автозаполнение не зло, если уметь его готовить. Также можно использовать автозаполнение + ручной твик с группе запроса {..}.

Итог простой:
1) "протягивать" синоним одного (фактически) поля как можно выше, тогда и отбор будет при первом упоминании;
2) разным (фактически) полям давать разные синонимы, я обычно использую информативные имена и/или добавляю префикс имени сходный с именем временной таблицы;
10. PerlAmutor 158 31.05.18 09:06 Сейчас в теме
Тут действительно есть о чем задуматься (не только о производительности), т.к. в обоих запросах могут присутствовать разные отборы с одним и тем же выбранным контрагентом. Предположим мы сначала отбираем документы со всеми контрагентами. А затем, во втором запросе отбираем во вторую временную таблицу только определенного контрагента, а в третью временную таблицу всех остальных, без этого контрагента. Если для первой временной таблицы сработает отбор по одному контрагенту, третья временная таблица будет пустой.
13. uri1978 138 31.05.18 12:42 Сейчас в теме
(10) Автозаполнение в СКД - зло. Использую только в простейших отчетах. В чем-то сложном, особенно с временными таблицами - только вручную указываю поля.
unichkin; +1 Ответить
15. SlavaKron 01.06.18 15:08 Сейчас в теме
Что нужно сделать, чтобы поле ВидДокумента было доступно в отборах?
Прикрепленные файлы:
17. gamden 05.06.18 13:04 Сейчас в теме
(15) Если еще актуально... В конструкторе запроса, вкладка "компоновка данных", в ней вкладка "условия" - добавь нужное поле.
18. SlavaKron 05.06.18 14:02 Сейчас в теме
Этого поля нет на вкладке условий компоновки данных, так как оно создано в параметрах виртуальной таблицы РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто. Прочие поля, добавленные таким образом, попадают в отбор СКД. Можно, конечно, добавить в "условия" это выражение, но тогда отбор по типу регистратора будет накладываться уже после формирования виртуальной таблицы.
Прикрепленные файлы:
Оставьте свое сообщение