Перейти к содержимому

Работа с запросами

Запросы - основной способ “достать” данные из базы данных, для дальнейшего использования. В случае формирования печатной формы, это основополагающая часть работы. Поэтому работа с ними закладывает “фундамент” данных, с которыми вы потом сможете оперировать. Стоит уделять особое внимание запрашиваемым данным, ведь как правило, ошибки в запросах могут привести к тому, что формирование печатной формы будет неэффективным.

С точки зрения конструктора, запросы бывают двух видов:

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

1-й вид запросов позволяет сформировать Наборы (об этом мы поговорим позже). 2-й вид запросов позволяет более эффективно получать данные из базы.

Основные принципы построения запроса 1С – ВЫБРАТЬ <СписокПолей> ИЗ <НазваниеТаблицы> ГДЕ <Условия>

Пример построения такого запроса 1С:

ВЫБРАТЬ
//список полей, которые надо выбрать
Ссылка,
Наименование,
Код
ИЗ
//наименование таблицы, откуда выбираем данные
//список таблиц – это список объектов в окне конфигуратора
Справочник.Номенклатура
ГДЕ
//указываем отбор
ВидТовара = &Услуга //отбор по внешнему значению
Или Услуга // «Услуга» реквизит типа Булево, отбор по значению Истина
УПОРЯДОЧИТЬ ПО
//Сортировка
Наименование

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

  • РегистрСведений.ИмяРегистра.СрезПоследних(&Дата) – запрос 1С из регистра сведений, если он является периодическим, на определенную дату
  • РегистрНакопления.ИмяРегистра.Остатки(&Дата) – запрос 1С из регистра остатков на определенную дату
  • РегистрНакопления.ИмяРегистра.Обороты(&ДатаНачала, &ДатаОкончания) – запрос 1С из регистра оборотов за период с даты начала по дату окончания.

Когда мы запрашиваем список каких то данных – работают основные принципы. Но мы можем запросить также цифры и запрос может нам их посчитать (сложить например). Например мы хотим посчитать с помощью запроса 1С количество документов в базе 1С:

ВЫБРАТЬ
//Количество(ИмяПоля) – считает количество
//Поле КАК ДругоеИмя – переименовывает поле
Количество(Ссылка) КАК КоличествоПроведенныхДокументов
ИЗ
Документ.РеализацияТоваровУслуг
ГДЕ
Проведен

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

ВЫБРАТЬ
//просто поле документа
Организация,
//считаем количество
Количество(Ссылка) КАК КоличествоПоОрганизациям
ИЗ
Документ.РеализацияТоваровУслуг
ГДЕ
Проведен
СГРУППИРОВАТЬ ПО
//необходимо использовать, если в списке полей есть функция подсчета()
// и одновременно одно или несколько полей – тогда нужно группировать по этим полям
Организация

Этот запрос 1С вернет нам количество документов по каждой организации (также говорят «в разрезе организаций»). Посчитаем дополнительно с помощью запроса 1С сумму этих документов:

ВЫБРАТЬ
//просто поле документа
Организация,
//считаем количество
Количество(Ссылка) КАК КоличествоПоОрганизациям,
//считаем сумму
Сумма(СуммаДокумента) КАК Сумма
ИЗ
Документ.РеализацияТоваровУслуг
ГДЕ
Проведен
СГРУППИРОВАТЬ ПО
//необходимо использовать, если в списке полей есть функция подсчета()
//и одновременно одно или несколько полей – тогда нужно группировать по этим полям
Организация

Язык запросов 1С обширен и сложен и мы не будем рассматривать в одном уроке все его возможности – читайте наши следующие уроки.

Кратко о дополнительных возможностях языка запросов 1С:

  • Соединение данных из нескольких таблиц
  • Вложенные запросы
  • Создание временных таблиц
  • Запрос из таблицы значений
  • Использование встроенных функций получения значения и манипулирования значениями

Чтобы не писать текст запроса руками – существует конструктор запросов 1С. Конструктор можно вызвать по нажатию кнопки image.

Выберите в конструкторе запросов 1С нужную таблицу слева и перетащите правее.

КАРТИНКА

Выберите в конструкторе запросов 1С из таблицы нужные поля и перетащите правее. Если Вы хотели бы не просто выбрать поле, а применить к нему какую либо функцию суммирования – после перетаскивания щелкните по полю два раза мышкой. На закладке Группировка после этого нужно будет выбрать (перетащить) для группировки нужные поля.

КАРТИНКА

На закладке Условия в конструкторе запросов 1С Вы можете выбрать нужные отборы таким же способом (перетащив поля, по которым Вы будете делать отбор). Не забудьте выбрать верное условие.

КАРТИНКА

На закладке Порядок – указывается сортировка. На закладке Итоги – суммирование итогов.

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