21.87M

Лекция2_Структура и синтаксис запроса.pptx

1.

Структура и синтаксис
запроса

2.

3.

Секция Выбрать
1. * - все поля, список через запятую.
2. В качестве полей могут использоваться вычисляемые выражения,
например, параметры запроса, арифметические, логические, строковые
выражения и выражения с оператором выбора.
3. Виртуальные поля – это поля, которые не хранятся в базе данных, а
генерируются системой "на лету", например, поле "Представление" для
таблицы справочника и документа, или поле "МоментВремени" для
документа.

4.

4. Псевдонимы полей выборки присваиваются с помощью
(необязательного) ключевого слова КАК, либо в конструкторе на
закладке "Объединения и Псевдонимы". В предложениях
УПОРЯДОЧИТЬ ПО и ИТОГИ можно использовать псевдонимы.
5. Для сворачивания повторяющихся записей (показа их только
один раз) существует ключевое слово РАЗЛИЧНЫЕ.
6. Ключевое слово РАЗРЕШЕННЫЕ означает, что запрос выберет
только те записи, на которые у текущего пользователя есть права.
7. Конструкция ПЕРВЫЕ позволяет задать предельное количество
строк в результате запроса. Будут отобраны самые первые (в
соответствии с правилами упорядочивания результатов запроса)
строки. задается целым числом.

5.

6.

7.

8.

9.

Секция ИЗ
1. Одна или несколько таблиц с описанием псевдонимов
2. Отсутствие псевдонимов таблиц может привести к
неразрешимым ошибкам в тексте запроса. Например, имя поля
совпадает с именем таблицы.

10.

Секция ГДЕ
• Условие на выбор конкретных записей задается с помощью
конструкции ГДЕ . В конструкторе запроса условие определяется
на закладке «Условия».
• Поля, выбранные в конструкторе на вкладке Условия, становятся
параметрами в запросе - &Параметр

11.

Параметры в запросах
Выбрать Ссылка, ДатаРождения
Из Справочник.Сотрудники
Где ДатаРождения>=&ДатаРождения
//параметр в запросе

12.

Фильтр в запросе

13.

14.

15.

16.

Параметры в запросах
// Сделаем отбор продаж за 1 квартал 2014 года.
Запрос = Новый Запрос(
"ВЫБРАТЬ
| Ссылка
|ИЗ
| Документ.ПродажаЕды
|ГДЕ
| Дата МЕЖДУ &НачалоПериода И &ОкончаниеПериода
|УПОРЯДОЧИТЬ ПО
| Дата ВОЗР"
);
Запрос.УстановитьПараметр("НачалоПериода", '20140101000000');
Запрос.УстановитьПараметр("ОкончаниеПериода", '20140331235959');

17.

