рубрики: Запросы | Дата: 15 октября, 2016
Программирование в среде 1С:Предприятия версии 8 невозможно представить
без применения языка запросов. На самом деле в версии 7.7 запросы тоже
существовали, но обладали гораздо меньшими возможностями, и с моей точки
зрения тот язык запросов был гораздо сложнее для понимания. Синтаксис
языка запросов версии 8 с некоторыми различиями практически полностью
повторяет синтаксис
языка запросов SQL, что тоже является большим плюсом.
Практически язык запросов представляет собой инструмент для считывания
записей из таблиц базы данных. В контексте 1С это справочники, документы,
регистры, и т. д.
Кроме того можно обращаться к так называемым виртуальным
таблицам, которые физически не существуют в базе данных, а формируются
платформой 1С:Предприятия 8.
Также можно создавать временные таблицы и далее обращаться к их записям.
Эта возможность используется в сложных запросах, когда к одному и тому
же набору записей приходится обращаться несколько раз. Это увеличивает
быстродействие и упрощает понимание текста запроса.
Алгоритм использования языка запросов можно представить следующим образом:
Формирование текста запроса —> Выполнение запроса —> Обход выборки,
полученной в результате выполнения запроса. Рассмотрим вкратце каждый из
этих этапов.
ВЫБРАТЬ {Набор полей через запятую} ИЗ {Имя таблицы} ГДЕ {Условия при выполнении которых записи будут отобраны}
На самом деле запрос может быть даже без условий, но на практике такое встречается
очень редко. И конечно же использоваться может несколько таблиц, которые могут соединяться
между собой либо объединяться.
А теперь приведу практический пример текста запроса. Допустим, что у нас есть некий
справочник сайтов и мы хотим выбрать из него код и наименование всех не помеченных
на удаление элементов. Текст запроса в этом случае будет следующим:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Сайты.Код,
| Сайты.Наименование
|ИЗ
| Справочник.Сайты КАК Сайты
|ГДЕ
| НЕ Сайты.ПометкаУдаления";
Результат = Запрос.Выполнить();
Зачастую возникает вопрос как можно в отладчике посмотреть результат выполнения
запроса. Сделать это можно при помощи метода Выгрузить(), который
выгружает результат запроса в таблицу значений.
Результат.Выгрузить()
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить(Выборка.Код + "; " + Выборка.Наименование);
КонецЦикла;
Таким образом, если собрать все три пункта вместе, получим следующий код:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Сайты.Код,
| Сайты.Наименование
|ИЗ
| Справочник.Сайты КАК Сайты
|ГДЕ
| НЕ Сайты.ПометкаУдаления";
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить(Выборка.Код + "; " + Выборка.Наименование);
КонецЦикла;
Иногда возникает соблазн вместо обхода выборки выгружать результат в таблицу значений
и дальше работать уже с ней. Делать это следует только в исключительных случаях или
в отладочных целях. Особенно это надо учесть при сдаче экзамена в фирме 1С.
Добавить комментарий