Параметры в запросах в языке 1С 8.3, 8.2 (в примерах)

Вступайте в мою группу помощник программиста.
В ней мы обсуждаем программирование в 1С.

<<< Основы Группировка Условия Упорядочивание Функции
<<< Итоги Соединение Объединение Параметры

Скачать эти примеры в виде тестовой базы (как загрузить, как исследовать)

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

Скачать эти примеры в виде тестовой базы (как загрузить, как исследовать)

Параметры в запросах в языке 1С 8.3, 8.2 (в примерах)

<<< Основы Группировка Условия Упорядочивание Функции
<<< Итоги Соединение Объединение Параметры

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



Владимир Милькин
Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.

Нажмите одну из кнопок, чтобы поделиться: