[Alimir_BootModal_Login]

Язык запросов 1С 8.3 для начинающих программистов: параметры

Автор уроков и преподаватель школы: Владимир Милькин

Параметры в запросах

Как всегда начнём с примера.

Давайте получим элементы справочника Еда жёлтого цвета:

ВЫБРАТЬ
    Наименование,
    Цвет
ИЗ
    Справочник.Еда
ГДЕ
    Цвет.Наименование = "Жёлтый"

Теперь красного:

ВЫБРАТЬ
    Наименование,
    Цвет
ИЗ
    Справочник.Еда
ГДЕ
    Цвет.Наименование = "Красный"

Теперь зелёного:

ВЫБРАТЬ
    Наименование,
    Цвет
ИЗ
    Справочник.Еда
ГДЕ
    Цвет.Наименование = "Зелёный"

Вы не находите, что все эти запросы имеют много общего? И отличаются только в одном слове - Жёлтый, Красный или Зелёный?

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

Такая возможность в языке запросов имеется и называется параметры.

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

ВЫБРАТЬ
    Наименование,
    Цвет
ИЗ
    Справочник.Еда
ГДЕ
    Цвет.Наименование = &ВыбранныйЦвет

После этого попробуем выполнить запрос и получим пустой результат:

02

А всё потому, что параметр-то мы придумали, а вот его значение не указали.

Чтобы указать конкретное значение параметра, обратите внимание на панель, располагающуюся выше редактора, в котором мы пишем текст запросов:

03

Вот он, наш параметр. 1С уже сама распознала его в запросе и вынесла в секцию параметров, но пока с пустым значением.

Напишем в качестве значения строку Жёлтый

04

и выполним запрос:

05

Затем напишем Красный

06

и снова выполним запрос:

07

И, наконец, Зелёный

08

09

Как видите, запрос у нас один (мы его не меняли). Но благодаря возможности изменять значение параметра ВыбранныйЦвет мы получаем различные результаты.

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

В данном случае параметр имел тип Строка, давайте попробуем в работе параметры других типов.

Параметр типа ссылка

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

ВЫБРАТЬ
    Наименование,
    Цвет
ИЗ
    Справочник.Еда
ГДЕ
    Цвет = &ВыбранныйЦвет

Изменим тип параметра ВыбранныйЦвет, так как это уже не строка, а ссылка на элемент справочника Цвета:

10

Теперь при выборе значений этого параметра нам будет предложен выбор из элементов справочника Цвета:

11

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

Параметр типа Дата

А теперь напишем запрос, выбирающий все заказы клиентов за определенный период. Период будет иметь левую границу НачалоИнтервала и правую границу КонецИнтервала:

ВЫБРАТЬ
    Номер,
    Дата
ИЗ
    Документ.ЗаказКлиента
ГДЕ
    Дата МЕЖДУ &НачалоИнтервала И &КонецИнтервала

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

12

Обратите внимание, что 1С сама распознала тип этих параметров как Дата.

Теперь, если нам нужны заказы за январь, то укажем:

13

И получим:

14

Если за февраль, то укажем:

15

И получим:

16

И так далее.

Напутствие

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

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

Пройдите тест

Начать тест

Домашнее задание

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

К примеру, если пользователь укажет значение 2, то результат будет таким:

17 

Эталонное решение. Сначала пишем код сами, проверяем на компьютере (как и все примеры программ из уроков), только потом сверяемся

б) Напишите запрос, который позволяет указать в параметре часть строки и затем выводит все наименования еды в которых встречается эта часть.

К пример, если пользователь укажет часть строки "ба", то результат будет таким:

18

Эталонное решение. Сначала пишем код сами, проверяем на компьютере (как и все примеры программ из уроков), только потом сверяемся