Работа с запросами в 1С СКД. Особенности работы запросов в СКД. Часть 1

21.04.20

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

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

 

 

 

Работа с запросами в 1С СКД . Особенность работы запросов в СКД.  Часть 1

 

Важно! Все действия в этом разделе проводились на платформе 8.3.15. Некоторые на платформе 8.3.14. В конфигурации режим совместимости установлен как «Не используется».

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

Главная особенность СКД в 1С при работе с «наборами данных запрос» заключается в том, что запрос выполняемый платформой может отличаться от запроса, который вы написали в наборе данных.

В процессе чтения статьи вы уже сталкивались с таким поведением системы компоновки данных в разделе «Расширение языка запросов 1С для СКД». Это (наличие управляющих конструкций расширения в запросе) один из факторов, влияющих на результирующий запрос. Где можно «поймать» этот запрос вы могли заметить в разделе «Обманываем СКД» - в процедуре «ПриКомпоновкеРезультата» в отладчике при программном формировании отчета в объекте МакетКомпоновкиДанных можно обратиться к свойству «НаборыДанных», в наборе (если это набор данных запрос) смотрим свойство «Запрос».

В этом разделе разберем если не все, то большинство ситуаций срабатывания механизма замены (модификации) запроса. Среди них будут как ожидаемые, так и неожиданные примеры.

Вспомогательные данные

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

Для детальных записей это выглядит так:

 

1С СКД

 

При наличии группировок так:

 

1С СКД

 

Использовать группировки запроса если возможно

 

Начиная с определенного релиза платформы 1С (по-моему, с 8.3.14) в СКД появилась для «наборов данных запрос» опция «Использовать группировки запроса если возможно»:

 

1С СКД

 

В отчете с группировкой по номенклатуре и ресурсами «Количество» и «Сумма» получаем:

 

1С СКД

Слева запрос без опции, справа с установленной опцией. Как видно с установленной опцией свертка данных производится на стороне СУБД.

 

Что означает «если возможно»? Если рассмотрим такой текст запроса:

 

1С СКД

 

То на него указанная опция не действует. Видимо к регистрам накопления «невозможно» применить эту опцию:

 

1С СКД

В следующих примерах, если в результирующем запросе вы не видите полей специфичных для этой опции, значит она отключена.

 

Необязательное условие

 

Этот пример мы уже рассматривали в предыдущем разделе про расширение языка запросов. Повторим еще раз и рассмотрим чуть больше примеров:

Исходный текст запроса:

1С СКД

 

Если не задан ни один параметр:

 

1С СКД

 

Если задан один параметр:

 

1С СКД

 

Если заданы оба параметра:

 

 

Здесь важно заметить, что условия могут применяться отдельно только если они перечисленные через «,» и при использовании обоих условий они соединяются с помощью оператора «И». Если условия должны соединяться по-другому, то в этом случае общее выражение заключается в одни фигурные скобки:

 

1С СКД

 

Только в этом случае отчет будет работать, если не заданы оба параметры или если оба параметры заданы. Если задан только один параметр, будет выдаваться ошибка (потому что в итоговый запрос будут включены оба параметра):

 

1С СКД

 

Необязательная таблица

Такой пример мы тоже уже разбирали. Исходный запрос:

 

1С СКД

 

Если выбрано поле остатка:

 

1С СКД

 

Если поле остатка не выбрано:

1С СКД

 

Теперь рассмотрим запрос чуть сложнее:

 

1С СКД

 

В нем мы получаем данные по продажам, из связанной накладной получаем статью расходов, из статьи получаем формулу расчета. Реквизиты «Статья» и «ФормулаРасчета» могут не включаться в отчет. Допустим, нам не нужна статья, но нужна формула расчета. Какой итоговый запрос мы получим в этом случае:

1С СКД

 

