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

06.12.23

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

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

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

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

 

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

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

 

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

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

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

 

См. также

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

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

10000 руб.

02.09.2020    140923    772    391    

803

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

Рассмотрим быстрый алгоритм поиска дублей с использованием hash функции по набору полей шапки и табличных частей.

08.07.2024    1515    ivanov660    9    

21

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

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

15.05.2024    5269    implecs_team    6    

44

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

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

11.04.2024    2934    andrey_sag    10    

32

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

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

13.02.2024    6765    KawaNoNeko    23    

26

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

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

1 стартмани

31.01.2024    2602    2    Yashazz    0    

33

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

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

15.01.2024    8374    88    mkalimulin    32    

60

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

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

14.12.2023    2270    vandalsvq    7    

29
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. kser87 2454 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 2454 09.11.22 23:15 Сейчас в теме
(8) точно. Много неудобств в схеме запроса. Вспомнил, что лично мне еще мешало отсутствие возможности работать со сложными полями. Например, Выбор когда тогда в полях запроса. Функций тоже не припоминаю. Приходилось ручками писать.
2. coollerinc 192 09.11.22 10:35 Сейчас в теме
Пробовал использовать схему запросов, вместо замены текста. Но так и не понял выйгрыша. Что бы изменить условие, порой приходилось писать еще больше кода, чем просто СтрЗаменить. Добавил новую временную таблицу и все нахрен сломалось в схеме. Со временем в индексах уже запутался: что у тебя под индексом 7, а что под индексом 8.
Revachol; rpgshnik; Yashazz; dabu-dabu; ltfriend; sapervodichka; Dach; +7 Ответить
3. RocKeR_13 1345 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 1345 09.11.22 16:04 Сейчас в теме
(5) Схемы компоновки данных используются в качестве своеобразного конструктора показателя для расчета премии. Они все компонуются программно вне контекста отчета.

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


Вот в процедуре ПрименитьНастройкиРасчетаПремий и модифицируется текст запроса с использованием схемы запроса
12. SlavaKron 10.11.22 09:19 Сейчас в теме
(6)
Схемы компоновки данных используются в качестве своеобразного конструктора показателя для расчета премии.
А как это выглядит в пользовательском интерфейсе?
13. RocKeR_13 1345 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 1345 09.11.22 16:05 Сейчас в теме
(4)
Схему хорошо использовать для чего-то сложного.

Именно так, в (3) это уже отметил
10. shard 280 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 Сейчас в теме
СхемаЗапроса - это та возможность, которую желательно использовать по-немногу. Сложное редактирование текстов запросов через СхемаЗапроса превращается в отборный лапшекод
Оставьте свое сообщение