Запрос предназначен для чего
§ 5. Формирование запросов на выборку данных
Что такое запрос и язык запросов
Запросы предназначены для извлечения и обработки информации из базы данных для предоставления пользователю в требуемом виде. Под обработкой здесь подразумевается группировка полей, сортировка строк, расчет итогов и т.д. Изменять данные с помощью запросов в 1С нельзя!
Запрос выполняется в соответствии с заданными инструкциями — текстом запроса. Текст запроса составляется в соответствии с синтаксисом и правилами языка запросов. Язык запросов 1С:Предприятие 8 основан на базе стандартного SQL, но имеет некоторые отличия и расширения.
Видео
Временные таблицы и пакетные запросы
Язык запросов 1С поддерживает использование временных таблиц — таблиц, полученных в результате выполнения запроса и сохраненных на временной основе.
Какие составляющие запроса есть?

Создание перекрестного запроса
Теперь предположим, что вы хотите просмотреть суммы для товаров, но также агрегировать данные по месяцам, чтобы в каждой строке отображались суммы для товара, а в каждом столбце отображались суммы за месяц. Чтобы показать подытожи для товара и подытожи за месяц, используйте перекрестный запрос.
Примечание: Перекрестный запрос не может отображаться в веб-приложении Access.
Вы можете снова изменить запрос «Промежуточные суммы для товаров», чтобы он возвращал строки промежуточных сумм для товаров и столбцы промежуточных сумм по месяцам.
На вкладке Главная в группе Представления нажмите кнопку Представление и выберите пункт Конструктор.
В группе «Настройка запроса» нажмите кнопку «Добавить таблицы» (или «Добавить таблицу в Access 2013 «).
Дважды щелкните «Заказы»и нажмите кнопку «Закрыть».
На вкладке Конструктор в группе Тип запроса щелкните элемент Перекрестная таблица. В бланке строка Показать скрыта, а отображается строка Перекрестная таблица.
В диалоговом окне Область ввода введите или вставьте следующее выражение: Месяц: «Месяц» & DatePart(«м», [Дата заказа])
В строке Перекрестная таблица выберите следующие значения в раскрывающемся списке: Заголовки строк для первого столбца, Значение для второго столбца и Заголовки столбцов для третьего.
На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить. Происходит выполнение запроса, а затем отображаются промежуточные суммы, собранные по месяцам.
Нажмите клавиши CTRL+S, чтобы сохранить запрос.
Дополнительные сведения о перекрестных запросах см. в документе «Упростите чтение сводных данных с помощью перекрестного запроса».
Создание запроса на выборку
Запрос на выборку позволяет просматривать данные только из определенных полей таблицы либо из нескольких таблиц одновременно или же находить данные, которые соответствуют определенным условиям. Дополнительные сведения см. в простом запросе на выбору.
Просмотр данных из выбранных полей
Например, если база данных содержит таблицу с различной информацией о товарах, а необходимо просмотреть список товаров и их цены, запрос на выборку создается таким образом, чтобы возвратить только названия товаров и соответствующие цены.
Откройте базу данных и на вкладке Создание нажмите кнопку Конструктор запросов.
На вкладке «Таблицы» дважды щелкните таблицу «Товары».
Допустим, в таблице «Товары» содержатся поля «Наименование товара» и «Цена по прейскуранту». Дважды щелкните элементы Наименование товара и Цена по прейскуранту, чтобы добавить эти поля в бланк запроса.
На вкладке Конструктор нажмите кнопку Выполнить. Запрос будет выполнен, и отобразится список товаров и цен на них.
Одновременный просмотр данных из нескольких связанных таблиц
Например, если у вас есть база данных для магазина, который продает продукты питания, и вы хотите просмотреть заказы клиентов, которые живут в конкретном городе. Скажем, данные о заказах и сведения о клиентах хранятся в двух таблицах с именами «Клиенты» и «Заказы» соответственно. Если каждая таблица имеет поле «ИД клиента», которое является основой отношение «один-ко-многим» между двумя таблицами. Вы можете создать запрос, возвращающий заказы для клиентов в конкретном городе, например в Лас-Вегасе, используя следующую процедуру:
Откройте базу данных. На вкладке Создание в группе Запросы нажмите кнопку Конструктор запросов.
На вкладке «Таблицы» дважды щелкните «Клиенты» и «Заказы».
Обратите внимание на линию (называемую соединением), которая соединяет поле «Код» в таблице «Заказчики» с полем «Код заказчика» в таблице «Заказы». Эта линия отображает связь между двумя таблицами.
В таблице «Клиенты» дважды щелкните элементы Организация и Город, чтобы добавить эти поля в бланк запроса.
В бланке запроса в столбце Город снимите флажок в строке Показать.
В строке Условие отбора столбца Город введите Тюмень.
Если снять флажок Показать, в результатах запроса не будет отображаться город, а слово Тюмень в строке Условие отбора означает, что требуется просмотреть только те записи, для которых в поле «Город» указано значение «Тюмень». В этом случае запрос возвращает данные только о тех клиентах, которые находятся в Тюмени. Для использования поля в условии отбора показывать его на экране не обязательно.
В таблице «Заказы» дважды щелкните элементы Код заказа и Дата размещения, чтобы добавить эти поля в два следующих столбца в бланке запроса.
На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить. Происходит выполнение запроса и отображается список заказов клиентов из Тюмени.
Нажмите клавиши CTRL+S, чтобы сохранить запрос.
Основные данные запроса
Как упоминалось выше, есть только два основных строительных блока:
Для чего предназначены запросы? Языки запросов
Базы данных занимают все больше места в нашей жизни. Их используют в компаниях и банках, магазинах и на складах. Сталкиваясь с ними в повседневной жизни, многие хотят научиться управлению базами. Поэтому в статье мы познакомим читателя с понятием запросов.
Что такое запросы
Запросы в базе данных – это специальные команды, с помощью которых меняют данные в таблицах и получают из них нужную информацию. Эти команды могут применяться как к таблицам, так и к другим объектам БД – индексам, триггерам, представлениям, а также к БД в целом. При этом СУБД (системы управления базами данных) разрешают производить изменения как в таблице целиком, так и в отдельных записях и группах строк.
Какие бывают запросы

