Язык запросов 1С 8.3 для начинающих программистов: параметры
Автор уроков и преподаватель школы: Владимир Милькин
Параметры в запросах
Как всегда начнём с примера.
Давайте получим элементы справочника Еда жёлтого цвета:
ВЫБРАТЬ Наименование, Цвет ИЗ Справочник.Еда ГДЕ Цвет.Наименование = "Жёлтый" |
Теперь красного:
ВЫБРАТЬ Наименование, Цвет ИЗ Справочник.Еда ГДЕ Цвет.Наименование = "Красный" |
Теперь зелёного:
ВЫБРАТЬ Наименование, Цвет ИЗ Справочник.Еда ГДЕ Цвет.Наименование = "Зелёный" |
Вы не находите, что все эти запросы имеют много общего? И отличаются только в одном слове - Жёлтый, Красный или Зелёный?
Как хорошо было бы вынести это слово (обозначающее конкретный цвет) за пределы запроса, чтобы нам не приходилось каждый раз повторять почти весь запрос целиком.
Такая возможность в языке запросов имеется и называется параметры.
В данном случае нас интересует параметр означающий цвет. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь. Давайте придумаем для него имя "ВыбранныйЦвет" и заменим этим именем конкретные значение цветов в запросе. А чтобы было понятно, что это параметр укажем перед именем знак &:
ВЫБРАТЬ Наименование, Цвет ИЗ Справочник.Еда ГДЕ Цвет.Наименование = &ВыбранныйЦвет |
После этого попробуем выполнить запрос и получим пустой результат:
А всё потому, что параметр-то мы придумали, а вот его значение не указали.
Чтобы указать конкретное значение параметра, обратите внимание на панель, располагающуюся выше редактора, в котором мы пишем текст запросов:
Вот он, наш параметр. 1С уже сама распознала его в запросе и вынесла в секцию параметров, но пока с пустым значением.
Напишем в качестве значения строку Жёлтый
и выполним запрос:
Затем напишем Красный
и снова выполним запрос:
И, наконец, Зелёный
Как видите, запрос у нас один (мы его не меняли). Но благодаря возможности изменять значение параметра ВыбранныйЦвет мы получаем различные результаты.
Таким образом, параметры делают запрос более гибким. Мы можем писать достаточно сложные и универсальный запросы, которые будем использовать потом много раз просто меняя значения их параметров перед запуском.
В данном случае параметр имел тип Строка, давайте попробуем в работе параметры других типов.
Параметр типа ссылка
Для этого будем сравнивать в условии запроса не Наименование цвета, а его ссылочное значение:
ВЫБРАТЬ Наименование, Цвет ИЗ Справочник.Еда ГДЕ Цвет = &ВыбранныйЦвет |
Изменим тип параметра ВыбранныйЦвет, так как это уже не строка, а ссылка на элемент справочника Цвета:
Теперь при выборе значений этого параметра нам будет предложен выбор из элементов справочника Цвета:
Что и требовалось получить. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь. Пробуйте разные цвета и выполняйте запрос.
Параметр типа Дата
А теперь напишем запрос, выбирающий все заказы клиентов за определенный период. Период будет иметь левую границу НачалоИнтервала и правую границу КонецИнтервала:
ВЫБРАТЬ Номер, Дата ИЗ Документ.ЗаказКлиента ГДЕ Дата МЕЖДУ &НачалоИнтервала И &КонецИнтервала |
И снова попробуйте выполнить запрос, чтобы в секции параметров появились параметры НачалоИнтервала и КонецИнтервала:
Обратите внимание, что 1С сама распознала тип этих параметров как Дата.
Теперь, если нам нужны заказы за январь, то укажем:
И получим:
Если за февраль, то укажем:
И получим:
И так далее.
Напутствие
Существуют параметры и более сложных типов - списки значений и таблицы значений. Примеры работы с ними мы рассмотрим на занятиях по использованию запросов из встроенного языка 1С.
И ещё. Ни в коем случае не нужно пытаться выносить в параметры всё, что только можно. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь. Параметры должны появляться в ваших запросах по мере необходимости.