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