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

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

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

См. также

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

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

16500 руб.

02.09.2020    248006    1373    421    

1134

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

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

29.01.2026    5391    296    shapa_pro    25    

66

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

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

29.10.2025    16456    ovetgana    112    

106

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

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

01.07.2025    9505    krasnoshchekovpavel    5    

67

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

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

10.04.2025    8714    Neti    0    

41

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

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

27.02.2025    15745    ovetgana    50    

93

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

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

24.12.2024    13327    Akcium    17    

46

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

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

20.08.2024    9843    AlexeyPROSTO_1C    1    

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

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