Схема запроса: практические примеры использования

06.12.23

Разработка - Запросы

Учимся использовать схему запроса.

Несмотря на то, что объект СхемаЗапроса стал доступен довольно-таки давно (в платформе 8.3.5), коллеги продолжают работать с текстом запроса по старинке как с текстом. Попробуем начать с малого и использовать данный объект на нескольких простых примерах, с которыми мне пришлось столкнуться в реальных задачах.

 
 Пример 1. Модификация динамических списков
 
 Пример 2. Программное добавление динамического списка на форму
 
 Пример 3. Динамическое редактирование запроса СКД

 

Жду от вас замечаний, вопросов, комментариев и предложений! Надеюсь, в будущем пополню данную статью и другими примерами использования объекта СхемаЗапроса!

Напоследок, конечно же, хотелось бы выразить огромную благодарность Евгении Карук и ее замечательной статье Объектная модель запроса "Схема запроса" - теория и примеры использования, без которой, предполагаю, потратил бы в свое время не один час на разбор данного механизма платформы!

 

Что ещё почитать по теме:

Модель запроса

Объектная модель запроса "Схема запроса" 2

 

См. также

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

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

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

10000 руб.

02.09.2020    129442    700    390    

749

Как посмотреть итоговый запрос в отчете СКД

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

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

15.05.2024    1975    implecs_team    4    

25

Пропорциональное распределение в запросе с использованием АвтоНомерЗаписи()

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

Часто поступают задачи по произвольному распределению общих сумм. После распределения иногда пропадают копейки. Суть решения добавить АвтоНомерЗаписи() в ВТ распределения, и далее используя функции МАКСИМУМ или МИНИМУМ можем положить разницу копеек в первую или последнюю строку знаменателя распределения.

11.04.2024    2603    andrey_sag    10    

32

Для чего используют конструкцию запроса "ГДЕ ЛОЖЬ" в СКД на примере конфигурации 1С:ERP

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

В типовых конфигурациях разработчики компании 1С иногда используют в отчетах, построенных на СКД, такую конструкцию, как "ГДЕ ЛОЖЬ". Такая конструкция говорит о том, что данные в запросе не будут получены совсем. Для чего же нужен тогда запрос?

13.02.2024    6289    KawaNoNeko    23    

26

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

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

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

1 стартмани

31.01.2024    2278    2    Yashazz    0    

31

Запрос 1С copilot

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

Пишем на человеческом языке, что нам надо, и получаем текст запроса на языке 1С. Используются большие языковые модели (LLM GPT) от OpenAI или Яндекс на выбор.

15.01.2024    7079    39    mkalimulin    32    

53

PrintWizard: поддержка представлений ЗУП в конструкторе

Инструментарий разработчика Запросы Платформа 1С v8.3 Бесплатно (free)

Одной из интересных задач, стоящих в процессе разработки, была поддержка механизма представлений в ЗУП. Но не просто возможность исполнения запросов с ними. Основная проблема была в том, чтобы с ними было удобно работать, а именно: создавать, модифицировать и отлаживать. Кратко о том, что в итоге получилось...

14.12.2023    2011    vandalsvq    7    

29

Консоль запросов УФ 8.3.2.24.12 (мод от Dr.Zombi)

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

Работа с запросом и СКД, Полная поддержка пакетных запросов, временных таблиц. Главное скорость отладки запроса и данных, а красота вторична.

1 стартмани

07.12.2023    3471    52    DrZombi    54    

21
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. kser87 2444 09.11.22 09:52 Сейчас в теме
В схеме запросов есть один тупейший момент. при добавлении 2 таблиц 1Ска иногда сама выставляет соединения. как при работе с конструктором запросов. мешает сильно
user847517; dhurricane; RocKeR_13; +3 Ответить
8. dhurricane 09.11.22 20:48 Сейчас в теме
(1) Еще один тупейший момент: добавление псевдонимов для выражений расширения языка запросов схемы компоновки данных. Тоже как при работе с конструктором. В итоге СКД работает некорректно, часть сложных отборов может сломаться. Так что я бы предостерег желающих исправлять запросы СКД схемой запросов.
zqzq; kser87; +2 Ответить
9. kser87 2444 09.11.22 23:15 Сейчас в теме
(8) точно. Много неудобств в схеме запроса. Вспомнил, что лично мне еще мешало отсутствие возможности работать со сложными полями. Например, Выбор когда тогда в полях запроса. Функций тоже не припоминаю. Приходилось ручками писать.
2. coollerinc 189 09.11.22 10:35 Сейчас в теме
Пробовал использовать схему запросов, вместо замены текста. Но так и не понял выйгрыша. Что бы изменить условие, порой приходилось писать еще больше кода, чем просто СтрЗаменить. Добавил новую временную таблицу и все нахрен сломалось в схеме. Со временем в индексах уже запутался: что у тебя под индексом 7, а что под индексом 8.
Revachol; rpgshnik; Yashazz; dabu-dabu; ltfriend; sapervodichka; Dach; +7 Ответить
3. RocKeR_13 1329 09.11.22 10:49 Сейчас в теме
(2) Во многих случаях так действительно проще и сам продолжаю использовать СтрЗаменить. Тут ситуация чем-то схожа с формированием XML-файла с использованием XDTO: иногда все же проще использовать ЗаписьXML) Но схема запроса дает возможность работать с запросом не просто как с текстом, а как с объектом: в случае необходимости сложных манипуляций будет проще использовать схему запроса, чем писать некий парсер текста. Плюс исходный запрос остается читаемым для конструктора запросов. В этом отношении самый удачный - 3 пример: когда встала данная задача, в базе было добавлено около 20 макетов со схемами компоновки данных, почти во всех использовалась виртуальная таблица оборотов выручки (где-то и не раз); в итоге задача решилась 20 строчками кода вместо рутинной корректировки всех запросов и на будущее освободила от необходимости прописывать эти отборы в новых СКД.
Andreev.a; +1 Ответить
5. WorkerPavel 09.11.22 15:47 Сейчас в теме
(3)Код из примера 3 вызывается в "ПриКомпоновкеРезультата" или где?
6. RocKeR_13 1329 09.11.22 16:04 Сейчас в теме
(5) Схемы компоновки данных используются в качестве своеобразного конструктора показателя для расчета премии. Они все компонуются программно вне контекста отчета.

