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