Слайд 2Два способа решения задачи
1-й способ. Используется язык программирования:
Выборка = Справочники.Сотрудники.Выбрать();
Пока Выборка.Следующий()
![Два способа решения задачи 1-й способ. Используется язык программирования: Выборка = Справочники.Сотрудники.Выбрать();](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/971378/slide-1.jpg)
Цикл
Если Выборка.Оклад > 10000 Тогда
Сообщить (Выборка.Наименование + " имеет оклад " + Выборка.Оклад); КонецЕсли;
КонецЦикла;
2-й способ. Используется механизм запросов:
Запрос = Новый Запрос("
| ВЫБРАТЬ * ИЗ Справочник.Сотрудники
| ГДЕ Оклад > 10000");
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить(Выборка.Наименование + " имеет оклад " + Выборка.Оклад);
КонецЦикла;
Слайд 3Объекты для работы с запросами
Запрос,
РезультатЗапроса,
ВыборкаИзРезультатаЗапроса
![Объекты для работы с запросами Запрос, РезультатЗапроса, ВыборкаИзРезультатаЗапроса](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/971378/slide-2.jpg)
Слайд 4Общая схема выполнения запроса
![Общая схема выполнения запроса](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/971378/slide-3.jpg)
Слайд 5Пример запроса
//создание объекта Запрос
Запрос = Новый Запрос("
|ВЫБРАТЬ Код, Наименование
|ИЗ Справочник.Номенклатура");
//выполнение запроса
![Пример запроса //создание объекта Запрос Запрос = Новый Запрос(" |ВЫБРАТЬ Код, Наименование](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/971378/slide-4.jpg)
и получение результата
РезультатЗапроса = Запрос.Выполнить();
//получение выборки из результата запроса
Выборка = РезультатЗапроса.Выбрать();
//обход записей в выборке
Пока Выборка.Следующий() Цикл
//обращение к полям
Сообщить(Выборка.Наименование);
КонецЦикла;
Слайд 6Язык запросов
ВЫБРАТЬ <Список полей | *>
[ИЗ <Список таблиц-источников>]
[ГДЕ <Список условий>]
[УПОРЯДОЧИТЬ ПО <Список
![Язык запросов ВЫБРАТЬ [ИЗ ] [ГДЕ ] [УПОРЯДОЧИТЬ ПО ] | [АВТОУПОРЯДОЧИВАНИЕ]](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/971378/slide-5.jpg)
полей >] | [АВТОУПОРЯДОЧИВАНИЕ]
[СГРУППИРОВАТЬ ПО <Список полей>]
[ИТОГИ [<агрегатные функции>] ПО <Список полей> [,ОБЩИЕ]]
Слайд 7Предложение ВЫБРАТЬ / SELECT
Синтаксическая диаграмма
ВЫБРАТЬ [РАЗЛИЧНЫЕ] [ПЕРВЫЕ <Количество>] <Список полей выборки |
![Предложение ВЫБРАТЬ / SELECT Синтаксическая диаграмма ВЫБРАТЬ [РАЗЛИЧНЫЕ] [ПЕРВЫЕ ] Примеры: ВЫБРАТЬ](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/971378/slide-6.jpg)
*>
Примеры:
ВЫБРАТЬ Наименование, Цена ИЗ Справочник.Товары
ВЫБРАТЬ * ИЗ Справочник.Сотрудники
ВЫБРАТЬ Номер, Дата, Представление ИЗ Документ.РасходнаяНакладная
ВЫБРАТЬ * ИЗ РегистрНакопления.Продажи
Слайд 8Псевдонимы полей (КАК/ AS)
ВЫБРАТЬ Наименование КАК Товар, Цена, ЕдИзм КАК ЕдиницаИзмерения
ИЗ Справочник.Товары
УПОРЯДОЧИТЬ
![Псевдонимы полей (КАК/ AS) ВЫБРАТЬ Наименование КАК Товар, Цена, ЕдИзм КАК ЕдиницаИзмерения](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/971378/slide-7.jpg)
ПО Товар
Слайд 9Ключевое слово РАЗЛИЧНЫЕ / DISTINCT
ВЫБРАТЬ Контрагент ИЗ Документ.РасходнаяНакладная
Контрагент
ООО «Новый мир»
ЗАО «Стройметмаш»
ООО «Новый
![Ключевое слово РАЗЛИЧНЫЕ / DISTINCT ВЫБРАТЬ Контрагент ИЗ Документ.РасходнаяНакладная Контрагент ООО «Новый](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/971378/slide-8.jpg)
мир»
ООО «Механика»
ВЫБРАТЬ РАЗЛИЧНЫЕ Контрагент ИЗ Документ.РасходнаяНакладная
Контрагент
ООО «Новый мир»
ЗАО «Стройметмаш»
ООО «Механика»
Слайд 10Ключевое слово ПЕРВЫЕ / ТОР
ВЫБРАТЬ ПЕРВЫЕ 3 Наименование, Цена ИЗ Справочник.Номенклатура УПОРЯДОЧИТЬ
![Ключевое слово ПЕРВЫЕ / ТОР ВЫБРАТЬ ПЕРВЫЕ 3 Наименование, Цена ИЗ Справочник.Номенклатура УПОРЯДОЧИТЬ ПО Цена УБЫВ](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/971378/slide-9.jpg)
ПО Цена УБЫВ
Слайд 11Псевдонимы источников КАК/AS
ВЫБРАТЬ Спр.Наименование,
Спр.Цена,
Спр.Страна ИЗ Справочник.Номенклатура КАК Спр
![Псевдонимы источников КАК/AS ВЫБРАТЬ Спр.Наименование, Спр.Цена, Спр.Страна ИЗ Справочник.Номенклатура КАК Спр](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/971378/slide-10.jpg)
Слайд 12Запросы к табличным частям
ВЫБРАТЬ Товар, Цена, Количество, Сумма ИЗ Документ.РасходнаяНакладная.Состав
![Запросы к табличным частям ВЫБРАТЬ Товар, Цена, Количество, Сумма ИЗ Документ.РасходнаяНакладная.Состав](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/971378/slide-11.jpg)
Слайд 13Запросы к табличным частям
ВЫБРАТЬ Ссылка.Дата, Ссылка.Номер,
Номенклатура, Цена, Количество, Сумма ИЗ Документ.РасходнаяНакладная.Состав
![Запросы к табличным частям ВЫБРАТЬ Ссылка.Дата, Ссылка.Номер, Номенклатура, Цена, Количество, Сумма ИЗ Документ.РасходнаяНакладная.Состав](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/971378/slide-12.jpg)
Слайд 14Вложенные запросы в списке источников
ВЫБРАТЬ Товары.Номенклатура КАК Товар,
Товары.Номенклатура.ЗакупочнаяЦена КАК Цена
ИЗ (
![Вложенные запросы в списке источников ВЫБРАТЬ Товары.Номенклатура КАК Товар, Товары.Номенклатура.ЗакупочнаяЦена КАК Цена](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/971378/slide-13.jpg)
ВЫБРАТЬ Номенклатура ИЗ Документ.РасходнаяНакладная.Состав
ОБЪЕДИНИТЬ
ВЫБРАТЬ Номенклатура ИЗ Документ.ПриходнаяНакладная.Состав
) КАК Товары
СГРУППИРОВАТЬ ПО Товары.Номенклатура
Слайд 15Конструкция СОЕДИНЕНИЕ...ПО/ JOIN...ON
ВЫБРАТЬ Док.Номенклатура,
Спр.ЗакупочнаяЦена КАК Цена, Спр.Родитель КАК Группа
ИЗ Документ.РасходнаяНакладная.Состав КАК Док
![Конструкция СОЕДИНЕНИЕ...ПО/ JOIN...ON ВЫБРАТЬ Док.Номенклатура, Спр.ЗакупочнаяЦена КАК Цена, Спр.Родитель КАК Группа ИЗ](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/971378/slide-14.jpg)
СОЕДИНЕНИЕ Справочник. Номенклатура КАК Спр
ПО Док.Номенклатура = Спр.Ссылка
Слайд 16Левое внешнее соединение
ВЫБРАТЬ Спр.Наименование, Peг.Курс
ИЗ Справочник.Валюты КАК Спр
ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ
РегистрСведений.КурсыВалют.СрезПоследних
![Левое внешнее соединение ВЫБРАТЬ Спр.Наименование, Peг.Курс ИЗ Справочник.Валюты КАК Спр ЛЕВОЕ ВНЕШНЕЕ](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/971378/slide-15.jpg)
КАК Peг
ПО Спр.Ссылка = Peг.Валюта
Слайд 17Правое внешнее соединение
ВЫБРАТЬ Спр.Наименование, Peг.Курс
ИЗ РегистрСведений.КурсыВалют.СрезПоследних КАК Peг ПРАВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ Справочник.Валюты
![Правое внешнее соединение ВЫБРАТЬ Спр.Наименование, Peг.Курс ИЗ РегистрСведений.КурсыВалют.СрезПоследних КАК Peг ПРАВОЕ ВНЕШНЕЕ](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/971378/slide-16.jpg)
КАК Спр ПО Спр.Ссылка = Peг.Валюта
Слайд 18Полное внешнее соединение
ПОЛНОЕ [ВНЕШНЕЕ] СОЕДИНЕНИЕ
В результат запроса будут включены все записи из
![Полное внешнее соединение ПОЛНОЕ [ВНЕШНЕЕ] СОЕДИНЕНИЕ В результат запроса будут включены все](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/971378/slide-17.jpg)
обоих источников; они будут соединены друг с другом при выполнении указанного условия
Слайд 19Предложение ГДЕ / WHERE
ВЫБРАТЬ Наименование, ЗакупочнаяЦена КАК Цена
ИЗ Справочник.Номенклатура ГДЕ ЗакупочнаяЦена
![Предложение ГДЕ / WHERE ВЫБРАТЬ Наименование, ЗакупочнаяЦена КАК Цена ИЗ Справочник.Номенклатура ГДЕ ЗакупочнаяЦена >= 1300](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/971378/slide-18.jpg)
>= 1300
Слайд 20Логические операторы И, ИЛИ, НЕ
ВЫБРАТЬ Наименование,
ЗакупочнаяЦена КАК Цена,
СтранаПроисхождения КАК Страна
ИЗ Справочник.Номенклатура
![Логические операторы И, ИЛИ, НЕ ВЫБРАТЬ Наименование, ЗакупочнаяЦена КАК Цена, СтранаПроисхождения КАК](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/971378/slide-19.jpg)
ГДЕ СтранаПроисхождения = "Россия" И ЗакупочнаяЦена < 1000
Слайд 21Параметры в языке запросов
ВЫБРАТЬ Наименование, ЗакупочнаяЦена
ИЗ Справочник.Номенклатура
ГДЕ ЗакупочнаяЦена >= &МинЦена
Запрос.УстановитьПараметр("МинЦена",1000);
//выполнение запроса с
![Параметры в языке запросов ВЫБРАТЬ Наименование, ЗакупочнаяЦена ИЗ Справочник.Номенклатура ГДЕ ЗакупочнаяЦена >=](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/971378/slide-20.jpg)
установленными параметрами
Результат = Запрос.Выполнить();
Слайд 22Предложение УПОРЯДОЧИТЬ ПО / ORDER BY
ВЫБРАТЬ Код, Наименование ИЗ Справочник.Номенклатура
УПОРЯДОЧИТЬ ПО
![Предложение УПОРЯДОЧИТЬ ПО / ORDER BY ВЫБРАТЬ Код, Наименование ИЗ Справочник.Номенклатура УПОРЯДОЧИТЬ](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/971378/slide-21.jpg)
Наименование ВОЗР
Ключевое слово ПЕРВЫЕ
ВЫБРАТЬ ПЕРВЫЕ 5 Код, Наименование, ЗакупочнаяЦена КАК Цена
ИЗ Справочник.Номенклатура
УПОРЯДОЧИТЬ ПО Цена УБЫВ
Слайд 23Агрегатные функции в запросе
СУММА (SUM)
Вычисляет сумму всех значений, содержащихся в столбце.
МАКСИМУМ (МАХ)
Находит
![Агрегатные функции в запросе СУММА (SUM) Вычисляет сумму всех значений, содержащихся в](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/971378/slide-22.jpg)
наибольшее значение в столбце.
МИНИМУМ (MIN)
Находит наименьшее значение в столбце.
СРЕДНЕЕ (AVG)
Вычисляет среднее арифметическое значение по столбцу.
КОЛИЧЕСТВО (COUNT)
Подсчитывает количество значений, содержащихся в столбце. Если в качестве параметра данной функции передать звездочку («*»), то функция подсчитает количество строк в таблице результата запроса.
Слайд 24Пример запроса
ВЫБРАТЬ
СУММА(Оклад) КАК ФондОплатыТруда,
МИНИМУМ(Оклад) КАК МинОклад,
МАКСИМУМ(Оклад) КАК МаксОклад,
СРЕДНЕЕ(Оклад) КАК СреднийОклад,
КОЛИЧЕСТВО(*) КАК Количество
![Пример запроса ВЫБРАТЬ СУММА(Оклад) КАК ФондОплатыТруда, МИНИМУМ(Оклад) КАК МинОклад, МАКСИМУМ(Оклад) КАК МаксОклад,](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/971378/slide-23.jpg)
ИЗ Справочник.Сотрудники
Слайд 25Пример запроса
Сколько сотрудников, у которых оклад больше заданной величины?
ВЫБРАТЬ КОЛИЧЕСТВО(*) КАК Количество
![Пример запроса Сколько сотрудников, у которых оклад больше заданной величины? ВЫБРАТЬ КОЛИЧЕСТВО(*)](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/971378/slide-24.jpg)
ИЗ Справочник.Сотрудники ГДЕ Оклад > &ВыбОклад
Сколько различных клиентов купили хоть что-нибудь за заданный период?
ВЫБРАТЬ КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Контрагент) КАК Количество ИЗ Документ.РасходнаяНакладная ГДЕ Дата МЕЖДУ &НачДата И &КонДата
Слайд 26Предложение СГРУППИРОВАТЬ ПО / GROUP BY
ВЫБРАТЬ Номенклатура, СУММА(Сумма) КАК ОбъемПродаж
ИЗ Документ.РасходнаяНакладная.Состав
![Предложение СГРУППИРОВАТЬ ПО / GROUP BY ВЫБРАТЬ Номенклатура, СУММА(Сумма) КАК ОбъемПродаж ИЗ](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/971378/slide-25.jpg)
КАК ДокСостав
ГДЕ ДокСостав.Ссылка.Дата МЕЖДУ &НачДата И &КонДата
СГРУППИРОВАТЬ ПО Номенклатура АВТОУПОРЯДОЧИВАНИЕ
Слайд 27Пример запроса
ВЫБРАТЬ
Подразделение,
СУММА(Оклад) КАК ФондОплатыТруда
МИНИМУМ(Оклад) КАК МинОклад,
МАКСИМУМ(Оклад) КАК МаксОклад,
СРЕДНЕЕ(Оклад) КАК СреднийОклад,
КОЛИЧЕСТВО(*) КАК КоличествоЧеловек
![Пример запроса ВЫБРАТЬ Подразделение, СУММА(Оклад) КАК ФондОплатыТруда МИНИМУМ(Оклад) КАК МинОклад, МАКСИМУМ(Оклад) КАК](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/971378/slide-26.jpg)
ИЗ Справочник.Сотрудники СГРУППИРОВАТЬ ПО Подразделение
Слайд 28Предложение ИТОГИ / TOTALS
Общие итоги
ВЫБРАТЬ Номенклатура, Сумма ИЗ РегистрНакопления.Продажи ИТОГИ СУММА(Сумма) ПО
![Предложение ИТОГИ / TOTALS Общие итоги ВЫБРАТЬ Номенклатура, Сумма ИЗ РегистрНакопления.Продажи ИТОГИ СУММА(Сумма) ПО Общие](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/971378/slide-27.jpg)
Общие
Слайд 29Пример
Запрос = Новый Запрос("
| ВЫБРАТЬ Номенклатура, Сумма
| ИЗ РегистрНакопления.Продажи ИТОГИ
![Пример Запрос = Новый Запрос(" | ВЫБРАТЬ Номенклатура, Сумма | ИЗ РегистрНакопления.Продажи](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/971378/slide-28.jpg)
СУММА(Сумма) ПО Общие");
Выборка = Запрос.Выполнить().Выбрать ();
Пока Выборка.Следующий() Цикл
Если Выборка.ТипЗаписи() = ТипЗаписиЗапроса.ОбщийИтог Тогда
Сообщить("ОБЩИЙ ИТОГ: " +Выборка.СуммаПродажи);
Иначе
Сообщить("Товар/услуга: " + Выборка.Номенклатура +
"Сумма: " + Выборка.СуммаПродажи);
КонецЕсли;
КонецЦикла;
Слайд 30Предложение ИТОГИ / TOTALS
Итоги по группировкам
ВЫБРАТЬ Номенклатура, Период, Сумма ИЗ РегистрНакопления.Продажи ИТОГИ
![Предложение ИТОГИ / TOTALS Итоги по группировкам ВЫБРАТЬ Номенклатура, Период, Сумма ИЗ](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/971378/slide-29.jpg)
СУММА(Сумма) ПО Номенклатура АВТОУПОРЯДОЧИВАНИЕ
Слайд 31Обработка результата запроса
1 вариант:
Запрос = Новый Запрос;
ТекстЗапроса = "ВЫБРАТЬ * ИЗ Справочник.Сотрудники";
Запрос.Текст
![Обработка результата запроса 1 вариант: Запрос = Новый Запрос; ТекстЗапроса = "ВЫБРАТЬ](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/971378/slide-30.jpg)
= ТекстЗапроса;
РезультатЗапроса = Запрос.Выполнить();
ВыборкаИзРезультатаЗапроса = РезультатЗапроса.Выбрать();
2 вариант:
Запрос = Новый Запрос("ВЫБРАТЬ * ИЗ Справочник.Сотрудники");
ВыборкаИзРезультатаЗапроса = Запрос.Выполнить().Выбрать());
Слайд 32Выборка из результата запроса
ВЫБРАТЬ Номенклатура, Количество
из Документ.РасходнаяНакладная.Состав
УПОРЯДОЧИТЬ ПО Номенклатура
ИТОГИ Сумма(Количество) ПО Номенклатура,
![Выборка из результата запроса ВЫБРАТЬ Номенклатура, Количество из Документ.РасходнаяНакладная.Состав УПОРЯДОЧИТЬ ПО Номенклатура](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/971378/slide-31.jpg)
Номенклатура Иерархия
Слайд 33Обход по группировкам
Запрос = Новый Запрос("
|ВЫБРАТЬ Товар, Количество
|ИЗ Документ.РасходнаяНакладная.Состав
|УПОРЯДОЧИТЬ
![Обход по группировкам Запрос = Новый Запрос(" |ВЫБРАТЬ Товар, Количество |ИЗ Документ.РасходнаяНакладная.Состав](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/971378/slide-32.jpg)
ПО Товар ИТОГИ СУММА(Количество) ПО Товар,
|Товар ИЕРАРХИЯ");
РезультатЗапроса = Запрос.Выполнить();
СпособВыборки = ОбходРезультатаЗапроса.ПоГруппировкам;
Выборка = РезультатЗапроса.Выбрать(СпособВыборки);
Пока Выборка.Следующий() Цикл
//выведем в окно сообщений поля из результата
Сообщить("Группа товаров: " + СокрЛП(Выборка.Наименование) + "Количество: " + СокрЛП(Выборка.Количество));
//выберем дочерние записи линейным способом
ВыборкаДочерних = Выборка.Выбрать();
Пока ВыборкаДочерних.Следующий() Цикл
Сообщить(" Товар: " + СокрЛП(Выборка.Наименование) +
" Количество: " + СокрЛП(Выборка.Количество));
КонецЦикла;
КонецЦикла;