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

13.10.14

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Преобразователь Запрос в СхемуЗапроса 1.6 .epf
.epf 33,64Kb ver:1.2
159
159 Скачать (1 SM) Купить за 1 850 руб.

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

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

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

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

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

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

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

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


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

См. также

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

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

15500 руб.

02.09.2020    183293    1020    403    

966

Обновление 1С Запросы Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 Абонемент ($m)

Данный инструмент помогает анализировать доработанную конфигурацию после обновления на новый релиз и находить «битые» тексты запросов, в которых участвуют несуществующие в новом релизе метаданные.

2 стартмани

06.02.2025    2121    17    XilDen    26    

36

Запросы Программист Платформа 1С v8.3 Запросы 1C:Бухгалтерия Бесплатно (free)

В статье приведена удобная возможность отладки исполняемого запроса динамического списка.

03.12.2024    5585    artemusII    11    

23

Запросы Программист Бесплатно (free)

Увидел cheatsheet по SQL и захотелось нарисовать подобное, но про запросы.

18.10.2024    12986    sergey279    18    

65

Запросы Программист Платформа 1С v8.3 Запросы 1C:Бухгалтерия Бесплатно (free)

Столкнулся с интересной ситуацией, которую хотел бы разобрать, ввиду её неочевидности. Речь пойдёт про использование функции запроса АВТОНОМЕРЗАПИСИ() и проблемы, которые могут возникнуть.

11.10.2024    8094    XilDen    36    

90

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

Работая с типовыми отчетами в конфигурациях «Зарплата и управление персоналом, редакция 3», «Зарплата и кадры государственного учреждения, редакция 3» и подобных, в схемах компоновки данных можно встретить конструкции запросов, которые обращаются к некоторым виртуальным таблицам.

20.08.2024    3084    PROSTO-1C    0    

23

Запросы Программист Запросы Бесплатно (free)

Отлаживая взаимодействие с базой данных, мы регулярно сталкиваемся с зависающими или подозрительно долго выполняющимися обращениями, негативно влияющими на производительность. О том, как в PostgreSQL выявить подозрительные запросы, основываясь на доступной о них информации, расскажем в статье.

16.08.2024    10661    user1840182    5    

29
Вознаграждение за ответ
Показать полностью
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Yashazz 4839 13.10.14 11:29 Сейчас в теме
Что, и всякие криво-косо написанные запросы тоже берёт?
А то конструктор запроса, бывает, сам такое состряпает, что сам же прочитать не в силах, ошибается и жалуется.
2. sassas 126 13.10.14 12:04 Сейчас в теме
(1) Yashazz, Проблемы с конструктором только бывают если одни и теже псевдонимы используешь в разных местах.. Если конструртор запроса схавает твой запрос то и здесь он пройдет.
4. Yashazz 4839 13.10.14 16:50 Сейчас в теме
(2) Да ну? Мало вы работали с конструктором запроса, значит. Попробуйте сделать простейшее условие на пустую строку и посмотрите, как он себя поведёт. При разных значениях флажка произвольности.
6. DrAku1a 1757 15.10.14 07:09 Сейчас в теме
(4) Работаю с запросами плотно и много. Глюки в конструкторе - вещь очень редкая. В большинстве случаев, он перед сохранением запросов - выдает предупреждение (например, пытаемся проиндексировать выборку или наоборот получить итоги / отсортировать создаваемую внутреннюю таблицу).
Проигнорируете предупреждение - и он сформирует текст запроса с ошибкой.
Попробуйте сделать простейшее условие на пустую строку и посмотрите, как он себя поведёт. При разных значениях флажка произвольности.
Это не ошибка. Просто поле условий так создано, что справа указывается имя переменной, а не значение. Как раз для того, чтобы можно было извратиться и указать значение - и придуман флажок произвольности.
Дмитрий74Чел; iov; +2 Ответить
3. dj_serega 394 13.10.14 16:23 Сейчас в теме
Занимательно. Надеюсь пригодится в быту :)
5. ekaruk 5006 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 49 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 194 30.10.14 18:24 Сейчас в теме
Еще не пробовал, но "+" однозначно. Как-то возникла необходимость модификации запроса программно через схему и голову сломал, пока нашел, как это делается. Очень мало примеров в синтакс-помощнике.
21. jafariuse 30.06.16 14:05 Сейчас в теме
В версии 1.6 ошибка.
в запросе вида
ВЫБРАТЬ
	Таб.К КАК К
ПОМЕСТИТЬ Вт_Данные
ИЗ
	&Таб КАК Таб 

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

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

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