Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЦОО_ИСБУ_Лек3.doc
Скачиваний:
6
Добавлен:
01.07.2025
Размер:
684 Кб
Скачать
☆

Выполнение запроса

Для работы с запросами в системе 1С:Предприятие 8 предусмотрено несколько специальных объектов, а именно:

• Запрос,

• РезультатЗапроса,

• ВыборкаИзРезультатаЗапроса.

Общая схема выполнения запроса такова:

1. Создание объекта типа Запрос с текстом запроса на специальном языке запросов.

2. Установка параметров запроса с помощью метода УстановитьПараметр.

3. Выполнение запроса, получение результата.

4. Получение выборки из результата запроса или выгрузка результата в таблицу значений / дерево значений. Также есть возможность использовать результат запроса как источник данных для сводной таблицы.

5. Обработка выборки или таблицы значений (например, перебор строк) и выполнение действий, для которых был нужен запрос, например, вывод области при формировании отчета

Приведем простой пример, иллюстрирующий выполнение типич­ного запроса:

//создание объекта Запрос

Запрос = Новый Запрос("

|ВЫБРАТЬ Код, Наименование

|ИЗ Справочник.Номенклатура");

//выполнение запроса и получение результата

РезультатЗапроса = 3апрос.Выполнить ();

//получение выборки из результата запроса

Выборка = РезультатЗапроса.Выбрать();

//обход записей в выборке

Пока Выборка.Следующий() Цикл

//обращение к полям

Сообщить(Выборка.Наименование);

КонецЦикла;

Два основных элемента механизма запросов - это язык запросов и обход выборки из результата запроса. Именно в них заключена основная мощь механизма запросов, поэтому ниже они будут рассмотрены более подробно.

В системе 1С:Предприятие 8 существует Конструктор запросов, который рекомендуется начинающим пользователям для быстрого создания запросов. При использовании Конструктора вы застрахованы от синтаксических ошибок в запросе, и это превращает его в очень удобное средство для первоначального изучения языка запросов.

Конструктор запросов может быть вызван как в режиме «Предприятие», так и в режиме «Конфигуратор».

– изучить самостоятельно

8.2. Язык запросов

Для выполнения запроса необходимо составить текст на специальном языке запросов, который сильно отличается от обычного языка программирования по синтаксису и назначению.

Замечание. Язык запросов системы 1 C:Предприятие 8 очень похож на стандартный SQL*, но имеет некоторые отличия.

Все ключевые слова языка запросов 1С:Предприятие 8 имеют английские эквиваленты, совпадающие там, где это возможно, со стандартным SQL. Например, ключевое слово ВЫБРАТЬ может быть заменено на SELECT, а ключевое слово ИЗ на FROM.

В общем случае текст запроса строится по следующей схеме:

ВЫБРАТЬ <Список полей | *>

[ИЗ <Список таблиц-источников>]

[ГДЕ <Список условий>]

[УПОРЯДОЧИТЬ ПО <Список полей > ] |

[АВТОУПОРЯДОЧИВАНИЕ]

[СГРУППИРОВАТЬ ПО <Список полей>]

[ИТОГИ [<агрегатные функции>] ПО <Список полей> [ОБЩИЕ]]

В квадратных скобках приведены необязательные конструкции. Вертикальной чертой разделены конструкции, предполагающие выбор одного из нескольких элементов. Все конструкции языка запросов с примерами их использования приведены ниже.

  • Предложение ВЫБРАТЬ / SELECT

Предложение ВЫБРАТЬ позволяет указать список полей для выборки. Если вместо перечня полей указана звездочка («*»), тогда это означает, что нужно выбрать все поля таблицы. Указание конкретных полей позволяет выбрать только заданные колонки из исходной таблицы-источника запроса.

В качестве источника данных для запроса можно использовать справочники, документы, журналы документов, регистры и другие таблицы-источники (см. дальше).

Синтаксическая диаграмма конструкции ВЫБРАТЬ такова:

ВЫБРАТЬ [РАЗЛИЧНЫЕ] [ПЕРВЫЕ <Количество>] <Список полей выборки | *>

Примеры:

  1. ВЫБРАТЬ Наименование, Цена ИЗ Справочник.Товары

  2. ВЫБРАТЬ * ИЗ Справочник.Сотрудники

  3. ВЫБРАТЬ Номер, Дата, Представление ИЗ Документ.РасходнаяНакладная

  4. ВЫБРАТЬ * ИЗ РегистрНакопления.Продажи

В системе 1C:Предприятие 8 можно построить запрос без указа­ния ключевого слова ИЗ, тогда список полей должен содержать полные имена таблиц, например:

  1. ВЫБРАТЬ Справочник.Товары.Наименование, Справочник.Товары.Цена

  2. ВЫБРАТЬ Справочник.Сотрудники.*

  • Псевдонимы полей (КАК/ AS)

Для поля может быть назначен псевдоним с помощью ключевого слова КАК. Это позволяет обращаться к полю по псевдониму при указании итогов и порядка сортировки, а также в результате за­проса.

В следующем запросе для полей Наименование и ЕдИзм назначаются псевдонимы:

ВЫБРАТЬ Наименование КАК Товар, Цена, ЕдИзм КАК ЕдиницаИзмерения ИЗ Справочник.Товары

УПОРЯДОЧИТЬ ПО Товар

Результат запроса будет следующий:

Товар

Цена

ЕдиницаИзмерения

Бумага

130

Пачка

Вилы

1000

Шт

Грабли

1500

Шт

Ключевое слово КАК необязательно и может быть опущено, но для повышения наглядности его рекомендуется указывать, осо­бенно на первых порах.

Ниже приведен пример того же запроса без ключевого слова КАК:

ВЫБРАТЬ Наименование Товар, Цена, ЕдИзм ЕдиницаИзмерения

ИЗ Справочник.Товары

УПОРЯДОЧИТЬ ПО Товар

  • Ключевое слово РАЗЛИЧНЫЕ/DISTINCT

Ключевое слово РАЗЛИЧНЫЕ позволяет оставить в результате запроса только отличающиеся строки. Например, если мы выбираем контрагентов из документа РасходнаяНакладная, то вполне вероятно, что один и тот же контрагент, может встретиться в нескольких накладных, поэтому без ключевого слова РАЗЛИЧНЫЕ он будет присутствовать в результате запроса несколько раз.

Например, в результате приведенного ниже запроса несколько раз встречается контрагент ООО «Новый мир»:

ВЫБРАТЬ Контрагент ИЗ Документ.РасходнаяНакладная

Контрагент

ООО «Новый мир»

ЗАО «Стройметмаш»

ООО «Новый мир»

ООО «Механика»

Если же указать ключевое слово РАЗЛИЧНЫЕ, то повторяющие­ся записи из результата запроса будут удалены:

ВЫБРАТЬ РАЗЛИЧНЫЕ Контрагент ИЗ Документ.РасходнаяНакладная

Контрагент

ООО «Новый мир»

ЗАО «Стройметмаш»

ООО «Механика»

  • Ключевое слово ПЕРВЫЕ / ТОР

Данное ключевое слово позволяет ограничить выборку несколькими первыми записями. Часто это ключевое слово применяется в комбинации с сортировкой (см. предложение УПОРЯДОЧИТЬ ПО).

Допустим, требуется выбрать 3 самых дорогих товара. Это реализуется следующим запросом:

ВЫБРАТЬ ПЕРВЫЕ 3 Наименование, Цена

ИЗ Справочник.Номенклатура

УПОРЯДОЧИТЬ ПО Цена УБЫВ

Результат запроса будет такой:

Наименование

Цена

ЖК-Монитор LG Flatron 21"

1500

Компьютер Formoza

1450

ЖК-Монитор LG Flatron 17"

1200

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]