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

29.05.18

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

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

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

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

 

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

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

 

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

 

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

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

 

 

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

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

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

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

СКД

См. также

SALE! 20%

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

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

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

13000 10400 руб.

02.09.2020    122182    670    389    

714

Генератор схемы компоновки данных (СКД), написание кода схемы программно

Инструментарий разработчика СКД Платформа 1С v8.3 Конфигурации 1cv8 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m)

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

3 стартмани

05.02.2024    4043    25    obmailok    17    

63

Набор-объект для СКД по тексту или запросу

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

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

1 стартмани

31.01.2024    2000    2    Yashazz    0    

29

СКД на JavaScript в 1С

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

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

2 стартмани

11.12.2023    8161    20    John_d    25    

123

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

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

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

05.12.2023    4658    PROSTO-1C    13    

61

Модель СКД

Инструментарий разработчика СКД Платформа 1С v8.3 Система компоновки данных Абонемент ($m)

DSL для работы с СКД.

1 стартмани

15.11.2023    5807    15    kalyaka    5    

86

Пользовательские настройки отчетов 1С. Часть 1. Простые и расширенные настройки

СКД Инструкции пользователю Платформа 1С v8.3 Конфигурации 1cv8 1С:Бухгалтерия 3.0 Россия Бесплатно (free)

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

18.09.2023    6703    accounting_cons    5    

29

Разрыв страницы в СКД. Легко!

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

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

01.09.2023    4521    KVIKS    15    

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

Итог простой:
1) "протягивать" синоним одного (фактически) поля как можно выше, тогда и отбор будет при первом упоминании;
2) разным (фактически) полям давать разные синонимы, я обычно использую информативные имена и/или добавляю префикс имени сходный с именем временной таблицы;
10. PerlAmutor 129 31.05.18 09:06 Сейчас в теме
Тут действительно есть о чем задуматься (не только о производительности), т.к. в обоих запросах могут присутствовать разные отборы с одним и тем же выбранным контрагентом. Предположим мы сначала отбираем документы со всеми контрагентами. А затем, во втором запросе отбираем во вторую временную таблицу только определенного контрагента, а в третью временную таблицу всех остальных, без этого контрагента. Если для первой временной таблицы сработает отбор по одному контрагенту, третья временная таблица будет пустой.
13. uri1978 137 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 Сейчас в теме
Этого поля нет на вкладке условий компоновки данных, так как оно создано в параметрах виртуальной таблицы РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто. Прочие поля, добавленные таким образом, попадают в отбор СКД. Можно, конечно, добавить в "условия" это выражение, но тогда отбор по типу регистратора будет накладываться уже после формирования виртуальной таблицы.
Прикрепленные файлы:
Оставьте свое сообщение