Реквизит «Статья» исключен из запроса и некорректно исключена связанная с ним таблица по накладным. До сих пор мы рассматривали элементы расширения языка запросов. Посмотрим, как выглядят они в конструкторе запросов. Необязательные таблицы можно увидеть на закладке «Компоновка данных - Таблицы»:

 

1С СКД

 

Здесь кроме колонки «Обязательная» есть колонка «Номер группы». Поскольку наши таблицы включены в разные группы, то и в запросе они исключаются/включаются независимо.

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

Посмотрим, какие получатся исходный и результирующий запросы:

 

1С СКД

 

1С СКД

 

Странно конечно получается, если мы запрос создаем в конструкторе запросов (до этого в первом исходном запросе я расставил скобки «{}» руками):

 

1С СКД

 

Таблицы расположены в разных группах, но как бы одна внутри другой:

 

1С СКД

 

При этом если исключить статью в отчете, но оставить формулу расчета, результирующий запрос получается верный, несмотря на то, что группы у таблиц разные:

 

1С СКД

 

Видимо здесь имеет значение еще и порядок соединений в исходном запросе. Но все-таки надежней будет размещать таблицы в одной группе.

 

Серия статей по СКД
Предыдущая статья .., Следующая статья ...
Автор курсов образовательного проекта Profession Store. Павел Шемякин

СКД запросы системы компоновки данных

См. также

SALE! 15%

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

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

10000 руб.

02.09.2020    159681    876    399    

862

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

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

15.05.2024    8727    implecs_team    6    

47

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

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

3 стартмани

05.02.2024    7012    56    obmailok    21    

79

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

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

1 стартмани

31.01.2024    3155    5    Yashazz    1    

34

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

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

2 стартмани

11.12.2023    10832    23    John_d    25    

124

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

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

05.12.2023    8053    PROSTO-1C    15    

68
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. TMV 14 12.04.20 07:22 Сейчас в теме
Тяжело читать, как-то сумбурно написано, да и абзацы повторяются - автор побрезговал сам прочитать?
2. toypaul 63 13.04.20 08:26 Сейчас в теме
(1) Я вижу только одно повторение. Изначально эта была одна большая (на 50+ страницы) статья, которую попросили разбить на части. Может еще и поэтому читать тяжело. Технический материал - нужно читать несколько раз и вдумываться. После разбиения на части наверное повторы остались.
3. FreeArcher 162 15.04.20 09:16 Сейчас в теме
Может лучше выложить документом PDF за те же мани.
4. toypaul 63 15.04.20 09:41 Сейчас в теме
(3) за чтение статьей что ли мани берут?
5. FreeArcher 162 15.04.20 09:54 Сейчас в теме
(4) Нет, зато дают за звездочки. А иначе какой смысл было бить большую статью на меленькие.
6. toypaul 63 15.04.20 10:09 Сейчас в теме
(5) Ничего не понял. Если нет звезд, нельзя статьи читать? Разбивать на части не мое решение. Я уже не помню какой был смысл в этом :)
7. FreeArcher 162 15.04.20 12:53 Сейчас в теме
(6) Я вам что что-то запрещал. От чего такие реакции на комментарии и ненужная переписка. Я предложил вариант. Сформулировав "может лучше".
Не хотите/не требуется, да даже отвечать не обязательно.

Просто если вы имеете документ на 50 страниц с хорошим описанием работы СКД. Вот я лично распечатал и прочитал (думаю удобнее было бы и оформление лучше). Да и был бы справочник всегда под рукой.
Это если цель просто поделится информацией. А если цель в звездочках, то тогда из всего этого есть смысл делать +статей 20.
8. toypaul 63 15.04.20 14:09 Сейчас в теме
(7) Может и было лучше. Не мое решение. Если так сделали, значит так было надо. Звездочки на этом аккаунте вовсе не нужны. Можно плюсиков не ставить - никто не обидится.
9. user1119635 26.02.21 16:39 Сейчас в теме
Оставьте свое сообщение