Платформа предлагает разработчику собственно Конструктор запроса и Конструктор запроса с обработкой результата. В первом случае, конструктор позволяет чисто визуальными средствами определить выборку данных из таблиц системы:
Во втором случае с результатом выборки могут быть сделаны определенные манипуляции:
Конструктор запросов работает как в режиме Предприятие (как обработка Консоль запросов), так и в Конфигураторе. Использование в режиме Предприятие позволяет квалифицированным пользователям самостоятельно получать выборки данных, для которых нет типовых отчетов.
Из Конфигуратора, конструктор может быть вызван правой кнопкой прямо из текста модуля:
либо стоя в модуле, из главного меню Текст:
Вопрос 04.41 экзамена 1С:Профессионал по платформе. Использование конструктора запросов позволяет:- Сформировать программный код, содержащий создание объекта встроенного языка Запрос, текста запроса и получение результата выполнения запроса
- Верны ответы 1 и 3
- Все вышеперечисленное
Вопрос 04.42 экзамена 1С:Профессионал по платформе. Использование конструктора запроса с обработкой результата позволяет:
- Сформировать текст нового запроса
- Сформировать программный код, содержащий создание объекта встроенного языка Запрос, текста запроса, получение и обработку результата выполнения запроса
- Отредактировать текст имеющегося запроса
- Все вышеперечисленное
- Верны ответы 1 и 3
Вопрос 04.43 экзамена 1С:Профессионал по платформе. При сохранении текста запроса, открытого повторно с помощью конструктора запроса, без внесения в этот текст изменений:
- Весь первоначальный текст остается без изменений
- Из первоначального текста будут удалены только комментарии
- В первоначальном тексте комментарии останутся, а будут удалены только конструкции языка запросов построителя отчетов
- Из первоначального текста будут удалены и комментарии, и конструкции языка запросов построителя отчетов
Откроем данный запрос через Конструктор и закроем конструктор по Ок. Комментарий затрется:
Вопрос 04.44 экзамена 1С:Профессионал по платформе. Конструктор запросов может быть вызван:- С помощью пункта главного меню "Текст - Конструктор запроса…"
- С помощью кнопки "Конструкторы - Конструктор запросов" на закладке "Макеты" из окна редактирования объекта
- С помощью пункта всплывающего контекстного меню "Конструктор запроса…", появляющегося при нажатии в тексте модуля правой клавиши мыши
- Верно все вышеперечисленное
- Верны ответы 1 и 3
Вопрос 04.45 экзамена 1С:Профессионал по платформе. Кем может использоваться конструктор запросов?
- Разработчиками, так как необходимо знание языка запросов
- Квалифицированными пользователями без использования конфигуратора
- Верно все вышеперечисленное
- Нет верного ответа
Вопрос 04.46 экзамена 1С:Профессионал по платформе. На закладке "Таблицы и поля" конструктора запросов задают:
- Источники данных запросов, в качестве которых могут выступать реальные и виртуальные таблицы
- Набор полей из таблиц - источников данных запроса
- Поля в виде произвольного выражения
- Верны ответы 1 и 2
- Верно все вышеперечисленное
Вопрос 04.47 экзамена 1С:Профессионал по платформе. Для создания в конструкторе запросов вложенного запроса необходимо:
- Открыть закладку "Таблицы и поля". В командной панели над деревом "База данных" нажать кнопку "Добавить" или выбрать одноименный пункт контекстного меню
- Открыть закладку "Таблицы и поля". В командной панели над деревом "Таблицы" нажать кнопку "Добавить" или выбрать одноименный пункт контекстного меню
- Открыть закладку "Таблицы и поля". В командной панели над деревом "Поля" нажать кнопку "Добавить" или выбрать одноименный пункт контекстного меню
- В конструкторе запросов создать вложенный запрос нельзя
Результат:
Вопрос 04.48 экзамена 1С:Профессионал по платформе. Для создания в конструкторе запросов вычисляемого поля необходимо:- Открыть закладку "Таблицы и поля". В командной панели над деревом "Таблицы" нажать кнопку "Изменить текущий элемент". В открывшемся окне добавить новое поле
- Открыть закладку "Таблицы и поля". В командной панели над деревом "Поля" нажать кнопку "Добавить" или выбрать одноименный пункт контекстного меню
- Открыть закладку "Объединения/Псевдонимы". В командной панели над списком полей нажать кнопку "Добавить" или выбрать одноименный пункт контекстного меню
- Создать вычисляемое поле, можно только изменив текст запроса "вручную"
Вопрос 04.49 экзамена 1С:Профессионал по платформе. Для создания в запросе строк, сгруппированных с помощью агрегатных функций, на закладке "Группировка" конструктора запросов обязательно должны быть заполнены:
- Только список групповых полей. Указание суммируемых полей не обязательно
- Только список суммируемых полей, при этом остальные поля автоматически попадут в секцию СГРУППИРОВАТЬ ПО в тексте запроса
- Обязательным является указание как групповых, так и суммируемых полей
По остальным полям будет произведена группировка в тексте запроса:
Вопрос 04.50 экзамена 1С:Профессионал по платформе. В конструкторе запросов условия на значения агрегатных функций можно накладывать:- На закладке "Группировка", в списке суммируемых полей при выборе агрегатной функции
- На закладке "Условия"
- На закладке "Итоги", в списке итоговых полей при выборе агрегатной функции
- В конструкторе запросов задать условия на значения агрегатных функций нельзя
Платформа предлагает разработчику собственно Конструктор запроса и Конструктор запроса с обработкой результата. В первом случае, конструктор позволяет чисто визуальными средствами определить выборку данных из таблиц системы:
Во втором случае с результатом выборки могут быть сделаны определенные манипуляции:
Конструктор запросов работает как в режиме Предприятие (как обработка Консоль запросов), так и в Конфигураторе. Использование в режиме Предприятие позволяет квалифицированным пользователям самостоятельно получать выборки данных, для которых нет типовых отчетов.
Из Конфигуратора, конструктор может быть вызван правой кнопкой прямо из текста модуля:
либо стоя в модуле, из главного меню Текст:
Вопрос 04.41 экзамена 1С:Профессионал по платформе. Использование конструктора запросов позволяет:- Сформировать программный код, содержащий создание объекта встроенного языка Запрос, текста запроса и получение результата выполнения запроса
- Верны ответы 1 и 3
- Все вышеперечисленное
Вопрос 04.42 экзамена 1С:Профессионал по платформе. Использование конструктора запроса с обработкой результата позволяет:
- Сформировать текст нового запроса
- Сформировать программный код, содержащий создание объекта встроенного языка Запрос, текста запроса, получение и обработку результата выполнения запроса
- Отредактировать текст имеющегося запроса
- Все вышеперечисленное
- Верны ответы 1 и 3
Вопрос 04.43 экзамена 1С:Профессионал по платформе. При сохранении текста запроса, открытого повторно с помощью конструктора запроса, без внесения в этот текст изменений:
- Весь первоначальный текст остается без изменений
- Из первоначального текста будут удалены только комментарии
- В первоначальном тексте комментарии останутся, а будут удалены только конструкции языка запросов построителя отчетов
- Из первоначального текста будут удалены и комментарии, и конструкции языка запросов построителя отчетов
Откроем данный запрос через Конструктор и закроем конструктор по Ок. Комментарий затрется:
Вопрос 04.44 экзамена 1С:Профессионал по платформе. Конструктор запросов может быть вызван:- С помощью пункта главного меню "Текст - Конструктор запроса…"
- С помощью кнопки "Конструкторы - Конструктор запросов" на закладке "Макеты" из окна редактирования объекта
- С помощью пункта всплывающего контекстного меню "Конструктор запроса…", появляющегося при нажатии в тексте модуля правой клавиши мыши
- Верно все вышеперечисленное
- Верны ответы 1 и 3
Вопрос 04.45 экзамена 1С:Профессионал по платформе. Кем может использоваться конструктор запросов?
- Разработчиками, так как необходимо знание языка запросов
- Квалифицированными пользователями без использования конфигуратора
- Верно все вышеперечисленное
- Нет верного ответа
Вопрос 04.46 экзамена 1С:Профессионал по платформе. На закладке "Таблицы и поля" конструктора запросов задают:
- Источники данных запросов, в качестве которых могут выступать реальные и виртуальные таблицы
- Набор полей из таблиц - источников данных запроса
- Поля в виде произвольного выражения
- Верны ответы 1 и 2
- Верно все вышеперечисленное
Вопрос 04.47 экзамена 1С:Профессионал по платформе. Для создания в конструкторе запросов вложенного запроса необходимо:
- Открыть закладку "Таблицы и поля". В командной панели над деревом "База данных" нажать кнопку "Добавить" или выбрать одноименный пункт контекстного меню
- Открыть закладку "Таблицы и поля". В командной панели над деревом "Таблицы" нажать кнопку "Добавить" или выбрать одноименный пункт контекстного меню
- Открыть закладку "Таблицы и поля". В командной панели над деревом "Поля" нажать кнопку "Добавить" или выбрать одноименный пункт контекстного меню
- В конструкторе запросов создать вложенный запрос нельзя
Результат:
Вопрос 04.48 экзамена 1С:Профессионал по платформе. Для создания в конструкторе запросов вычисляемого поля необходимо:- Открыть закладку "Таблицы и поля". В командной панели над деревом "Таблицы" нажать кнопку "Изменить текущий элемент". В открывшемся окне добавить новое поле
- Открыть закладку "Таблицы и поля". В командной панели над деревом "Поля" нажать кнопку "Добавить" или выбрать одноименный пункт контекстного меню
- Открыть закладку "Объединения/Псевдонимы". В командной панели над списком полей нажать кнопку "Добавить" или выбрать одноименный пункт контекстного меню
- Создать вычисляемое поле, можно только изменив текст запроса "вручную"
Вопрос 04.49 экзамена 1С:Профессионал по платформе. Для создания в запросе строк, сгруппированных с помощью агрегатных функций, на закладке "Группировка" конструктора запросов обязательно должны быть заполнены:
- Только список групповых полей. Указание суммируемых полей не обязательно
- Только список суммируемых полей, при этом остальные поля автоматически попадут в секцию СГРУППИРОВАТЬ ПО в тексте запроса
- Обязательным является указание как групповых, так и суммируемых полей
По остальным полям будет произведена группировка в тексте запроса:
Вопрос 04.50 экзамена 1С:Профессионал по платформе. В конструкторе запросов условия на значения агрегатных функций можно накладывать:- На закладке "Группировка", в списке суммируемых полей при выборе агрегатной функции
- На закладке "Условия"
- На закладке "Итоги", в списке итоговых полей при выборе агрегатной функции
- В конструкторе запросов задать условия на значения агрегатных функций нельзя
Умение писать текст запроса «вручную» никогда не являлось «лишним», но удобнее использовать конструктор запросов.
Замечание.
К сожалению, в управляемом приложении в обработке «ЗнакомствоСЗапросом» нельзя пользоваться конструктором запроса. Можно им воспользоваться в этой обработке перейдя в обычный режим, но делать этого не будем.
Создадим обработку «КонструкторЗапроса» и определяем ее в подсистему «ОтчетыИОбработки».
Создадим форму обработки и в ней добавляем реквизит формы «ТабДок» типа «Табличный документ», а так же команду «ВыполнитьЗапрос» с действием «ВыполнитьЗапрос». Далее, перетаскиваем их на форму.
В модуле формы, для работы команды, пишем процедуру:
&НаКлиенте
Процедура ВыполнитьЗапрос(Команда)
ВыполнитьЗапросСервер();
КонецПроцедуры
&НаСервере
КонецПроцедуры
Становимся внутри процедуры вызываемой на сервере и из контекстного меню вызываем «Конструктор запроса с обработкой результата» (рисунок 2.65).
Рисунок 2.65 Конструктор запроса с обработкой результата
Ставим тип обработки «Вывод в табличный документ» и нажимаем либо кнопку «Далее», либо закладку «Таблицы и поля».
На закладке «Таблицы и поля» конструктора можно просмотреть существующие на данный момент таблицы в системе (левая часть озаглавленная «База данных») (Рисунок 2.66).
Рисунок 2.67 Конструктор запроса
Таблицы, данные из которых будут получаться запросом, переносятся в область «Таблицы», необходимые запросу поля переносятся в область «Поля». Сделаем это как на рисунке 2.68.
Рис 2.68 Конструктор запроса
Здесь мы убрали, создаваемое по умолчанию, поле представления - «ПРЕДСТАВЛЕНИЕ (ПоступлениеТоваровТовары.Номенклатура)»
В любой момент работы с конструктором можно смотреть получаемый текст запроса. Для выполнения этой задачи необходимо нажать кнопку «Запрос», расположенную в левом нижнем углу формы конструктора (рисунок 2.69).
Можно вручную отредактировать текст запроса, нажав на кнопку «Редактировать» .
Практика. Нажимаем кнопку «ОК» и проверяем нашу обработку в пользовательском режиме. Если проанализировать данные, полученные при выполнении запроса, то можно встретить «повторы» номенклатурных позиций (если у вас это не получилось, то можно скопировать и провести любой документ «ПоступлениеТоваров»).
Возвращаемся в процедуру ВыполнитьЗапросСервер() в обработке «КонструкторЗапроса» и из контекстного меню опять вызываем «Конструктор запроса с обработкой результата» .
Если требуется «свернуть» результат запроса, то для этой цели можно использовать закладку «Группировка» конструктора запроса.
При определении группировок необходимо придерживаться следующего правила: все поля выборки запроса делятся на поля, по которым производится группировка (свертка), поля вложенных таблиц (суммируемые поля относительно тех, по которым ведется группировка) и на агрегатные функции. Определим группировки (Рисунок 2.70).
Рисунок 2.70 Конструктор запроса
Если данные, получаемые запросом должны выбираться по какому-либо условию, то в этом случае может потребоваться задействовать закладку «Условия». Выберем ПоступлениеТоваровТовары.Количество=10 (Рисунок 2.71).
Рисунок 2.71 Условие конструктора запроса.
Обратите внимание на тот факт, что в случае если условие определено таким же образом как на рисунке, то запрос выполняться не будет.
Исправить ситуацию можно двумя способами:
Переопределив условие, отметив флаг «П...»;
Воспользовавшись возможностью изменения самого текста запроса (получаемого при нажатии на кнопку «Редактировать Запрос»).
Само изменение вручную будет заключаться в том, что необходимо перед числом «10» убрать символ «&». Этим символом в тексте запроса определяются параметры запроса, в которые в дальнейшем (но перед выполнением запроса) должны быть записаны какие-либо значения. Нажмем на кнопку «РедактироватьЗапрос» и правим (Рисунок 2.72).
Рисунок 2.73 Редактирование запроса
На закладке «Дополнительно» можно отметить ряд флагов (касающихся ключевого слова «Выбрать» языка запросов) и определить состав таблиц предназначенных для изменения запроса (Рисунок 2.74).
Рисунок 2.74 Дополнительные функции запроса
На закладке «Объединения/Псевдонимы» можно изменить имена полей задав «Псевдонимы», но мы этого делать не будем.
На закладке «Порядок» можно определить порядок сортировки записей в результате запроса (Рисунок 2.75).
Рисунок 2.75 Порядок сортировки записей
Обратите внимание на флаг «Автоупорядочивание», он может использоваться для упорядочивания по полям ссылочного типа.
При определении раздела «Итоги» следует быть готовым к тому, что в результате запроса появится «дополнительные» итоговые записи. Вместе с этими записями результат запроса становится иерархическим (Рисунок 2.76).
Рисунок 2.76.Итоги конструктора запроса.
Допустимо указание нескольких типов итогов:
Элементы (в выборке результата запроса присутствуют итоги по группировкам и детальные записи);
Иерархия (в выборке результата запроса в общем случае присутствуют итоговые записи по иерархии, итоговые записи по группировке, детальные записи);
Только иерархия (в выборке результата запроса в общем случае присутствуют итоговые записи по иерархии).
После нажатия на кнопку «Ок» конструктора, будет сформирован «Макет» и в модуле формы пропишется код процедуры ВыполнитьЗапросСервер():
&НаСервере
Процедура ВыполнитьЗапросСервер()
//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
Макет = Обработки.КонструкторЗапросов.ПолучитьМакет("Макет");
Запрос = Новый Запрос;
Запрос.Текст =
| ПоступлениеТоваровТовары.Номенклатура КАК Номенклатура,
| СУММА(ПоступлениеТоваровТовары.Количество) КАК Количество,
| СУММА(ПоступлениеТоваровТовары.Сумма) КАК Сумма
| Документ.ПоступлениеТоваров.Товары
| КАК ПоступлениеТоваровТовары
| ПоступлениеТоваровТовары.Количество > 1
|СГРУППИРОВАТЬ ПО
| ПоступлениеТоваровТовары.Номенклатура
|УПОРЯДОЧИТЬ ПО
| Количество,
| Сумма УБЫВ
| СУММА(Количество),
| СУММА(Сумма)
| Номенклатура ИЕРАРХИЯ";
Результат = Запрос.Выполнить();
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
ОбластьНоменклатураИерархия = Макет.ПолучитьОбласть("НоменклатураИерархия");
ОбластьНоменклатура = Макет.ПолучитьОбласть("Номенклатура");
ТабДок.Очистить();
ТабДок.Вывести(ОбластьЗаголовок);
ТабДок.Вывести(ОбластьШапкаТаблицы);
ТабДок.НачатьАвтогруппировкуСтрок();
ВыборкаНоменклатура = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаНоменклатура.Следующий() Цикл
Если ВыборкаНоменклатура.ТипЗаписи() = ТипЗаписиЗапроса.ИтогПоИерархии Тогда
Область = ОбластьНоменклатураИерархия;
Область = ОбластьНоменклатура;
КонецЕсли;
Область.Параметры.Заполнить(ВыборкаНоменклатура);
ТабДок.Вывести(Область, ВыборкаНоменклатура.Уровень());
КонецЦикла;
ТабДок.ЗакончитьАвтогруппировкуСтрок();
ТабДок.Вывести(ОбластьПодвалТаблицы);
ТабДок.Вывести(ОбластьПодвал);
//}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
Конструктор запросов в 1С 8.3 и 8.2 — мощнейший инструмент разработки. Он позволяет составить текст запроса при помощи специальной визуальной среды. Таким образом, чтобы создать запрос 1с не обязательно знать встроенный язык запросов, достаточно ориентироваться в не сложном и интуитивно понятном интерфейсе конструктора.
Конструктор запросов представляет из себя набор вкладок, каждая из которых отвечает за свою часть запроса. Так заполняя вкладку Таблицы и поля мы выбираем таблицы из которых запрос 1с будет получать данные и поля этих таблиц необходимые для решения конкретной задачи. Заполняя в кладку Условия мы накладываем условия на выбранные таблицы, для того чтобы выбрать из них только нужные нам данные и так далее.
Описание конструктора запросов на официальном сайте 1С 8: v8.1c.ru
Таблицы и поля; ; ; ; ; ; Вложенные запросы (в разработке).
Для того чтобы вызвать конструктор запросов 1с 8 в программном коде необходимо:
- Создать новый запрос
- Задать пустую строку текста запроса
- Поставить курсор мышки между кавычками, нажать правую кнопку мыши. В открывшемся контекстном меню выбрать пункт Конструктор запроса и ответить Да на вопрос о создании нового запроса. Если текст запроса уже записан, то необходимо щелкнуть на любом месте внутри него и вызвать конструктор;
Рассмотрим на небольших примерах с возрастающей сложностью все основные вкладки конструктора запросов. Такой подход позволит начинающему программисту 1с более эффективно изучить конструктор и все его возможности. Для примеров будем использовать конфигурацию Бухгалтерия 3.0.
Урок №1. Конструктор запросов — простейший пример использования.
Задача: написать запрос к справочнику номенклатура, выбрать всю номенклатуру справочника.
Новые вкладки: Таблицы и поля.
Новые механизмы: просмотр и редактирование текста запроса при помощи кнопки «Запрос».
Для начала создания запроса создадим новый запрос и вызовем конструктор (как это делается написано несколькими абзацами выше). После этого откроется окно конструктора на вкладке Таблицы и поля.
Теоретическая часть урока №1
Вкладка Таблицы и поля состоит из трех разделов:
База данных . В данном разделе представлены все таблицы базы данных, которые можно использовать для построения запроса;
Таблицы . В данный раздел выбираются таблицы необходимые для данного запроса. Для тогда чтобы переместить их из раздела база данных нужно:
- Либо дважды щелкнуть по таблице;
- Либо воспользоваться кнопками «>» или «>>».
Над разделом Таблицы присутствует ряд кнопок. Про большинство из них будет подробнее рассказано в следующих уроках. А пока дам только краткие пояснения.
- Создать вложенный запрос (красная линия). Предназначена для создания нового вложенного запроса;
- Создать описание временной таблицы (желтая линия). Позволяет задать имя временной таблицы, которая расположена вне данного запроса, также можно использовать для передачи в запрос таблицы значений;
- Изменить текущий элемент (зеленая линия). Позволяет перейти в выделенный вложенный запрос, временную таблицу или описание временной таблицы;
- Удалить текущий элемент (голубая линия). Удаляет выделенную таблицу из выбранных таблиц;
- Заменить таблицу (синяя линия). Открывает диалог замены выделенной таблицы. Полезно, если вы неверно выбрали виртуальную таблицу регистра, так как происходит позиционирование на текущей выбранной таблице в списке.
- Параметры виртуальной таблицы (фиолетовая линия). Открывает параметры виртуальной таблицы регистра.
Поля . В данный раздел выбираются поля таблиц из предыдущего раздела. Эти поля будут колонками таблицы или выборки полученной в результате выполнения запроса. Нужны они прежде всего, для того чтобы получить из выбранных таблиц только нужную в конкретном случае информацию. Для того чтобы переместить их из раздела Таблицы необходимо:
- Либо дважды щелкнуть по полю;
- Либо воспользоваться кнопками «>» или «>>»;
- Также можно добавить новое поле самостоятельно, используя произвольное выражение из полей выбранных таблиц и функций языка запросов.
Над разделом Поля присутствует ряд кнопок. Про создание полей при помощи произвольных выражений будет подробнее рассказано в следующих уроках. А пока дам только краткие пояснения.
- Добавить (зеленая линия). Предназначена для добавления нового поля при помощи редактора произвольных выражений;
- Изменить текущий элемент (красная линия). Позволяет изменить выделенное поле при помощи редактора;
- Удалить текущий (синяя линия). Удаляет выделенное поле из списка.
Практическая часть урока №1
Мы разобрались с теорией необходимой для выполнения задания, предусмотренного в данном уроке. Напомню как оно звучит: написать запрос к справочнику номенклатура, выбрать всю номенклатуру справочника.
Приступим к созданию запроса по номенклатуре:
- Создадим новый запрос и откроем конструктор методом указанным в начале урока;
- В разделе База данных , откроем ветку Справочники и найдем там справочник Номенклатура;
- Выделим его и при помощи кнопки «>» перенесем в раздел Таблицы;
- В разделе Таблицы раскроем справочник номенклатура при помощи значка «+»;
- В раскрывшемся списке полей найдем поле Ссылка и перенесем его в раздел Поля при помощи кнопки «>»
- Запрос по номенклатуре готов, нажимаем кнопку «ОК» в нижней части окна конструктора.