Что такое параметры запроса в 1с
Перейти к содержимому

Что такое параметры запроса в 1с

  • автор:

Что такое параметры запроса в 1с

Подскажите отличие методов :
Запрос.Параметры.Вставить(«Код», Код);
Запрос.УстановитьПараметр(«Код», Код));

Есть ли рекомендация какой нужно использовать ?

допустим есть. используй первый
(0) Разницы не знаю, использую первый.
Почему первый?
(1)(2) В типовых модулях всегда Запрос.УстановитьПараметр();
Хтя нет. И так и так.
но 1 метод встречается гораздо реже 2 го
Сам всегда использовал Запрос.УстановитьПараметр(«Код», Код)), но вопрос открыт
2(7) так ответили ведь.

2 метод отрабатывает быстрей по результатам замера производительности. Странно почему тогда 1С ники используют 2 метод?

ой. 1 метод отрабатывает быстрей

Запрос.Параметры — это структура, поэтому 1-й метод использует обращение к параметрам.
А второй метод сразу же обращается к параметрам более коротким путём. Точек меньше, например.

(6)конструктор запроса с обходом втыкает второй вариант, поэтому он и чаще

>Разницы не знаю, использую первый.

Извините, сплю, ))) второй всегда использую. Смотрел на предыдущий ответ ну и написал.

разницы особой нет, в обоих случаях выполняется аналогичная работа.
«Вставить» не проверяет на дубли?

(15) оба способа при существовании параметра с таким именем тупо заменят его значение (согласно справки)

(15)+ хотя, нет. Если это структура, то проверяет
(17) структура!

