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

29.05.18

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

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

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

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

 

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

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

 

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

 

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

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

 

 

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

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

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

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

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

СКД

См. также

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

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

16500 руб.

02.09.2020    251671    1394    421    

1147

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

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

29.01.2026    5926    316    shapa_pro    25    

68

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

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

29.10.2025    17600    ovetgana    112    

108

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

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

01.07.2025    10288    krasnoshchekovpavel    5    

68

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

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

10.04.2025    9629    Neti    0    

41

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

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

27.02.2025    16115    ovetgana    50    

93

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

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

24.12.2024    13749    Akcium    17    

46

СКД Механизмы типовых конфигураций Запросы Программист 1С:Предприятие 8 1С:Зарплата и кадры государственного учреждения 3 1С:Зарплата и Управление Персоналом 3.x Россия Бесплатно (free)

Работая с типовыми отчетами в конфигурациях «Зарплата и управление персоналом, редакция 3», «Зарплата и кадры государственного учреждения, редакция 3» и подобных, в схемах компоновки данных можно встретить конструкции запросов, которые обращаются к некоторым виртуальным таблицам.

20.08.2024    10408    AlexeyPROSTO_1C    1    

32
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Dream_kz 129 29.05.18 19:06 Сейчас в теме
А вот иногда такие псевдонимы будут мешать, так как в итогом запросе должны будут присутствовать именно все записи (своя логика по группировке и т.д), и в таких случаях псевдонимы лучше давать отличные от итоговых
POWone; zqzq; +2 Ответить
16. пользователь 02.06.18 06:16
Сообщение было скрыто модератором.
...
2. user_2010 1036 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 2 30.05.18 04:36 Сейчас в теме
4. TMV 2 30.05.18 04:33 Сейчас в теме
9. &rew 54 31.05.18 08:54 Сейчас в теме
(2)Блин, сам со 2 раза вкурил. Смысл в том, что не МЫ накладываем условие, а СКД.
6. spezc 804 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 1437 31.05.18 09:35 Сейчас в теме
(6) Отключать автозаполнение в СКД стоит, когда уже есть опыт и уже понимаешь что делаешь и как это будет интерпретироваться в итоговый запрос.
Автозаполнение - не всегда зло, иногда наоборот экономит время, если запрос простой
12. Артано 802 31.05.18 11:53 Сейчас в теме
(11) Если использовать автозаполнение, то опыт и не появится. Нет ничего сверхсложного самому указать какие поля и как ты хочешь использовать.
14. zqzq 25 01.06.18 10:15 Сейчас в теме
Автозаполнение не зло, если уметь его готовить. Также можно использовать автозаполнение + ручной твик с группе запроса {..}.

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