Кусок кода:
Функция ВыполнитьСхемуКомпоновкиДанных(ВариантСхемы, ЗначенияПараметров, ЗначениеПоУмолчанию = 0) Экспорт
	
	ТЗ 					= Новый ТаблицаЗначений;
	Если ВариантСхемы.ИмяПредопределенногоМакета = "Произвольная" Тогда
		Схема = ВариантСхемы.ХранилищеСхемыКомпоновкиДанных.Получить();
	Иначе
		Схема = Справочники.ВариантыСхемКомпоновкиДанных.ПолучитьМакет(ВариантСхемы.ИмяПредопределенногоМакета);
	КонецЕсли;
	ПрименитьНастройкиРасчетаПремий(Схема.НаборыДанных[0].Запрос, ЗначенияПараметров);
Показать


Вот в процедуре ПрименитьНастройкиРасчетаПремий и модифицируется текст запроса с использованием схемы запроса
12. SlavaKron 10.11.22 09:19 Сейчас в теме
(6)
Схемы компоновки данных используются в качестве своеобразного конструктора показателя для расчета премии.
А как это выглядит в пользовательском интерфейсе?
13. RocKeR_13 1329 10.11.22 10:14 Сейчас в теме
(12) На первом скрине - это элемент справочника, храняющего схемы компоновки данных. Имя схемы содержит список предопределенных в расширении макетов со схемами; можно указать имя схемы "Произвольная" и в толстом клиенте добавить свою в режиме предприятия. Ну и самое интересное начинается при редактировании формулы расчета премии (второй скриншот): жирным шрифтом выделены использованные схемы компоновки данных, после "&" указаны значения интерактивных параметров в виде "ИмяПараметра=ЗначениеПараметра", которые задают сами пользователи при переносе схемы в формулу (gif-анимация).

Если будут еще вопросы по данному механизму, предлагаю переместить обсуждение собственно в интересующую вас публикацию https://infostart.ru/1c/articles/1411336/
Прикрепленные файлы:
SlavaKron; +1 Ответить
4. avp449 09.11.22 14:05 Сейчас в теме
На мой взгляд, в простых случаях (например, при изменении условий в запросе) лучше использовать старый добрый СтрЗаменить.

Схему хорошо использовать для чего-то сложного. Например, добавить блок Объединить, добавить соединение с таблицей. Также если нам важны типы полей, поможет схема.

У схемы пара особенностей. Во-первых, её инициализация при установке текста запроса - это просто долго, поскольку она анализирует дерево метаданных. Какой-нибудь сложный запрос легко может дольше парситься схемой, чем выполняться.

Во-вторых, она при редактировании автоматически делает часть работы. Например, при соединении с таблицей автоматически могут добавиться связи; при добавлении поля в одном из блоков объединения оно попадает куда попало. Впрочем, если это всё учитывать, с этим можно жить.
7. RocKeR_13 1329 09.11.22 16:05 Сейчас в теме
(4)
Схему хорошо использовать для чего-то сложного.

Именно так, в (3) это уже отметил
10. shard 279 10.11.22 02:39 Сейчас в теме
(4)
Схему хорошо использовать для чего-то сложного

получается формирование текста запроса динамического списка номенклатуры формы подбора в документ продажи в конфигурации УТ 11.5.9 (функции ПодборТоваровСервер.ТекстЗапросаСпискаФормыПодбора и ПодборТоваровСервер.ПодстрокаЗаменыПараметраШаблонаТекстаЗапроса) - случай несложный? =)
11. Aletar 10.11.22 07:15 Сейчас в теме
В контексте темы можно ещё вот эту достойную публикацию по работе со схемой запроса упомянуть: https://infostart.ru/1c/articles/1390402/
Aleskey_K; JohnyDeath; RocKeR_13; +3 Ответить
14. dhurricane 10.11.22 14:06 Сейчас в теме
15. alex_sayan 10.11.22 14:41 Сейчас в теме
СхемаЗапроса - это та возможность, которую желательно использовать по-немногу. Сложное редактирование текстов запросов через СхемаЗапроса превращается в отборный лапшекод
Оставьте свое сообщение