Виды команд зависят от того, для чего предназначены запросы и что за действия они выполняют. Основных типов операций два:
Второй тип включает в себя команды, выполняющие изменения в БД: вставка, замена и удаление полей или строк. Все операции также делят на такие типы:
Первый вид использует специальный “Конструктор запросов”. Такой мастер создания команд есть в СУБД Access. Он позволяет создавать запросы пользователям без специальных знаний.
SQL-запрос формирует программист, используя специальные инструкции.

Языки
Основным языком практически во всех СУБД является SQL. Это гибкая система команд, позволяющая получить необходимую информацию из таблиц, отвечающую указанным условиям. С помощью этого языка можно как делать выборку, так и вносить изменения в объекты БД.
Для обработки документов в формате XML – расширяемом языке разметки – задействованы специальные языки запросов. Это XQuery и XPath, последний служит для запросов к элементам документов.
Запросы на выборку
Наиболее востребованная операция в БД – это получение данных из таблиц, для чего предназначены запросы на выборку. Эти команды позволяют посмотреть нужные данные из БД согласно введенным условиям. Для этого пользователь “Конструктора запросов” или программист указывает список полей (столбцов), которые он хочет получить, присваивает им наименования, расставляет в нужном порядке.
Команда может быть безусловной либо с заданными параметрами. В первом случае пользователю будет возвращен массив данных, состоящий из всех строк таблицы. Во втором – только те строки, которые отвечают введенному требованию. Таким образом можно задавать ограничения – устанавливать фильтр на необходимые данные.
Полученную информацию можно также отсортировать по одному или нескольким полям, объединить строки по какому-то признаку, произвести подсчеты с использованием функций. Это агрегатные функции, подсчитывающие количество, сумму, среднее арифметическое значение полей и другие итоги.
В выборках объединяют несколько таблиц, связывая их между собой по необходимому признаку и получая итоговую таблицу, содержащую информацию из нескольких источников.
Попробуем сделать выборку в Access, для чего предназначены запросы в “Конструкторе”. Создадим в нашей базе данных таблицу “Студенты”.
| Код | Имя студента | Фамилия студента | Дата рождения | Факультет | Курс |
| 1 | Иван | Иванов | 16.05.1999 | Технологический | 3 |
| 2 | Сергей | Козлов | 19.01.1999 | Экономический | 3 |
| 3 | Валерий | Пяткин | 22.12.2000 | Экономический | 2 |
| 4 | Тимофей | Трещоткин | 01.05.2001 | Юридический | 1 |
Открываем вкладку “Создание” и выбираем пункт «Конструктор запросов». Добавляем таблицу “Студенты”. Для выбора нужных полей дважды кликаем на них. Внизу окна добавляем сортировку, если она необходима, и дополнительные условия отбора.
После нажатия на кнопку «Выполнить» вкладки «Конструктор» в окне появляются результаты выборки.
Такие же результаты можно получить с использованием SQL-запроса. Переход в режим SQL происходит по контекстному пункту меню. Наша операция здесь выглядит так:
SELECT Студенты.[Имя студента], Студенты.[Фамилия студента], Студенты.[Дата рождения]
ORDER BY Студенты.[Имя студента];
Аналогично можно создать и выполнить команды на выборку из нескольких таблиц, с параметрами и итогами.
Запросы на добавление
Этот тип операций используется для вставки новых строк в существующую таблицу БД. Можно добавлять конкретные значения полей, а можно извлекать информацию из одной таблицы и добавлять ее в другую. Как извлекать данные, мы уже знаем, давайте посмотрим, как добавить строки.
Создадим еще одну таблицу «Новые студенты» и добавим в нее 2 записи:
| Код | Имя | Фамилия | Дата рождения |
| 1 | Юрий | Семенов | 11.12.2002 |
| 2 | Алексей | Торопов | 13.08.2002 |
А теперь вставим эти данные в таблицу «Студенты» с помощью “Конструктора запросов”. Для этого на вкладке “Конструктор” выберем пункт «Добавить», а в открывшемся окне укажем таблицу «Студенты», в которую будут вставляться данные. В окне запроса добавим таблицу «Новые студенты», из которой будем брать записи. Выберем поля, информация из которых будет добавлена в таблицу «Студенты»:
И выполним запрос. Таблица стала выглядеть так.
В режиме языка запросов SQL на добавление принимает вид:
INSERT INTO Студенты ( [Имя студента], [Фамилия студента], [Дата рождения] )
SELECT [Новые Студенты].Имя, [Новые Студенты].Фамилия, [Новые Студенты].[Дата рождения]
FROM [Новые Студенты];
Запросы на изменение
Часто возникает необходимость внести изменения в уже существующие записи таблицы, для чего предназначены запросы на изменение данных. По аналогии с предыдущими операциями, эта может выполняться как над всеми строками, так и только над теми, что соответствуют критериям отбора.
Студент Семенов поступил на первый курс юридического факультета. В Конструкторе запросов выбираем тип команд «Обновление» и добавляем нужные данные и условие изменения записей. Нам нужно изменить два поля, поэтому вносим данные для изменения в двух столбцах параметров запроса – поле «Факультет» таблицы «Студенты» должно принять значение «Юридический», поле «Курс» этой же таблицы – значение «1». В третьем столбце вносим условие, по которому отбирать данные для изменения. Фамилия студента таблицы «Студенты» должна быть «Семенов».
В режиме SQL видим:
UPDATE Студенты SET Студенты.Факультет = “Юридический”, Студенты.Курс = 1
WHERE Студенты.[Фамилия студента]=”Семенов”;
Выполняем операцию и получаем результат.
Запросы на удаление
В “Конструкторе запросов” выбираем тип «Удаление» и формируем команду с помощью условий:
В режиме SQL видим текст:
WHERE Студенты.[Фамилия студента]=”Торопов”;
Выполнив команду, получаем результат в таблице:
Таким образом, мы на практике изучили, для чего предназначены запросы в БД. Их разнообразие больше и применение шире, чем описано в данной статье. Если вас заинтересует тема баз данных, вы можете продолжить изучение самостоятельно.
Механизм запросов
Механизм запросов — это один из способов доступа к данным, которые поддерживает платформа. Используя этот механизм, разработчик может читать и обрабатывать данные, хранящиеся в информационной базе; изменение данных с помощью запросов невозможно. Это объясняется тем, что запросы специально предназначены для быстрого получения и обработки некоторой выборки из больших массивов данных, которые могут храниться в базе данных.
Табличный способ доступа к данным
Запросы реализуют табличный способ доступа к данным, которые хранятся в базе данных. Это означает, что все данные представляются в виде совокупности связанных между собой таблиц, к которым можно обращаться как по-отдельности, так и к нескольким таблицам во взаимосвязи:
Такой способ работы с данными позволяет получать сложные выборки данных, сгруппированные и отсортированные определенным образом. Для этих выборок могут быть рассчитаны общие и промежуточные итоги, наложены ограничения на количество или состав записей и пр.
Язык запросов
Для того чтобы разработчик имел возможность использовать запросы для реализации собственных алгоритмов, в платформе реализован язык запросов. Этот язык основан на SQL, но при этом содержит значительное количество расширений, ориентированных на отражение специфики финансово-экономических задач и на максимальное сокращение усилий по разработке прикладных решений. Можно перечислить наиболее существенные возможности, реализуемые языком запросов:
Обращение к полям через точку (».»)
Если поля какой-либо таблицы имеют ссылочный тип (хранят ссылки на объекты другой таблицы), разработчик может в тексте запроса ссылаться на них через «.», при этом количество уровней вложенности таких ссылок система не ограничивает.
Обращение к вложенным таблицам (табличным частям документов и элементов справочников)
Система поддерживает обращения к вложенным табличным частям и как к отдельным таблицам, и как к целым полям одной таблицы. Например, при обращении к документу Реализация товаров (содержащему табличную часть Товары с составом отгружаемых товаров), мы можем считать табличную часть как отдельную таблицу:
Но также мы можем считать заголовочную запись документа, в которой значением поля Товары будут все записи вложенной таблицы, подчиненные этому объекту (документу):
Автоматическое упорядочивание
Для выбора наиболее правильного («естественного») порядка вывода информации на экран или в отчет разработчику в большинстве случаев достаточно задать режим автоматического упорядочивания.
Многомерное и многоуровневое формирование итогов
Итоги и подитоги формируются с учетом группировки и иерархии, обход уровней может выполняться в произвольном порядке с подведением подитогов, обеспечивается корректное построение итогов по временным измерениям.
Поддержка виртуальных таблиц
Виртуальные таблицы, предоставляемые системой, позволяют получить практически готовые данные для большинства прикладных решений без необходимости составления сложных запросов. Например, такая виртуальная таблица может предоставить данные по остаткам товаров в разрезе периодов на какой-то момент времени. При этом виртуальные таблицы максимально используют хранимую информацию, например, ранее рассчитанные итоги и т. д.
Стандартные SQL операции
В языке запросов поддерживаются стандартные для SQL операции, такие, как объединение (Union), соединение (Join) и т. д.

