1с передать в запрос массив как параметр
Параметры запроса массив
Как правильно указать параметры в запросе, понимаю что массив сравнивать со строкой и числом нельзя, но как правильно сравнить не пойму.
НСМс = Новый Массив;
НаимМс = Новый Массив;
НСМс.Добавить(«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С 8.3 Параметры в запросе
&НаСервере
Процедура ПередачаПараметровПростыхТиповВЗапросе ()
// Создание отбора по поступлению материала за 2020 год
Запрос = Новый Запрос ( «ВЫБРАТЬ
| Ссылка
|ИЗ
| Документ.ПоступлениеМатериалов
|ГДЕ
| Дата МЕЖДУ &НачДата И &КонДата
|УПОРЯДОЧИТЬ ПО
| Дата ВОЗР» );
&НаСервере
Процедура ПередачаПараметровСсылочныхТиповВЗапросе ()
// Создание отбора по материалам с единицей измерения «Куб.см.»
Запрос = Новый Запрос ( «ВЫБРАТЬ
| Наименование,
| ЕдиницаИзмерения
|ИЗ
| Справочник.Материалы
|ГДЕ
| ЕдиницаИзмерения = &ЕдинИзмер» );
&НаСервере
Процедура ПередачаПараметровСписочногоТипаВЗапросе ()
// Создание отбора по материалам, единицы измерения входят в переданный список
Запрос = Новый Запрос ( «ВЫБРАТЬ
| Наименование,
| ЕдиницаИзмерения
|ИЗ
| Справочник.Материалы
|ГДЕ
| ЕдиницаИзмерения В (&СписокЕдиницИзмерения)» );
&НаСервере
Процедура ПередачаПараметраВВидеТаблицыЗначенийВЗапросе ()
Запрос = Новый Запрос ( «ВЫБРАТЬ
| Наименование,
| СрокИспользования,
| Производитель
|ИЗ
| Справочник.Материалы
|ГДЕ
| (СрокИспользования, Производитель) В (&СписокСочетаний)» );
&НаСервере
Процедура ИспользованиеТаблицыЗначенийПереданнойВЗапросКакПараметр ()
// Сперва выбираем данные во временную таблицу, а потом работаем как с обычной таблицей
Запрос = Новый Запрос ( «ВЫБРАТЬ
| Название,
| РынЦена
|ПОМЕСТИТЬ
| ВременнаяТаблица
|ИЗ
| &ТаблицаДрагМеталлов КАК ДрагМеталлы
|;
|ВЫБРАТЬ
| Название,
| РынЦена
|ИЗ
| ВременнаяТаблица
|УПОРЯДОЧИТЬ ПО
| РынЦена УБЫВ» );
Передача значений в запрос 1С
На практике в большинстве случаев необходимо ограничить результат запроса условиями. Рассмотрим как можно передать различные значения в запрос.
Значения в запрос можно передать несколькими способами:
Использование параметров запроса
Данный способ наиболее универсален, т.к. позволяет передать в запрос любое значение.
В тексте запроса перед именем параметра ставится символ &. Установка значений параметров производится методом
УстановитьПараметр ( ИмяПараметра >, ЗначениеПараметра >)
Пример передачи параметра в запрос:
Результатом запроса будут все договора, у которых реквизит «Контрагент» равен переданному значению параметра «КонтрагентСсылка».
Ключевое слово ЗНАЧЕНИЕ
В запросе можно обратиться к предопределенным данным конфигурации без использования параметров. При помощи ключевого слова ЗНАЧЕНИЕ в запрос можно передать такие данные, как:
Пример обращения к предопределенным значениям в запросе:
Результатом запроса будут все элементы справочника Номенклатура с типом Услуга.
Ключевое слово ДАТАВРЕМЯ
К значениям типа дата в запросе можно обратиться при помощи конструкции
ДАТАВРЕМЯ ( Год >, Месяц >, День >, Час >, Минута >, Секунда >)
Все параметры здесь — целые числа. Последние три параметра (Час, Минута, Секунда) указывать не обязательно.
Максимальная дата, которую можно задать — 31.12.3999 23:59:59.
Пример обращения к пустой дате в запросе:
Результатом запроса будут все элементы справочника СоглашенияСПоставщиками, у которых не задана дата окончания действия.
Ключевое слово ТИП
Обращение к типу ТИП в запросе осуществляется конструкцией
Здесь ИмяТипа может принимать имя примитивного типа или имя таблицы ссылочного типа.
Примеры использования в запросе:
ТИП(Строка)
ТИП(Число)
ТИП(Справочник.Пользователи)
ТИП(Документ.РасходныйКассовыйОрдер)
ТИП(ПланВидовХарактеристик.СтатьиРасходов)
Обращение к примитивным типам в запросе
Значения типов Булево, Число, Строка, Неопределено в языке запросов задаются так же, как и во встроенном языке.
Пример обращения к примитивным типам в запросе:
Результатом запроса будут все проведенные документы ПриходныйКассовыйОрдер с суммой документа больше 1000 и реквизитом «Принято от» равным «Иванов И.И.». Обратите внимание, что здесь переменная типа Строка указана в двух двойных кавычках. Необходимо использовать именно такой синтаксис.
Остались вопросы?
Спросите в комментариях к статье.








