Работа с запросами в 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. Павел Шемякин

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

См. также

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

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

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

13000 руб.

02.09.2020    119936    656    389    

701

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

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

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

3 стартмани

05.02.2024    3892    24    obmailok    17    

63

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

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

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

1 стартмани

31.01.2024    1964    2    Yashazz    0    

29

СКД на JavaScript в 1С

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

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

2 стартмани

11.12.2023    8032    20    John_d    25    

122

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

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

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

05.12.2023    4528    PROSTO-1C    13    

61

Модель СКД

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

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

1 стартмани

15.11.2023    5710    15    kalyaka    5    

85

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

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

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

18.09.2023    6338    accounting_cons    5    

29

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

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

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

01.09.2023    4408    KVIKS    15    

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

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