Оба метода равнозначны. Просто метод УстановитьПараметр был с самого начала, а свойство Параметры появилось из-за пожеланий разработчиков прикладных решений (я тоже руку приложил 🙂 иметь возможность анализировать уже установленные параметры запроса.

1С 8.3 Параметры в запросе — Программист 1С Минск. Автоматизация бизнеса.

ПРИМЕРЫ КОДА 1С

Параметры запроса в 1С 8.3 необходимы для оптимизации кода запроса. Параметры бывают простых типов, ссылочных типов, списочных типов, в виде таблиц значений. Чтобы объявить параметра в языке запроса используется символ «&» и название параметра, Например: &ДатаДокумента. Для вставки параметра в запрос, используется функция УстановитьПараметр().

Оглавление:
Передача параметров простых типов в запросе в 1С 8.3:

&НаСервере
Процедура ПередачаПараметровПростыхТиповВЗапросе ()

// Создание отбора по поступлению материала за 2020 год
Запрос = Новый Запрос ( «ВЫБРАТЬ
| Ссылка
|ИЗ
| Документ.ПоступлениеМатериалов
|ГДЕ
| Дата МЕЖДУ &НачДата И &КонДата
|УПОРЯДОЧИТЬ ПО
| Дата ВОЗР» );

Запрос . УстановитьПараметр ( «НачДата» , ‘20200101000000’ );
Запрос . УстановитьПараметр ( «КонДата» , ‘20201231235959’ );

РезультатЗапроса = Запрос . Выполнить (); Записи = РезультатЗапроса . Выбрать ();
Пока Записи . Следующий () Цикл
// Обход результата запроса по каждой записи в полученной выборке
КонецЦикла;

Передача параметров ссылочных типов в запросе в 1С 8.3:

&НаСервере
Процедура ПередачаПараметровСсылочныхТиповВЗапросе ()

// Создание отбора по материалам с единицей измерения «Куб.см.»
Запрос = Новый Запрос ( «ВЫБРАТЬ
| Наименование,
| ЕдиницаИзмерения
|ИЗ
| Справочник.Материалы
|ГДЕ
| ЕдиницаИзмерения = &ЕдинИзмер» );

Запрос . УстановитьПараметр ( «ЕдинИзмер» , Справочники . ЕдиницыИзмерения . НайтиПоНаименованию ( «Куб.см.» ));

РезультатЗапроса = Запрос . Выполнить (); Записи = РезультатЗапроса . Выбрать ();
Пока Записи . Следующий () Цикл
// Обход результата запроса по каждой записи в полученной выборке
КонецЦикла;

Передача параметров списочного типа в запросе в 1С 8.3:

&НаСервере
Процедура ПередачаПараметровСписочногоТипаВЗапросе ()

// Создание отбора по материалам, единицы измерения входят в переданный список
Запрос = Новый Запрос ( «ВЫБРАТЬ
| Наименование,
| ЕдиницаИзмерения
|ИЗ
| Справочник.Материалы
|ГДЕ
| ЕдиницаИзмерения В (&СписокЕдиницИзмерения)» );

СписокЕИ = Новый Массив ;
СписокЕИ . Добавить ( Справочники . ЕдиницыИзмерения . НайтиПоНаименованию ( «Куб.см.» ));
СписокЕИ . Добавить ( Справочники . ЕдиницыИзмерения . НайтиПоНаименованию ( «Куб.дм.» ));
СписокЕИ . Добавить ( Справочники . ЕдиницыИзмерения . НайтиПоНаименованию ( «Куб.м.» ));

Запрос . УстановитьПараметр ( «СписокЕдиницИзмерения» , СписокЕИ );

РезультатЗапроса = Запрос . Выполнить (); Записи = РезультатЗапроса . Выбрать ();
Пока Записи . Следующий () Цикл
// Обход результата запроса по каждой записи в полученной выборке
КонецЦикла;

Передача параметра в виде таблицы значений в запросе в 1С 8.3:

&НаСервере
Процедура ПередачаПараметраВВидеТаблицыЗначенийВЗапросе ()

// Создание отбора по материалам в соответствии с параметром в виде
// комбинированной таблицы значений: «Срок Использования» и «Производитель»
ТЗ_СрокИсп_Произв = новый ТаблицаЗначений ;
ТЗ_СрокИсп_Произв . Колонки . Добавить ( «СрокИспользования» , Новый ОписаниеТипов ( «СправочникСсылка.КлассификаторСроковПИ» ));
ТЗ_СрокИсп_Произв . Колонки . Добавить ( «Производитель» , Новый ОписаниеТипов ( «СправочникСсылка.Контрагенты» ));

// «12 месяцев» + «Гомелькабель»
СтрокаТЗ = ТЗ_СрокИсп_Произв . Добавить ();
СтрокаТЗ . СрокИспользования = Справочники . КлассификаторСроковПИ . НайтиПоНаименованию ( «12 месяцев» );
СтрокаТЗ . Производитель = Справочники . Контрагенты . НайтиПоНаименованию ( «Гомелькабель» );

// «18 месяцев» + «Гомельстекло»
СтрокаТЗ = ТЗ_СрокИсп_Произв . Добавить ();
СтрокаТЗ . СрокИспользования = Справочники . КлассификаторСроковПИ . НайтиПоНаименованию ( «18 месяцев» );
СтрокаТЗ . Производитель = Справочники . Контрагенты . НайтиПоНаименованию ( «Гомельстекло» );

Запрос = Новый Запрос ( «ВЫБРАТЬ
| Наименование,
| СрокИспользования,
| Производитель
|ИЗ
| Справочник.Материалы
|ГДЕ
| (СрокИспользования, Производитель) В (&СписокСочетаний)» );

Запрос . УстановитьПараметр ( «СписокСочетаний» , ТЗ_СрокИсп_Произв );

РезультатЗапроса = Запрос . Выполнить (); Записи = РезультатЗапроса . Выбрать ();
Пока Записи . Следующий () Цикл
// Обход результата запроса по каждой записи в полученной выборке
КонецЦикла;

Использование таблицы значений переданной в запрос как параметр в 1С 8.3:

&НаСервере
Процедура ИспользованиеТаблицыЗначенийПереданнойВЗапросКакПараметр ()

// Программное создание Таблицы Значений и передача её в запрос
ДрагМеталл = новый ТаблицаЗначений ;
ДрагМеталл . Колонки . Добавить ( «Название» , Новый ОписаниеТипов ( «Строка» ));
ДрагМеталл . Колонки . Добавить ( «РынЦена» , Новый ОписаниеТипов ( «Число» ));

НоваяСтрока = ДрагМеталл . Добавить ();
НоваяСтрока . Название = «Золото» ;
НоваяСтрока . РынЦена = 127.29 ;

НоваяСтрока = ДрагМеталл . Добавить ();
НоваяСтрока . Название = «Серебро» ;
НоваяСтрока . РынЦена = 1.30 ;

НоваяСтрока = ДрагМеталл . Добавить ();
НоваяСтрока . Название = «Платина» ;
НоваяСтрока . РынЦена = 62. 00 ;

НоваяСтрока = ДрагМеталл . Добавить ();
НоваяСтрока . Название = «Родий» ;
НоваяСтрока . РынЦена = 568.27 ;

// Сперва выбираем данные во временную таблицу, а потом работаем как с обычной таблицей
Запрос = Новый Запрос ( «ВЫБРАТЬ
| Название,
| РынЦена
|ПОМЕСТИТЬ
| ВременнаяТаблица
|ИЗ
| &ТаблицаДрагМеталлов КАК ДрагМеталлы
|;
|ВЫБРАТЬ
| Название,
| РынЦена
|ИЗ
| ВременнаяТаблица
|УПОРЯДОЧИТЬ ПО
| РынЦена УБЫВ» );

Запрос . УстановитьПараметр ( «ТаблицаДрагМеталлов» , ДрагМеталл );

РезультатЗапроса = Запрос . Выполнить (); Записи = РезультатЗапроса . Выбрать ();
Пока Записи . Следующий () Цикл
// Обход результата запроса по каждой записи в полученной выборке
КонецЦикла;

Запросы 1С:Предприятие 8. Параметры запроса и операторы сравнения

Параметры в запросах 1С служат для передачи в запрос данных, которые могут изменяться в зависимости от условий выполнения запроса и поэтому не могут быть жестко зафиксированы в самом запросе.

Параметры выделяются в тексте запроса символом &.

В качестве параметра можно передавать любой фрагмент текста запроса. Обычно в качестве параметров передаются значения для сравнений, операторы сравнений и источники запросов.

Использование в качестве источника передаваемой в запрос таблицы значений мы рассмотрим в отдельной статье. В остальных случаях синтаксис использования параметров в запросе 1С выглядит так:

Запрос . Текст = «ВЫБРАТЬ
| КурсыВалютСрезПервых.Период,
| КурсыВалютСрезПервых.Валюта,
| КурсыВалютСрезПервых.Курс,
|ИЗ
| РегистрСведений.КурсыВалют.СрезПервых КАК КурсыВалютСрезПервых
|ГДЕ
| КурсыВалютСрезПервых.Курс &ТипСравнения &ЗначениеСравнения» ;
Запрос . УстановитьПараметр ( «ТипСравнения» , «>=» ) ;
Запрос . УстановитьПараметр ( «ЗначениеСравнения» , 40 ) ;

В этом примере в запрос передается и знак сравнения и значение, с которым нужно сравнивать курс валюты.

Задавая условия в запросах 1С, мы сравниваем одно значение с другим(и). В платформе 1С:Предприятие предусмотрены следующие виды сравнений:

  • Равно — обозначается знаком = ;
  • Не равно — обозначается знаком <> ;
  • Больше — обозначается знаком > ;
  • Больше или равно — обозначается знаком >= ;
  • Меньше — обозначается знаком < ;
  • Меньше или равно — обозначается знаком
  • Между — используется, когда нужно одновременно применить условия Больше или равно и Меньше или равно, то есть задаются две границы значений.

Запрос . Текст = «ВЫБРАТЬ
| КурсыВалютСрезПервых.Период,
| КурсыВалютСрезПервых.Валюта,
| КурсыВалютСрезПервых.Курс,
|ИЗ
| РегистрСведений.КурсыВалют.СрезПервых (, Курс МЕЖДУ 30 И 40) КАК КурсыВалютСрезПервых»

  • % — любое количество произвольных символов;
  • _ — один произвольный символ;
  • [abc] — любой из символов, перечисленных в квадратных скобках (можно указывать диапазоны, например [0-9]);
  • [^abc] — любой из символов, кроме перечисленных в квадратных скобках.

Если в шаблон необходимо включить один из символов, перечисленных выше, то перед ним должен идти спецсимвол. Этим спецсимволом может быть любой символ, главное чтобы он не применяется в шаблоне по прямому назначению и не был одним из символов, перечисленных выше. При этом после условия пишется слово СПЕЦСИМВОЛ и в кавычках приводится сам спецсимвол.

Запрос . Текст = «ВЫБРАТЬ
| КурсыВалютСрезПервых.Период,
| КурсыВалютСрезПервых.Валюта,
| КурсыВалютСрезПервых.Курс,
|ИЗ
| РегистрСведений.КурсыВалют.СрезПервых КАК КурсыВалютСрезПервых
|ГДЕ
| КурсыВалютСрезПервых.Валюта ПОДОБНО » «%\_» » СПЕЦСИМВОЛ » «» «»

Такой запрос показал бы курсы валют, названия которых заканчивается на знак подчеркивания.

Запрос . Текст = «ВЫБРАТЬ
| КурсыВалютСрезПервых.Период,
| КурсыВалютСрезПервых.Валюта,
| КурсыВалютСрезПервых.Курс,
|ИЗ
| РегистрСведений.КурсыВалют.СрезПервых КАК КурсыВалютСрезПервых
|ГДЕ
| КурсыВалютСрезПервых.Валюта В (&ПереченьВалют)

Синтаксис для сравнения с результатом вложенного запроса:

Запрос . Текст = «ВЫБРАТЬ
| КурсыВалютСрезПервых.Период,
| КурсыВалютСрезПервых.Валюта,
| КурсыВалютСрезПервых.Курс,
|ИЗ
| РегистрСведений.КурсыВалют.СрезПервых КАК КурсыВалютСрезПервых
|ГДЕ
| КурсыВалютСрезПервых.Валюта В (ВЫБРАТЬ
| Валюты.Ссылка,
| ИЗ
| Справочник.Валюты КАК Валюты)

Запрос . Текст = «ВЫБРАТЬ
| ОстаткиТоваров.Номенклатура
|ИЗ
| РегистрНакопления.ОстаткиТоваров КАК ОстаткиТоваров
|ГДЕ
| ОстаткиТоваров.Регистратор ССЫЛКА Документ.ПоступлениеТоваров

Раздел: Программирование Статьи по 1С Метки: язык запросов 1С

Добавить комментарий Отменить ответ

Теперь мы в соцсетях! Подписывайтесь, чтобы получать информацию о последних обновлениях или задать вопрос.

Как передать параметр в запрос?

Когда необходимо получить массив определенных значений, мы всегда используем запросы. Это очень удобный инструмент, который выбирает данные по определенным условиям. Условия могут быть разные, но если мы имеем дело с условием ссылочного типа и нет возможности указать предопределенный элемент справочника, тогда необходимо передавать условие, через параметр. Этот тип условий передается через определенный символ и наименование параметра, например, «&Номенклатура». Таким образом можно передать условие в запрос. Но чтобы необходимое значение условия было подставлено в запрос, необходимо после создания (формирования) запроса установить значение параметра. Это делается при помощи следующей строчки кода:
«Запрос.УстановитьПараметр(«Номенклатура», ВашеЗначениеНоменклатуры);»
В «ВашеЗначениеНоменклатуры» необходимо установить значение отбора, по которому Вы хотите получить данные. Оно может быть получено как из цикла по определенным данным, так и из реквизита на форме.
Например, Вам необходимо выбрать список расходных накладных, в которых есть определенная номенклатура. Для этого необходимо вывести реквизит с нужным типом объекта на форму обработки и написать запрос, который получит этот список. Из этого реквизита мы и возьмем значение параметра для запроса в 1С.

2. Значения параметров СКД

Запросы также используются в отчетах. Для отчета, построенного при помощи системы компоновки данных (СКД), существует отдельная вкладка, в которой настраиваем эти параметры. Значение параметров СКД возможно заполнять предопределенными значениями, выводить их сразу на форму или заполнять их при компоновке результата, для этого необходимо будет во время выполнения процедуры найти нужный нам параметр и подставить в него нужное нам значение или массив значений.
Если же не установить значения параметра в запросе в 1С, то при его выполнении будет появляться ошибка, которая будет говорить о том, что условие параметра не задано и действие не может быть выполнено.
Для того чтобы не забывать про параметры в запросе в 8.3, лучше всего пользоваться конструктором запроса с обходом результата. После создания запроса, уже будут установлены значения параметров в запросе в 1С 8.3, и единственное, на что придется обращать внимание – это наименования переменной, отвечающее за значение параметра: если оно будет отличаться, то необходимо будет корректно переименовать значение параметра в строке кода, которая устанавливает и значение параметра.
В параметр в запросе в 1С 8.3 можно передавать не только условие или метод для отбора данных, но и саму таблицу с данными. Она также передается при помощи той строки кода, которая описана выше. Но в этом случае нам необходимо будет передавать таблицу значений с данными, а не просто ссылку на какое-то значение справочника.
Чтобы не возникало трудностей с тем, как передать параметр в запрос, важно запомнить единственное главное правило – никогда не забывать устанавливать параметры для запроса, если они имеются в запросе.
Специалист компании «Кодерлайн» Олег Мороз

Вас могут заинтересовать следующие статьи:

94 [PROP_CODE] => TAGS2 [TITLE] => Вас могут заинтересовать следующие семинары: ) —> 95 [PROP_CODE] => TAGS [TITLE] => Вас могут заинтересовать следующие вебинары: ) —> Как сделать в 1С [1] => 1С: Конвертация данных [2] => Конвертация данных [3] => Обмен между базами [4] => Закрытие месяца [5] => Оценка задач [6] => Отчеты в 1С [7] => Моделирование [8] => HTTP [9] => Управление проектами [10] => БУ [11] => com-объекты [12] => 1С: WMS Управление складом [13] => РСБУ [14] => 1С: Сценарное тестирование [15] => Запросы 1С [16] => LINUX [17] => WEB [18] => Оптимизация [19] => 1С:Зарплата и Управление Персоналом [20] => Excel [21] => 1С: ERP [22] => ADO [23] => 1С:Управление производственным предприятием [24] => Внедрение [25] => Продажи [26] => Отчетность [27] => 1С: Розница [28] => 1С: CRM [29] => 1С:Бухгалтерия [30] => 1С:Комплексная автоматизация [31] => Производство [32] => Интеграция 1С [33] => Налоги [34] => Отпуск [35] => MS SQL Server [36] => Расширение конфигурации [37] => МСФО [38] => СКД [39] => Word [40] => WEB-сервисы 1С [41] => Внедрение ERP [42] => Перенос данных [43] => Торговое оборудование [44] => Лизинг [45] => 1С:Управление нашей фирмой [46] => Администрирование 1С [47] => 1С: Колледж [48] => Правила обмена [49] => 1С: Платформа ) —>

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *