запросы в 1С СКД

Запросы 1С СКД. Возможности и ограничения

В этом цикле статей мы рассмотрим особенности работы системы компоновки данных (СКД) с запросами в 1С.
При использовании подсистемы СКД 1C первое, с чем вы столкнетесь это необходимость написания запроса. Конечно, система компоновки данных умеет строить отчеты без использования запросов, например с помощью набора данных объект вы можете сделать отчет из таблицы значений. Но 90% отчетов, которые вы будете создавать с помощью СКД, потребуют написания запроса. Поэтому важно знать об особенностях работы с запросами в 1С СКД, ограничениях, способах и инструментах поиска ошибок.
Если у вас хоть раз возникал вопрос: почему запрос в консоли запросов выдает правильные данные, а в вашем отчете на СКД нет, то в этой статье вы найдете ответ.

Возможности и ограничения языка запросов при использовании в 1С СКД

В СКД можно использовать практически все возможности языка запросов 1С:

1
Пакетные запросы. Временные таблицы
2
Объединения, вложенные запросы, группировка, сортировка, опции (ПЕРВЫЕ, РАЗЛИЧНЫЕ)
3
Параметры в запросах. При этом параметры, определенные в запросе автоматически, заполняются в 1С СКД на закладке «Параметры»
4
Обращение к внешним источникам данных. С помощью СКД вы можете связывать разные внешние источники данных, используя несколько наборов данных, что невозможно сделать в одном запросе. Правда, при этом нужно учитывать особенности использования наборов данных в СКД

В системе компоновки данных (СКД) недоступны:

1
Секция ИТОГИ. Использование данной секции в запросе добавляет в стандартную «плоскую» выборку дополнительные итоговые записи. В СКД такие записи добавляются самой подсистемой по своим правилам, поэтому данная секция для СКД неактуальна.
2
Предложение «АВТОУПОРЯДОЧИВАНИЕ». Обычно эта опция языка запросов редко используется, а в отчетах она практически не имеет смысла.

В СКД дополнительно с помощью расширения языка запросов 1С для СКД имеется возможность:

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

Расширение языка запросов 1С для СКД

В предыдущем разделе мы определили, что язык запросов, используемый в 1С СКД, имеет больше возможностей, чем просто запросы, выполняемые через объект платформы «Запрос». К сожалению, упорядоченной документации по этому разделу в 1С нет. Крупицы информации разбросаны: по справке к платформе, ИТС, различным неофициальным интернет ресурсам. Я постараюсь коротко объяснить основную суть данного дополнения к языку запросов и дам ссылки на источники информации, где вы можете более подробно изучить эту тему.
Итак.
Лучше всего описан в официальной документации механизм использования (подключения) характеристик объектов конфигурации. Правда синтаксис в этой статье отличается от текущего, но смысл описанного от этого не страдает. Коротко этот механизм также описан в справке к платформе (с актуальным синтаксисом):
Расширение языка запросов 1С СКД
Как известно, во многих типовых конфигурациях в 1С используется механизм дополнительных реквизитов, когда к объектам конфигурации пользователь может самостоятельно, без изменения конфигурации, добавить дополнительные реквизиты.
Чтобы предоставить пользователю возможность работы с этими реквизитам в отчетах, построенных на СКД, используется механизм подключения характеристик. С помощью специального оператора «ХАРАКТЕРИСТИКИ» программист может привязать характеристики к выбранным объектам отчета. При этом необходимо указать тип объекта, к которому производится подключение характеристик, список дополнительных свойств для данного объекта, таблицу, в которой хранятся значения этих свойств.
Например, так:

Кроме подключения характеристик расширение языка запросов используется для:

1
Управления автоматическим заполнением списка полей набора данных запрос
2
В том числе для управления заполнением доступности поля (группа полей «Ограничение поля» и «Ограничение реквизитов»)
3
Управления необязательными таблицами, необязательными условиями, необязательными параметрами
4
Управление местом применения отбора (в параметрах виртуальных таблиц, в секции «ГДЕ», в секции «ИМЕЮЩИЕ», в конкретном запросе пакета)
С описанием работы этой части расширения в официальной документации совсем плохо. Немного информации есть в справке к платформе. Про работу с параметрами хорошо описано на диске ИТС.
Все в одном месте хорошо описано в этой статье
Важно также понимать, что элементы расширения языка запросов являются управляющими конструкциями. Они не выполняются платформой непосредственно – с их помощью СКД вносит в окончательный запрос некоторые модификации (добавляет или исключает какие-то таблицы, условия) в зависимости от контекста выполнения отчета. Об этом мы поговорим в следующих разделах статьи
А если хочешь стать профессионалом в СКД, для тебя разработан учебный курс по СКД от автора статей.