Временные таблицы
Язык запросов позволяет использовать в запросах временные таблицы. С их помощью можно повысить производительность запросов, в некоторых случаях снизить количество блокировок и сделать текст запроса более легким для восприятия.
Предположим, нужно получить данные из двух регистров накопления. Данные из одного регистра поместим во временную таблицу:
Запрос, использующий временную таблицу, будет иметь вид:
Пакетные запросы
Для более удобной работы с временными таблицами в языке запросов поддерживается работа с пакетными запросами — таким образом, создание временной таблицы и ее использование помещаются в один запрос. Пакетный запрос представляет собой последовательность запросов, разделенных символом «;». Запросы исполняются один за другим. Результатом выполнения пакетного запроса в зависимости от используемого метода будет являться либо результат, возвращаемый последним запросом пакета, либо массив результатов всех запросов пакета в той последовательности, в которой следуют запросы в пакете.
Конструкторы запроса
Консоль запросов
Инструмент «Консоль запросов» позволяет разработчикам конфигураций и специалистам по внедрению отлаживать запросы и просматривать результаты их выполнения в режиме «1С:Предприятие 8». Подробнее…
Для чего предназначены запросы? Языки запросов
Базы данных занимают все больше места в нашей жизни. Их используют в компаниях и банках, магазинах и на складах. Сталкиваясь с ними в повседневной жизни, многие хотят научиться управлению базами. Поэтому в статье мы познакомим читателя с понятием запросов.
Что такое запросы
Запросы в базе данных – это специальные команды, с помощью которых меняют данные в таблицах и получают из них нужную информацию. Эти команды могут применяться как к таблицам, так и к другим объектам БД – индексам, триггерам, представлениям, а также к БД в целом. При этом СУБД (системы управления базами данных) разрешают производить изменения как в таблице целиком, так и в отдельных записях и группах строк.
Какие бывают запросы
Виды команд зависят от того, для чего предназначены запросы и что за действия они выполняют. Основных типов операций два:
Второй тип включает в себя команды, выполняющие изменения в БД: вставка, замена и удаление полей или строк. Все операции также делят на такие типы:
Первый вид использует специальный “Конструктор запросов”. Такой мастер создания команд есть в СУБД Access. Он позволяет создавать запросы пользователям без специальных знаний.
SQL-запрос формирует программист, используя специальные инструкции.
Языки
Основным языком практически во всех СУБД является SQL. Это гибкая система команд, позволяющая получить необходимую информацию из таблиц, отвечающую указанным условиям. С помощью этого языка можно как делать выборку, так и вносить изменения в объекты БД.
Для обработки документов в формате XML – расширяемом языке разметки – задействованы специальные языки запросов. Это XQuery и XPath, последний служит для запросов к элементам документов.
Запросы на выборку
Наиболее востребованная операция в БД – это получение данных из таблиц, для чего предназначены запросы на выборку. Эти команды позволяют посмотреть нужные данные из БД согласно введенным условиям. Для этого пользователь “Конструктора запросов” или программист указывает список полей (столбцов), которые он хочет получить, присваивает им наименования, расставляет в нужном порядке.
Команда может быть безусловной либо с заданными параметрами. В первом случае пользователю будет возвращен массив данных, состоящий из всех строк таблицы. Во втором – только те строки, которые отвечают введенному требованию. Таким образом можно задавать ограничения – устанавливать фильтр на необходимые данные.
Полученную информацию можно также отсортировать по одному или нескольким полям, объединить строки по какому-то признаку, произвести подсчеты с использованием функций. Это агрегатные функции, подсчитывающие количество, сумму, среднее арифметическое значение полей и другие итоги.
В выборках объединяют несколько таблиц, связывая их между собой по необходимому признаку и получая итоговую таблицу, содержащую информацию из нескольких источников.
Попробуем сделать выборку в Access, для чего предназначены запросы в “Конструкторе”. Создадим в нашей базе данных таблицу “Студенты”.
| Код | Имя студента | Фамилия студента | Дата рождения | Факультет | Курс |
| 1 | Иван | Иванов | 16.05.1999 | Технологический | 3 |
| 2 | Сергей | Козлов | 19.01.1999 | Экономический | 3 |
| 3 | Валерий | Пяткин | 22.12.2000 | Экономический | 2 |
| 4 | Тимофей | Трещоткин | 01.05.2001 | Юридический | 1 |
Открываем вкладку “Создание” и выбираем пункт «Конструктор запросов». Добавляем таблицу “Студенты”. Для выбора нужных полей дважды кликаем на них. Внизу окна добавляем сортировку, если она необходима, и дополнительные условия отбора.
После нажатия на кнопку «Выполнить» вкладки «Конструктор» в окне появляются результаты выборки.
Такие же результаты можно получить с использованием SQL-запроса. Переход в режим SQL происходит по контекстному пункту меню. Наша операция здесь выглядит так:
SELECT Студенты.[Имя студента], Студенты.[Фамилия студента], Студенты.[Дата рождения]
ORDER BY Студенты.[Имя студента];
Аналогично можно создать и выполнить команды на выборку из нескольких таблиц, с параметрами и итогами.
Запросы на добавление
Этот тип операций используется для вставки новых строк в существующую таблицу БД. Можно добавлять конкретные значения полей, а можно извлекать информацию из одной таблицы и добавлять ее в другую. Как извлекать данные, мы уже знаем, давайте посмотрим, как добавить строки.
Создадим еще одну таблицу «Новые студенты» и добавим в нее 2 записи:
| Код | Имя | Фамилия | Дата рождения |
| 1 | Юрий | Семенов | 11.12.2002 |
| 2 | Алексей | Торопов | 13.08.2002 |
А теперь вставим эти данные в таблицу «Студенты» с помощью “Конструктора запросов”. Для этого на вкладке “Конструктор” выберем пункт «Добавить», а в открывшемся окне укажем таблицу «Студенты», в которую будут вставляться данные. В окне запроса добавим таблицу «Новые студенты», из которой будем брать записи. Выберем поля, информация из которых будет добавлена в таблицу «Студенты»:
И выполним запрос. Таблица стала выглядеть так.
В режиме языка запросов SQL на добавление принимает вид:
INSERT INTO Студенты ( [Имя студента], [Фамилия студента], [Дата рождения] )
SELECT [Новые Студенты].Имя, [Новые Студенты].Фамилия, [Новые Студенты].[Дата рождения]
FROM [Новые Студенты];
Запросы на изменение
Часто возникает необходимость внести изменения в уже существующие записи таблицы, для чего предназначены запросы на изменение данных. По аналогии с предыдущими операциями, эта может выполняться как над всеми строками, так и только над теми, что соответствуют критериям отбора.
Студент Семенов поступил на первый курс юридического факультета. В Конструкторе запросов выбираем тип команд «Обновление» и добавляем нужные данные и условие изменения записей. Нам нужно изменить два поля, поэтому вносим данные для изменения в двух столбцах параметров запроса – поле «Факультет» таблицы «Студенты» должно принять значение «Юридический», поле «Курс» этой же таблицы – значение «1». В третьем столбце вносим условие, по которому отбирать данные для изменения. Фамилия студента таблицы «Студенты» должна быть «Семенов».
В режиме SQL видим:
UPDATE Студенты SET Студенты.Факультет = “Юридический”, Студенты.Курс = 1
WHERE Студенты.[Фамилия студента]=”Семенов”;
Выполняем операцию и получаем результат.
Запросы на удаление
В “Конструкторе запросов” выбираем тип «Удаление» и формируем команду с помощью условий:
В режиме SQL видим текст:
WHERE Студенты.[Фамилия студента]=”Торопов”;
Выполнив команду, получаем результат в таблице:
Таким образом, мы на практике изучили, для чего предназначены запросы в БД. Их разнообразие больше и применение шире, чем описано в данной статье. Если вас заинтересует тема баз данных, вы можете продолжить изучение самостоятельно.






























