Запросы в системе 1С:Предприятие 8.0 предназначены для выборки информации из базы данных. По сути, запрос - это обращение к системе с просьбой выбрать определенную информацию из базы данных, а часто не только выбрать, но и произвести некоторую обработку: сгруппировать, отсортировать, вычислить итоги.
Например, с помощью запроса можно легко выбрать всех сотрудников, занимающих определенную должность, или можно узнать объем продаж каждого товара в течение года с детализацией до месяца.
Стоит отметить, что в других системах с помощью запросов можно не только выбирать информацию из базы данных, но и изменять ее: добавлять, удалять и изменять записи в таблицах, управлять правами пользователей, создавать и модифицировать таблицы, поля, индексы и другие объекты базы данных. В системе 1С:Предприятие 8.0 запросы предназначены только для чтения данных. Изменять данные с помощью запросов нельзя, и тем более нельзя изменять структуру базы данных, что возможно только в режиме «Конфигуратор». Запись данных в 1С:Предприятии 8.0 производится только через объекты встроенного языка, что обеспечивает высокий уровень логической целостности базы данных.
Основная цель обычного языка программирования заключается в том, чтобы задать пошаговую программу для системы, то есть точно определить, как решать задачу. Цель же языка запросов состоит в том, чтобы сказать системе, что нужно получить, то есть потребовать результат. При этом нас не интересует, как именно система будет выполнять задание, т.е. план (алгоритм) выполнения запроса строится системой автоматически.
Приведем пример решения задачи обоими методами: с помощью языка программирования и с помощью запроса. Допустим, необходимо вывести сотрудников с окладом больше 10000 руб.
1-й способ. Используется язык программирования:
Выборка = Справочники.Сотрудники.Выбрать();
Пока Выборка.Следующий() Цикл
Если Выборка.Оклад > 10000 Тогда
Сообщить(Выборка.Наименование + " имеет оклад " + Выборка.Оклад);
КонецЕсли;
КонецЦикла;
2-й способ. Используется механизм запросов:
Запрос = Новый Запрос("ВЫБРАТЬ * ИЗ Справочник.Сотрудники ГДЕ Оклад > 10000");
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить(Выборка.Наименование + " имеет оклад " + Выборка.Оклад);
КонецЦикла;
Обратите внимание на особенности второго варианта с использованием запроса:
• внутри цикла не нужно фильтровать записи, поскольку запрос
выполнил всю работу за нас;
• вариант с запросом обычно выполняется быстрее, так как в клиент-серверном варианте работы запрос выполняется на сервере и не требуется передавать по сети весь справочник, который может быть очень большим.
В клиент-серверном варианте работы 1С:Предприятия 8.0 запросы будут транслироваться в SQL для выполнения в среде MS SQL Server. Сервер баз данных предпримет необходимые действия для оптимизации запроса.
Даже если вы работает в файловом варианте, то вариант с запросом обычно эффективнее обычного цикла для обработки больших справочников, списков документов и извлечения данных из регистров.
Но необходимо иметь в виду, что при использовании запроса, результат целиком помещается в память, тогда как выборка, сформированная средствами встроенного языка, загружает информацию порциями и позволяет перебрать большие списки объектов, не требуя значительного объема памяти.
Написание запроса требует не алгоритмического, а декларативного типа мышления, когда разработчик говорит не как сделать задачу, а что нужно получить в результате. При этом производится обработка не одной переменной или одной текущей строки, а всей таблицы или столбца. Разработчик должен мыслить множествам, чтобы решить поставленную задачу с помощью одного или нескольких запросов.
Заметим, что в приведенном выше примере мы рассмотрели самое простое применение механизма запросов. С помощью запросов можно не только отбирать нужные записи по любому условию, но также группировать, сортировать, подсчитывать итоги. И сейчас мы научимся все это делать! восстановление бухгалтерского учета для ООО . Декоративное освещение светодиодными лампами и их характеристики.