Массив как параметр запроса 1с
1С 8.3 Параметры в запросе
&НаСервере
Процедура ПередачаПараметровПростыхТиповВЗапросе ()
// Создание отбора по поступлению материала за 2020 год
Запрос = Новый Запрос ( «ВЫБРАТЬ
| Ссылка
|ИЗ
| Документ.ПоступлениеМатериалов
|ГДЕ
| Дата МЕЖДУ &НачДата И &КонДата
|УПОРЯДОЧИТЬ ПО
| Дата ВОЗР» );
&НаСервере
Процедура ПередачаПараметровСсылочныхТиповВЗапросе ()
// Создание отбора по материалам с единицей измерения «Куб.см.»
Запрос = Новый Запрос ( «ВЫБРАТЬ
| Наименование,
| ЕдиницаИзмерения
|ИЗ
| Справочник.Материалы
|ГДЕ
| ЕдиницаИзмерения = &ЕдинИзмер» );
&НаСервере
Процедура ПередачаПараметровСписочногоТипаВЗапросе ()
// Создание отбора по материалам, единицы измерения входят в переданный список
Запрос = Новый Запрос ( «ВЫБРАТЬ
| Наименование,
| ЕдиницаИзмерения
|ИЗ
| Справочник.Материалы
|ГДЕ
| ЕдиницаИзмерения В (&СписокЕдиницИзмерения)» );
&НаСервере
Процедура ПередачаПараметраВВидеТаблицыЗначенийВЗапросе ()
Запрос = Новый Запрос ( «ВЫБРАТЬ
| Наименование,
| СрокИспользования,
| Производитель
|ИЗ
| Справочник.Материалы
|ГДЕ
| (СрокИспользования, Производитель) В (&СписокСочетаний)» );
&НаСервере
Процедура ИспользованиеТаблицыЗначенийПереданнойВЗапросКакПараметр ()
// Сперва выбираем данные во временную таблицу, а потом работаем как с обычной таблицей
Запрос = Новый Запрос ( «ВЫБРАТЬ
| Название,
| РынЦена
|ПОМЕСТИТЬ
| ВременнаяТаблица
|ИЗ
| &ТаблицаДрагМеталлов КАК ДрагМеталлы
|;
|ВЫБРАТЬ
| Название,
| РынЦена
|ИЗ
| ВременнаяТаблица
|УПОРЯДОЧИТЬ ПО
| РынЦена УБЫВ» );
Параметры запроса массив
Как правильно указать параметры в запросе, понимаю что массив сравнивать со строкой и числом нельзя, но как правильно сравнить не пойму.
НСМс = Новый Массив;
НаимМс = Новый Массив;
НСМс.Добавить(«5»); НСМс.Добавить(«10»); НСМс.Добавить(«15»); НСМс.Добавить(«20»); НСМс.Добавить(«25»);
НСМс.Добавить(«30»); НСМс.Добавить(«35»); НСМс.Добавить(«40»);
НаимМс.Добавить(«Документация»); НаимМс.Добавить(«Комплексы»); НаимМс.Добавить(«Комплексы»);
НаимМс.Добавить(«Сборочные единицы»); НаимМс.Добавить(«Детали»); НаимМс.Добавить(«Стандартные изделия»);
НаимМс.Добавить(«Прочие изделия»); НаимМс.Добавить(«Материалы»); НаимМс.Добавить(«Комплекты»);
ЗапросВыгрузки = Новый Запрос;
Мен = Новый МенеджерВременныхТаблиц;
ЗапросВыгрузки.МенеджерВременныхТаблиц = Мен;
ЗапросВыгрузки.Текст =
«ВЫБРАТЬ
| *
| Поместить ТабЗнач
|ИЗ
| &ТС КАК ТС»;
ЗапросВыгрузки.УстановитьПараметр(«ТС», ТС);
ЗапросВыгрузки.Выполнить();
ЗапросВыгрузки.Текст = «Выбрать
| ТабЗнач.НомерСекции,
| ТабЗнач.Наименование
|ИЗ
| ТабЗнач КАК ТабЗнач
|ГДЕ
| (ТабЗнач.НомерСекции = &Параметр) И (ТабЗнач.Наименование <> &ПарамНаименования)»;
ЗапросВыгрузки.УстановитьПараметр(«ТС», ТС);
ЗапросВыгрузки.УстановитьПараметр(«Параметр», НСМс);
ЗапросВыгрузки.УстановитьПараметр(«ПарамНаименования», НаимМс);
ТЗВыгрузки = ЗапросВыгрузки.Выполнить().Выгрузить();
Обучение программированию на 1С
Параметры запроса и работа с ними. Типы равенствнеравенств равно, В, В ИЕРАРХИИ и др.

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









