Список значений как параметр в запросе 1с
Обучение программированию на 1С
Параметры запроса и работа с ними. Типы равенствнеравенств равно, В, В ИЕРАРХИИ и др.
Для построения грамотного и эффективного запроса, нужно разбираться в его параметрах. Запрос 1С к базе данных – это конструкция, позволяющая извлечь актуальную информацию из набора таблиц и предоставить её пользователю для принятия обоснованного управленческого решения в наиболее оптимальной форме. Поскольку Запрос 1С является объектом с набором параметров, то определённые приёмы языка запросов позволяют повысить его читабельность, увеличить быстродействие, получить только уникальные записи. Чтобы уметь пользоваться преимуществами встроенного языка, нужно следовать рекомендациям профессионалов.
Что такое параметры запроса 1С и как они используются?
Параметры запроса необходимы для того, чтобы можно было придать конструкции требуемую гибкость и быстродействие. Для объявления нужного параметра в языке запроса используется символ «&». Расшифровывается это следующим образом: &ТаблицаЦен (в данном случае именем параметра является значение «ТаблицаЦен»). Чтобы запрос «понял» присваиваемый ему параметр, необходима следующая конструкция:
Рассмотрим на примере присвоения Запросу 1С параметра Текущая дата – выглядеть на языке запросов это будет следующим образом:
Это примитивный тип конструкции, есть и более интересные.
Списочные параметры – работаем с операторами В/В ИЕРАРХИИ
Массив данных и список значений могут быть переданы в качестве параметров языка запроса 1С. К примеру, конструкция может выглядеть следующим образом:
Рассмотрим подробнее значимые отличия операторов «В» и «В ИЕРАРХИИ» и другие функции языка запросов 1С v 8.
Функции языка запросов 1С v 8
Язык запросов программы 1С 8-ой версии предполагает, что к полям запроса будут применены специальные функции, которые усилят его эффективность и оптимизируют работу.
«ССЫЛКА»
Ссылочный тип логического оператора «ССЫЛКА» даёт возможность проверить поле составного вида на наличие в нём конкретного типа. Задаётся следующей конструкцией:
«МЕЖДУ»
Функция, которая позволяет конструкции проверить поле по параметру «вхождение значения в указанный диапазон». Синтаксическое выражение:
«В», «В ИЕРАРХИИ»
Конструкция служит для того, чтобы выявлять наличие определённых значений в передаваемых списках. Поиск производится также в подчинённых значениях после разворачивания иерархии элементов вниз. На практике это выглядит следующим образом:
«ПОДРОБНО»
Функция языка запросов 1С даёт возможность провести сравнение выбранной строки с шаблонным вариантом. Параметр применяется в том случае, если строка, по которой производится поиск, чётко не закреплена. Шаблонное решение выстраивается по следующим правилам:
«ЕСТЬ NULL »
Данный параметр работает следующим образом: в том случае, если значение поля не определено, то оно равно указанному выражению. С учётом синтаксиса языка запросов 1С получаем:
Все эти параметры – лишь краткий перечень эффективных функций языка Запросов 1С. Для грамотной работы в конфигураторе программы необходимо тщательно изучить все параметры языка запросов. Это не просто позволит получать нужные отчёты из базы данных 1С, но и увеличит быстродействие их обработки.
1С 8.3 Параметры в запросе
&НаСервере
Процедура ПередачаПараметровПростыхТиповВЗапросе ()
// Создание отбора по поступлению материала за 2020 год
Запрос = Новый Запрос ( «ВЫБРАТЬ
| Ссылка
|ИЗ
| Документ.ПоступлениеМатериалов
|ГДЕ
| Дата МЕЖДУ &НачДата И &КонДата
|УПОРЯДОЧИТЬ ПО
| Дата ВОЗР» );
&НаСервере
Процедура ПередачаПараметровСсылочныхТиповВЗапросе ()
// Создание отбора по материалам с единицей измерения «Куб.см.»
Запрос = Новый Запрос ( «ВЫБРАТЬ
| Наименование,
| ЕдиницаИзмерения
|ИЗ
| Справочник.Материалы
|ГДЕ
| ЕдиницаИзмерения = &ЕдинИзмер» );
&НаСервере
Процедура ПередачаПараметровСписочногоТипаВЗапросе ()
// Создание отбора по материалам, единицы измерения входят в переданный список
Запрос = Новый Запрос ( «ВЫБРАТЬ
| Наименование,
| ЕдиницаИзмерения
|ИЗ
| Справочник.Материалы
|ГДЕ
| ЕдиницаИзмерения В (&СписокЕдиницИзмерения)» );
&НаСервере
Процедура ПередачаПараметраВВидеТаблицыЗначенийВЗапросе ()
Запрос = Новый Запрос ( «ВЫБРАТЬ
| Наименование,
| СрокИспользования,
| Производитель
|ИЗ
| Справочник.Материалы
|ГДЕ
| (СрокИспользования, Производитель) В (&СписокСочетаний)» );
&НаСервере
Процедура ИспользованиеТаблицыЗначенийПереданнойВЗапросКакПараметр ()
// Сперва выбираем данные во временную таблицу, а потом работаем как с обычной таблицей
Запрос = Новый Запрос ( «ВЫБРАТЬ
| Название,
| РынЦена
|ПОМЕСТИТЬ
| ВременнаяТаблица
|ИЗ
| &ТаблицаДрагМеталлов КАК ДрагМеталлы
|;
|ВЫБРАТЬ
| Название,
| РынЦена
|ИЗ
| ВременнаяТаблица
|УПОРЯДОЧИТЬ ПО
| РынЦена УБЫВ» );
Передать в параметр список значений.
Добрый день. Подскажите, пожалуйста, как в параметр запроса передать список значений?
Как-то корявенько. Лучше было бы
Код |
---|
Показать полностью |
а список складов уже заполнять ссылками найденными по наименованию, или ещё как-то.
Но лучше было бы создать реквизит «код в базе УТ» для справочника подразделений и связать по кодам. Ведь наименование штука непостоянная.
Надеюсь что-то из моего поста Вам пригодится
МассивПодразделений = ПолучитьПодразделения() получаю массив в ЗУПе.
//создаю и заполняю массив УТ
МассивСкладыУт = БазаУТ.NewObject(«Массив»);
для Каждого Элемент Из МассивПодразделений Цикл
МассивСкладыУт.Добавить(Элемент);
КонецЦикла;
Запрос.УстановитьПараметр(«Вид»,БазаУТ.Перечисления.ВидыОперацийЧекККМ.НачалоДня);
Запрос.УстановитьПараметр(«СписокМагазинов», МассивСкладыУт);
Запрос.УстановитьПараметр(«ДатаНач», НачалоДня(ДатаНач));
Запрос.УстановитьПараметр(«ДатаКон», КонецДня(ДатаКон));
Массив МассивСкладыУт заполненный. Результат почему-то пустой
(7) Массив МассивСкладыУт заполненный. Вопрос только чем он заполнен 🙂 Ссылками из ЗУПа судя по коду и откуда же эти ссылки возьмутся в УТ?
МассивПодразделений = ПолучитьПодразделения() получаю массив в ЗУПе.
//создаю и заполняю массив УТ
МассивСкладыУт = БазаУТ.NewObject(«Массив»);
для Каждого Элемент Из МассивПодразделений Цикл
МассивСкладыУт.Добавить(Справочник.Склады.НайтиПоНаименованию(Элемент.Наименование) ну или с чем там массив, по тому и ищем ссылку на Склад в УТ);
КонецЦикла;