Преобразование обычного запроса в схему запроса и наоборот

13.10.14

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

Хотите понять, что такое Схема запроса? Научиться формировать запросы по-новому? Редактировать их? Использовать все удобства нового функционала 1с в работе?

Скачать файлы

Наименование Файл Версия Размер
Преобразователь Запрос в СхемуЗапроса 1.6 .epf
.epf 33,64Kb
156
.epf 1.2 33,64Kb 156 Скачать

Новая версия 1.3  

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

В Версии 1.2 устранены ошибки 

1. Если поле запроса текст

2. Если поле запроса это табличная часть

3. Если источник запроса Виртуальная таблица с параметрами

Добалена возможность формировать код схемы запроса с минумум коментариев и без установки данных равных данным по умолчанию.

В Версии 1.3 устранены ошибки 


СхемаЗапроса

См. также

SALE! 20%

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

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

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

13000 10400 руб.

02.09.2020    121617    670    389    

711

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

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

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

13.02.2024    5740    KawaNoNeko    23    

23

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

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

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

1 стартмани

31.01.2024    2000    2    Yashazz    0    

29

Запрос 1С copilot

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

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

5 стартмани

15.01.2024    6279    30    mkalimulin    25    

49

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

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

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

14.12.2023    1742    vandalsvq    7    

29

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

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

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

06.12.2023    5386    user1923546    26    

43

Начните уже использовать хранилище запросов

HighLoad оптимизация Запросы

Очень немногие из тех, кто занимается поддержкой MS SQL, работают с хранилищем запросов. А ведь хранилище запросов – это очень удобный, мощный и, главное, бесплатный инструмент, позволяющий быстро найти и локализовать проблему производительности и потребления ресурсов запросами. В статье расскажем о том, как использовать хранилище запросов в MS SQL и какие плюсы и минусы у него есть.

11.10.2023    16168    skovpin_sa    14    

98
Вознаграждение за ответ
Показать полностью
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Yashazz 4709 13.10.14 11:29 Сейчас в теме
Что, и всякие криво-косо написанные запросы тоже берёт?
А то конструктор запроса, бывает, сам такое состряпает, что сам же прочитать не в силах, ошибается и жалуется.
2. sassas 126 13.10.14 12:04 Сейчас в теме
(1) Yashazz, Проблемы с конструктором только бывают если одни и теже псевдонимы используешь в разных местах.. Если конструртор запроса схавает твой запрос то и здесь он пройдет.
4. Yashazz 4709 13.10.14 16:50 Сейчас в теме
(2) Да ну? Мало вы работали с конструктором запроса, значит. Попробуйте сделать простейшее условие на пустую строку и посмотрите, как он себя поведёт. При разных значениях флажка произвольности.
6. DrAku1a 1679 15.10.14 07:09 Сейчас в теме
(4) Работаю с запросами плотно и много. Глюки в конструкторе - вещь очень редкая. В большинстве случаев, он перед сохранением запросов - выдает предупреждение (например, пытаемся проиндексировать выборку или наоборот получить итоги / отсортировать создаваемую внутреннюю таблицу).
Проигнорируете предупреждение - и он сформирует текст запроса с ошибкой.
Попробуйте сделать простейшее условие на пустую строку и посмотрите, как он себя поведёт. При разных значениях флажка произвольности.
Это не ошибка. Просто поле условий так создано, что справа указывается имя переменной, а не значение. Как раз для того, чтобы можно было извратиться и указать значение - и придуман флажок произвольности.
Дмитрий74Чел; iov; +2 Ответить
3. dj_serega 390 13.10.14 16:23 Сейчас в теме
Занимательно. Надеюсь пригодится в быту :)
5. ekaruk 4896 14.10.14 02:25 Сейчас в теме
Вцелом идея красивая.
Не всегда работает.
Попробовала на запросе из этого поста http://infostart.ru/public/307045/
Сначала ругнулся на синтаксическую ошибку в сформированном тексте.
Покопавшись, нашла в тексте строку
НовыйПорядок=НовыйПакет.Порядок.Добавить(НовыйПакет.Колонки[1));
Исправила.
При запуске выдает ошибку "Переменная не определена (СхемаПриемник)"
Попыталась сформировать конструктором несколько запросов.
Простые преобразует. Более сложные нет.
7. пользователь 15.10.14 10:53
Сообщение было скрыто модератором.
...
8. PiccaHut001 15.10.14 13:14 Сейчас в теме
Схемы запросов - реинкарнация построителя отчётов. Сейчас, когда есть СКД, построитель бесполезен.
9. xten 47 16.10.14 00:23 Сейчас в теме
Я правильно понял, что ниже версии платформы 8.3.5 работать не будет ?
10. sassas111 17.10.14 15:05 Сейчас в теме
Воровать нехорошо. Это моя обработка. В обработке две ошибки 1. Если таблица запроса это табличная часть 2. если поле запроса это строка. Я бы выложил исправленную но .......
11. qwed557 30 19.10.14 19:46 Сейчас в теме
(10) давай выкладывай, с удовольствием скачаю, хотя пока нигде на практике не применял схему запроса
12. sassas111 19.10.14 20:12 Сейчас в теме
(11) qwed557, На практике я вижу одно применение. Это если неохото менять типовой запрос, запихиваешь его в схему , изменяешь и достаешь обратно. Есть шанс что даже при изменении типового запроса нечего не придется корректировать..
Хорошо работает если хочешь программно изменить динамический список с произволным запросом. а на форме менят нечего не охота.
13. PiccaHut001 20.10.14 12:13 Сейчас в теме
(12) чёт не понял, чем в вашем случае схема лучше стрзаменить? Если любимые разработчики типовых уберут из типового запроса таблицу, то стрзаменить и схемы запросов перестанут добавлять поля в выборку/условия. Выгоды не заметил
14. userGJ 20.10.14 13:42 Сейчас в теме
Не работает для объединения таблиц.
Например:

ВЫБРАТЬ
  Банки.Наименование КАК Наименование
ИЗ  Справочник.Банки КАК Банки
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
  Валюты.Код
ИЗ  Справочник.Валюты КАК Валюты


генерит такой код:

Схема=Новый СхемаЗапроса();
	НовыйПакет= Схема.ПакетЗапросов[0];
	НовыйПакет.Операторы[0].Источники.Добавить("Справочник.Банки","Банки");  
	НовыйПакет.Операторы[0].ВыбираемыеПоля.Добавить("Банки.Наименование");  
	НовыйПакет.Операторы.Добавить();  //Тип: ОператорВыбратьСхемыЗапроса.  
	НовыйПакет.Операторы[1].Источники.Добавить("Справочник.Валюты","Валюты");
	НовыйПакет.Операторы[1].ВыбираемыеПоля.Добавить("Валюты.Код");


что выдаст такой запрос:

ВЫБРАТЬ
	Банки.Наименование,
	NULL КАК Код
ИЗ  Справочник.Банки КАК Банки
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
	NULL,
	Валюты.Код
ИЗ  Справочник.Валюты КАК Валюты
Показать


чтобы исправить, надо строку:
НовыйПакет.Операторы[1].ВыбираемыеПоля.Добавить("Валюты.Код");
заменить на:
  НовыйПакет.Колонки[0].Поля.Установить(1, НовыйПакет.Операторы[1].ВыбираемыеПоля.Добавить("Валюты.Код"));
15. sassas 126 21.10.14 11:30 Сейчас в теме
(14) userGJ, иногда и ваш вариант не проходит. Приходится создавать поля источника а потом их все устанавливать . В версии 1.3 ошибка исправлена
16. serg_khv 19 22.10.14 13:11 Сейчас в теме
При попытке конвертации Индекса Временной таблицы вылетела ошибка:
{Форма.Форма.Форма(1152)}: Значение не является значением объектного типа (Колонки)
Приемник.Индекс.Добавить(НовыйПакет.Колонки[ИндексКолонки]);
Конвертировалась Временная таблица, получаемая объединением двух запросов из разных регистров. Индекс по полю Номенклатура, одинаковому в обоих регистрах.
При просмотре по точке останова НовыйПакет - это строка "НовыйПакет" и Колонок у нее быть не может. (
17. sassas 126 22.10.14 13:19 Сейчас в теме
(16) serg_khv, Укажите версию обработки и сам запрос
18. serg_khv 19 24.10.14 07:46 Сейчас в теме
Версия 1.6 разобрала мой запрос без ошибок. Спасибо! ))
19. serg_khv 19 24.10.14 08:47 Сейчас в теме
Еще нашел... )При удалении ВТ надо сделать чтоб вместо:
НовыйПакет=Схема.ПакетЗапросов.Добавить(Новый ОписаниеТипов("ЗапросУничтоженияТаблицыСхемыЗапрос"));
было:
НовыйПакет=Схема.ПакетЗапросов.Добавить(Тип("ЗапросУничтоженияТаблицыСхемыЗапроса"));
Тогда не выдает ошибку.
20. sashocq 193 30.10.14 18:24 Сейчас в теме
Еще не пробовал, но "+" однозначно. Как-то возникла необходимость модификации запроса программно через схему и голову сломал, пока нашел, как это делается. Очень мало примеров в синтакс-помощнике.
21. jafariuse 30.06.16 14:05 Сейчас в теме
В версии 1.6 ошибка.
в запросе вида
ВЫБРАТЬ
	Таб.К КАК К
ПОМЕСТИТЬ Вт_Данные
ИЗ
	&Таб КАК Таб 

формирует строку
Таб=НовыйПакет.Операторы[0].Источники.Добавить(Тип("ОписаниеВременнойТаблицыСхемыЗапроса"),"Таб"); 

а следует
Таб=НовыйПакет.Операторы[0].Источники.Добавить(Тип("ОписаниеВременнойТаблицыСхемыЗапроса"),"&Таб","Таб"); 
22. Sam13 342 05.12.23 11:39 Сейчас в теме
Автору невероятный респект. Эта обработка очень часто спасает.
Запомнить все тонкости схемы запроса просто невозможно.
Обработка очень полезная
23. Sam13 342 08.12.23 11:05 Сейчас в теме
(21) Все верно. В строке 692 формы обработки вместо
Код=Псевдоним+"="+НовыйОператор+".Источники.Добавить(Тип(""ОписаниеВременнойТаблицыСхемыЗапроса""),"""+Псевдоним+"""); "; ДобавитьКОД(ПФ,0,КОД);
подставить
ИмяТаблицы = пакет.Операторы[ОператорИндекс].Источники[ИсточникИндекс].Источник.ИмяТаблицы;
Код=Псевдоним+"="+НовыйОператор+".Источники.Добавить(Тип(""ОписаниеВременнойТаблицыСхемыЗапроса""),"""+ИмяТаблицы+""","""+Псевдоним+"""); "; ДобавитьКОД(ПФ,0,КОД);

Должно помочь
Оставьте свое сообщение