Функции, параметры в запросе
Запрос = Новый Запрос(
"ВЫБРАТЬ
| Ссылка,
| ДОБАВИТЬКДАТЕ(Дата, Квартал, 1) КАК ПлюсКвартал,
| РАЗНОСТЬДАТ(Дата, &ВыбДата, Месяц) КАК РазностьВМесяцах,
| КВАРТАЛ(Дата) КАК Квартал,
| МЕСЯЦ(Дата) КАК Месяц,
| ДЕНЬ(Дата) КАК День
|ИЗ
| Документ.ПродажаЕды
|ГДЕ
| Дата МЕЖДУ
| НАЧАЛОПЕРИОДА(&ВыбДата, Год) И
| КОНЕЦПЕРИОДА(&ВыбДата, Год)" );
Запрос.УстановитьПараметр("ВыбДата", '20140601');

18.

Функции в запросах
// Нужное значение даты можно передать в запрос через
// параметр, либо указать значение даты прямо
// в тексте запроса.
Запрос = Новый Запрос(
"ВЫБРАТЬ
| ДАТАВРЕМЯ(2013, 12, 31, 23, 59, 59) КАК
| ЗаСекундуДоНовогоГода" );

19.

Как получить начало или конец периода в запросах 1С 8.3, 8.2:
НАЧАЛОПЕРИОДА(Дата, Период)
КОНЕЦПЕРИОДА(Дата, Период)
Как добавить сдвиг к дате в запросах 1С 8.3, 8.2:
ДОБАВИТЬКДАТЕ(Дата, Период, Количество)
Как вычислить разность между датами в запросах 1С 8.3, 8.2:
РАЗНОСТЬДАТ(Дата1, Дата2, Период)
Как вычислить квартал, месяц или день даты в запросах 1С 8.3, 8.2:
КВАРТАЛ(Дата), Месяц(Дата), День(Дата)

20.

Период принимает одно из значений:
Секунда
Минута
Час
День
Неделя
Декада
Месяц
Квартал
Полугодие
Год

21.

Функции, параметры в запросе
Запрос = Новый Запрос(
"ВЫБРАТЬ
| Ссылка,
| ДОБАВИТЬКДАТЕ(Дата, Квартал, 1) КАК ПлюсКвартал,
| РАЗНОСТЬДАТ(Дата, &ВыбДата, Месяц) КАК РазностьВМесяцах,
| КВАРТАЛ(Дата) КАК Квартал,
| МЕСЯЦ(Дата) КАК Месяц,
| ДЕНЬ(Дата) КАК День
|ИЗ
| Документ.ПродажаЕды

22.

Параметры
Критерии получения данных для отчета, например:
• Дата (расчета остатков, получения курсов, получения цен)
• Период (получения продаж, получения данных
по взаиморасчетам)
Могут быть явно определены в запросе:
• При использовании виртуальных таблиц регистров некоторые
параметры добавляются автоматически
• Перед формированием отчета пользователь устанавливает
значения параметров (либо параметры устанавливаются
программно)

23.

24.

25.

26.

27.

28.

29.

30.

31.

32.

33.

34.

35.

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

36.

37.

38.

39.

40.

41.

Запрос к табличной части документа

42.

43.

44.

45.

46.

Выбор контрагентов без групп

47.

48.

49.

50.

Произвольное условие

51.

52.

53.

54.

Произвольное условие в СКД

55.

56.

57.

58.

59.

60.

61.

Установка параметра в программном коде

62.

63.

64.

65.

Сложные условия
• В условиях можно использовать логические операторы И, ИЛИ,
НЕ, а так же операторные скобки, при помощи которых можно
задавать более сложные условия отбора.

66.

Условие отбора
// Для задания условия отбора данных из исходных таблиц
// используется секция ГДЕ.
// Сделаем отбор продуктов с калорийностью
// от 100 до 300.
Запрос = Новый Запрос(
«ВЫБРАТЬ
| Наименование,
| Калорийность
| ИЗ
| Справочник.Номенклатура
| ГДЕ
| Калорийность > 100 И Калорийность < 300" );

67.

Входит в список (В)

68.

69.

Параметр списка заключается в круглые
скобки

70.

71.

72.

Поиск по неточному соответствию
Операция Подобно только для текстовых типов данных.
Используется шаблон %, в начале строки, в конце или в середине любое количество любых символов.

73.

74.

75.

76.

77.

78.

79.

Сравнение с незаполненным условием
1. Поставить галку Произвольное условие
2. Сравнение на =“ ” с пустой строкой или незаполненное значение
в СКД

80.

Упорядочение
// Чтобы сортировать строки в результате запроса
// используется секция УПОРЯДОЧИТЬ ПО.
// Требуется вывести продукты, упорядоченные
// сначала по возрастанию цвета, а затем
// по убыванию калорийности.
Запрос = Новый Запрос(
"ВЫБРАТЬ
| Наименование,
| Цвет,
| Калорийность
|ИЗ
| Справочник.Номенклатура
|УПОРЯДОЧИТЬ ПО
| Цвет ВОЗР,
| Калорийность УБЫВ" );

81.

Упорядочение с помощью выражения
"ВЫБРАТЬ
| Наименование,
| Белки,
| Углеводы,
| Жиры,
| Вода
|ИЗ
| Справочник.Номенклатура
|УПОРЯДОЧИТЬ ПО
| (Белки + Углеводы) УБЫВ" );

82.

// К примеру, требуется вывести только тех контрагентов, у которых
// значение поля Пол равно значению перечисления Мужской.
Запрос = Новый Запрос(
"ВЫБРАТЬ
| Наименование,
| Пол
|ИЗ
| Справочник.Контрагенты
|ГДЕ
| Пол = ЗНАЧЕНИЕ(Перечисление.Пол.Мужской)
|" );

83.

Группировка полей
Группировка - это свёртка строчек таблицы по определенному
признаку. В группировке участвуют поля двух типов:
группировочные и группируемые. Группировочные - это те поля,
по которым (в разрезе которых) идёт свёртка.
Группируемые - это те поля, которые сворачиваются (например,
суммируются).

84.

85.

Свертка полей
Свёртка группируемых полей проводится при помощи агрегатных
функций: СУММА, СРЕДНЕЕ, МИНИМУМ, МАКСИМУМ,
КОЛИЧЕСТВО [РАЗЛИЧНЫЕ]. Обратите внимание, что при
группировке (в отличие от итогов) происходит удаление детальных
записей (строк) таблицы. То есть при подведении итогов - записей в
результате запроса становится больше, а при группировке меньше.

86.

Без группировки

87.

88.

С группировкой
English     Русский Правила