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

20.04.20

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

В этом цикле статей мы рассмотрим особенности работы системы компоновки данных с запросами в 1С.
 
 
 
 
 
 

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

 

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

Если у вас хоть раз возникал вопрос: почему запрос в консоли запросов выдает правильные данные, а в вашем отчете на СКД нет, то в этой статье вы найдете ответ.

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

  В 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    119917    656    389    

701

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

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

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

3 стартмани

05.02.2024    3889    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    8029    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    5708    15    kalyaka    5    

85

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

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

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

18.09.2023    6330    accounting_cons    5    

29

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

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

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

01.09.2023    4407    KVIKS    15    

80
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Поручик 4670 10.04.20 08:18 Сейчас в теме
Это для совсем чайников?
rpgshnik; Vyacheslide; +2 Ответить
2. toypaul 63 10.04.20 10:35 Сейчас в теме
(1) Привет. Это вводная часть одной большой статьи. Планируем выложить все части в ближайшее время. Из этой статьи будут ссылки на все остальные части
3. herfis 496 10.04.20 11:01 Сейчас в теме
Предложение «АВТОУПОРЯДОЧИВАНИЕ». Обычно эта опция языка запросов редко используется, а в отчетах она практически не имеет смысла

Да ладно, редко используется. Часто использую. А как иначе? Явно сортировать по наименованию? Дык автоупорядочивание удобнее. В отчетах она не имеет смысла ровно по той же самой причине, что и ИТОГИ. СКД и итогами и упорядочиванием управляет сама.
4. toypaul 63 10.04.20 11:09 Сейчас в теме
(3) Давайте возьмем любую типовую конфигурацию и посчитаем в скольких запросах мы найдем АВТОУПОРЯДОЧИВАНИЕ. По мне так вообще плохая практика полагаться на что-то "автоматическое". Правильно именно сортировать по наименованию.

Пусть будет в моем мире - обычно, а в вашем нет. На этом и сойдемся. Может кто-то еще добавит.
5. herfis 496 10.04.20 14:43 Сейчас в теме
(4)
По мне так вообще плохая практика полагаться на что-то "автоматическое".

Только если не понимать, как оно работает.
6. stein13 9 10.04.20 20:27 Сейчас в теме
СКД - это конечно крутой инструмент, если им владеть, но не все возможно решить через СКД, к сожалению...
7. user1392234 11.04.20 08:47 Сейчас в теме
Спасибо, интересная тема!
8. ХамитоваРайса 11.04.20 08:56 Сейчас в теме
А как так? Автор статьи - Павел Шемякин, а публикует на Infostart Александр Овчинников? С чем связана такая странность? Автор чересчур скромный?
11. toypaul 63 13.04.20 08:14 Сейчас в теме
(8) Статья была написана в рабочее время, поэтому публикуется с рабочего аккаунта
9. Yashazz 4707 12.04.20 17:22 Сейчас в теме
Может, я чего не понял, но это что, очередной репост Хрусталёвой в погоне за стартманями?..
Не говоря уж о том, что Пермитин очень даже неплохо всё уже расписал, смысла повторяться никакого. Чем эта публикация отличается в лучшую сторону от его работ, а?
10. toypaul 63 13.04.20 08:14 Сейчас в теме
(9) Надо подождать когда будут выложены все части статьи. Потом сами и расскажите - чем лучше, чем хуже.
12. Cyberhawk 135 08.05.20 17:15 Сейчас в теме
Если у вас хоть раз возникал вопрос: почему запрос в консоли запросов выдает правильные данные, а в вашем отчете на СКД нет, то в этой статье вы найдете ответ
А где ответ?
13. toypaul 63 12.05.20 08:12 Сейчас в теме
(12) надо прочитать все части
14. Cyberhawk 135 12.05.20 09:16 Сейчас в теме
(13) По тексту публикации это, увы, никак не прослеживается.
В аннотации читаем "В этом цикле статей", в гиперссылке в конце читаем "Следующая статья", т.е. текущая публикация как раз позиционируется как "эта статья". Поэтому рекомендую то, что выделено жирным в моем предыдущем комментарии, исправить.
Оставьте свое сообщение