- •8.1. Назначение. Основные объекты , предназначенные для организации запросов
- •Выполнение запроса
- •8.2. Язык запросов
- •Поля из вложенных таблиц
- •Псевдонимы источников как/as
- •Запросы к табличным частям
- •Вложенные запросы в списке источников
- •Конструкция соединение...По/join...On
- •Левое внешнее соединение
- •Правое внешнее соединение
- •Полное внешнее соединение
- •Логические операторы и, или, не
- •Параметры в языке запросов
- •Проверка вхождения значения в список (в/in)
- •Проверка ссылочного значения (ссылка/ref)
- •Проверка пустых значений (есть null / is null)
- •Сравнение строк (подобно / like)
- •Упорядочивание по иерархии
- •Упорядочивание во вложенных таблицах
- •Автоупорядочивание /autoorder
- •Агрегатные функции в запросе
- •Общие итоги
- •Итоги по группировкам
- •Итоги по иерархии
- •Несколько итогов в запросе
- •Встроенные функции языка запросов
- •Операции выбора в языке запросов (выбор / case)
- •Приведение типов в языке запросов
- •Литералы и параметры в языке запросов
- •8.4. Обработка результата запроса
- •8.5. Выборка из результата запроса
- •Линейный обход
- •Иерархический обход
- •Обход по группировкам
- •Другие полезные методы
- •8.6. Выгрузка результата запроса
- •8.7. Запросы к регистрам сведений
- •Основная таблица регистра сведений
- •8.8. Запросы к регистрам накопления
- •Основная таблица регистра накопления
- •Сводные таблицы
Лекция 3_ИСБУ (V8). Запросы
8.1. Назначение. Основные объекты , предназначенные для организации запросов
Запросы в системе 1C:Предприятие 8 предназначены для выборки информации из базы данных. По сути, запрос - это обращение к системе с просьбой выбрать определенную информацию из базы данных, а часто не только выбрать, но и произвести некоторую обработку: сгруппировать, отсортировать, вычислить итоги.
Например, с помощью запроса можно легко выбрать всех сотрудников, занимающих определенную должность, или можно узнать объем продаж каждого товара в течение года с детализацией до месяца.
Стоит отметить, что в других системах с помощью запросов можно не только выбирать информацию из базы данных, но и изменять ее: добавлять, удалять и изменять записи в таблицах, управлять правами пользователей, создавать и модифицировать таблицы, поля, индексы и другие объекты базы данных. В системе 1С:Предприятие 8 запросы предназначены только для чтения данных. Изменять данные с помощью запросов нельзя, и тем более нельзя изменять структуру базы данных, что возможно только в режиме «Конфигуратор». Запись данных в 1C: Предприятии 8 производится только через объекты встроенного языка, что обеспечивает высокий уровень логической целостности базы данных.
Основная цель обычного языка программирования заключается в том, чтобы задать пошаговую программу для системы, то есть точно определить, как решать задачу. Цель же языка запросов состоит в том, чтобы сказать системе, что нужно получить, то есть потребовать результат. При этом нас не интересует, как именно система будет выполнять задание, т.е. план (алгоритм) выполнения запроса строится системой автоматически.
Приведем пример решения задачи обоими методами: с помощью языка программирования и с помощью запроса. Допустим, необходимо вывести сотрудников с окладом больше 10000 руб.
1-й способ. Используется язык программирования:
Выборка = Справочники.Сотрудники.Выбрать();
Пока Выборка.Следующий() Цикл
Если Выборка.Оклад > 10000 Тогда
Сообщить(Выборка.Наименование + " имеет оклад " + Выборка.Оклад);
КонецЕсли;
КонецЦикла;
2-й способ. Используется механизм запросов:
Запрос = Новый Запрос("
|ВЫБРАТЬ * ИЗ Справочник.Сотрудники
|ГДЕ Оклад > 10000");
Выборка = Запрос.Выполнить().Выбрать();
рез = Запрос.Выполнить();;
Выборка = рез.Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить(Выборка.Наименование + " имеет оклад " +
Выборка.Оклад);
КонецЦикла;
Особенности второго варианта с использованием запроса:
• внутри цикла не нужно фильтровать записи, поскольку запрос выполнил всю работу за нас;
• вариант с запросом обычно выполняется быстрее, так как в клиент-серверном варианте работы запрос выполняется на сервере и не требуется передавать по сети весь справочник, который может быть очень большим.
В клиент-серверном варианте работы 1C:Предприятия 8 запросы будут транслироваться в SQL для выполнения в среде MS SQL Server. Сервер баз данных предпримет необходимые действия для оптимизации запроса.
Даже если вы работает в файловом варианте, то вариант с запросом обычно эффективнее обычного цикла для обработки больших справочников, списков документов и извлечения данных из регистров.
Но необходимо иметь в виду, что при использовании запроса, результат целиком помещается в память, тогда как выборка, сформированная средствами встроенного языка, загружает информацию порциями и позволяет перебрать большие списки объектов, не требуя значительного объема памяти.
Заметим, что в приведенном выше примере мы рассмотрели самое простое применение механизма запросов. С помощью запросов можно не только отбирать нужные записи по любому условию, но также группировать, сортировать, подсчитывать итоги.
