Запросы 1С:Предприятие 8. Основы работы

Этой статьей мы начинаем цикл, посвященный работе с запросами в системе 1С:Предприятие версии 8.1 и выше.

Оглавление:

  1. Основы работы.
  2. Параметры и операторы сравнения.
  3. Условия отбора.
  4. Группировки.
  5. Итоги.
  6. Вложенные запросы.

Запрос — это мощнейший инструмент, служащий для быстрого (по сравнению со всеми другими способами) получения и обработки данных, содержащихся в различных объектах информационной базы 1С.

Создание запроса

Запрос создается как отдельный объект, который имеет обязательный атрибут Текст, куда собственно и помещается сам запрос. Кроме этого, в запрос могут быть переданы различные параметры, необходимые для его выполнения. После того, как текст и параметры запроса заполнены, запрос необходимо выполнить и поместить результат выполнения в выборку или таблицу значений. Выглядит это все примерно так:

//Создаем запрос
Запрос = новый Запрос;

//Заполняем текст запроса
Запрос.Текст="Тут пишем текст запроса";

//Передаем в запрос параметры
Запрос.УстановитьПараметр("ИмяПараметра", ЗначениеПараметра);

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

//Выгружаем результат запроса в выборку
Выборка=Результат.Выбрать();

//Выгружаем результат запроса в таблицу значений
Таблица=Результат.Выгрузить();

//Последние действия можно объединить
Выборка=Запрос.Выполнить().Выбрать();
//или
Таблица=Запрос.Выполнить().Выгрузить();

Основы языка запросов 1С

Простейшие и наиболее часто применяемые запросы служат для получения данных из какого-то источника. Источником могут являться практически все объекты, содержащие какие-либо данные: справочники, документы, регистры, константы, перечисления, планы видов характеристик и т.д.

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

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

Например, если необходимо получить значения всех реквизитов справочника Контрагенты, то запрос будет выглядеть так:

Запрос.Текст = "ВЫБРАТЬ
|   *
|ИЗ
|   Справочник.Контрагенты"
;

Если же нужно получить только отдельные реквизиты, то — так:

Запрос.Текст = "ВЫБРАТЬ
|   Код,
|   Наименование,
|   Родитель
|ИЗ
|   Справочник.Контрагенты"
;

Для получения такого текста запроса в Конструкторе запроса нужно выбрать соответствующие поля на вкладке Таблицы и поля.

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

Запрос.Текст = "ВЫБРАТЬ
|   Клиенты.Код КАК Номер,
|   Клиенты.Наименование КАК Имя,
|   1000 КАК ПолеСоЗначением
|ИЗ
|   Справочник.Контрагенты КАК Клиенты"
;

Выборка = Запрос.Выполнить().Выбрать();

Пока Выборка.Следующий() Цикл
НомерКлиента = Выборка.Номер;
ИмяКлиента = Выборка.Имя;
Знач = Выборка.ПолеСоЗначением;
КонецЦикла;

Для задания псевдонимов служит вкладка Объединения/Псевдонимы в Конструкторе запросов.

Конструктор запросов 1С. ПсевдонимыА поле с фиксированным или рассчитываемым значением создается вручную на вкладке Таблицы и поля, в колонке Поля.

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

//Упорядочим клиентов по имени от А до Я и выберем первых 10
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 10
|   Клиенты.Код КАК Номер,
|   Клиенты.Наименование КАК Имя,
|   1000 КАК ПолеСоЗначением
|ИЗ
|   Справочник.Контрагенты КАК Клиенты
|УПОРЯДОЧИТЬ ПО
|   Имя"
;

//Выберем самого последнего по алфавиту клиента
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
|   Клиенты.Код КАК Номер,
|   Клиенты.Наименование КАК Имя,
|   1000 КАК ПолеСоЗначением
|ИЗ
|   Справочник.Контрагенты КАК Клиенты
|УПОРЯДОЧИТЬ ПО
|   Имя УБЫВ"
;

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

//Выборка разрешенных пользователю данных
Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
|   Клиенты.Код КАК Номер,
|   Клиенты.Наименование КАК Имя,
|   1000 КАК ПолеСоЗначением
|ИЗ
|   Справочник.Контрагенты КАК Клиенты"
;

//Выборка неповторяющихся элементов
Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
|   Клиенты.Код КАК Номер,
|   Клиенты.Наименование КАК Имя,
|   1000 КАК ПолеСоЗначением
|ИЗ
|   Справочник.Контрагенты КАК Клиенты"
;

Порядок задается на вкладке Порядок в Конструкторе запросов, количество выбираемых элементов, параметры разрешенности и повторяемости — на вкладке Дополнительно.

Конструктор запроса 1С. Параметры выборки

Конструктор запросов 1С. Упорядочивание.Продолжение следует…

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *