Передача значений в запрос 1С

На практике в большинстве случаев необходимо ограничить результат запроса условиями. Рассмотрим как можно передать различные значения в запрос.

Значения в запрос можно передать несколькими способами:

  • при помощи параметров;
  • использовать ключевое слово языка запроса ЗНАЧЕНИЕ;
  • использовать ключевое слово языка запроса ДАТАВРЕМЯ (только для типа Дата);
  • использовать ключевое слово языка запроса ТИП (только для типа Тип);
  • напрямую написать значения типов Строка, Число, Булево, Неопределено.

Использование параметров запроса

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

В тексте запроса перед именем параметра ставится символ &. Установка значений параметров производится методом

УстановитьПараметр(<ИмяПараметра>, <ЗначениеПараметра>)

Пример передачи параметра в запрос:

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

Результатом запроса будут все договора, у которых реквизит «Контрагент» равен переданному значению параметра «КонтрагентСсылка».

Ключевое слово ЗНАЧЕНИЕ

В запросе можно обратиться к предопределенным данным конфигурации без использования параметров. При помощи ключевого слова ЗНАЧЕНИЕ в запрос можно передать такие данные, как:

  • значения перечислений;
  • предопределенные элементы справочников, планов видов характеристик, планов счетов, планов видов расчетов;
  • пустые ссылки;
  • значения точек маршрута бизнес-процессов;
  • значения системных перечислений (например, ВидДвиженияНакопления).

Пример обращения к предопределенным значениям в запросе:

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

Результатом запроса будут все элементы справочника Номенклатура с типом Услуга.

Более подробное описание использования ключевого слова ЗНАЧЕНИЕ с примерами.

Ключевое слово ДАТАВРЕМЯ

К значениям типа дата в запросе можно обратиться при помощи конструкции

ДАТАВРЕМЯ(<Год>, <Месяц>, <День>, <Час>, <Минута>, <Секунда>)

Все параметры здесь — целые числа. Последние три параметра (Час, Минута, Секунда) указывать не обязательно.
Максимальная дата, которую можно задать — 31.12.3999 23:59:59.

Пример обращения к пустой дате в запросе:

Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| СоглашенияСПоставщиками.Ссылка КАК Ссылка
|ИЗ
| Справочник.СоглашенияСПоставщиками КАК СоглашенияСПоставщиками
|ГДЕ
| СоглашенияСПоставщиками.ДатаОкончанияДействия = ДАТАВРЕМЯ(1, 1, 1)»;

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

Ключевое слово ТИП

Обращение к типу ТИП в запросе осуществляется конструкцией

ТИП(<ИмяТипа>)

Здесь ИмяТипа может принимать имя примитивного типа или имя таблицы ссылочного типа.
Примеры использования в запросе:

ТИП(Строка)
ТИП(Число)
ТИП(Справочник.Пользователи)
ТИП(Документ.РасходныйКассовыйОрдер)
ТИП(ПланВидовХарактеристик.СтатьиРасходов)

Обращение к примитивным типам в запросе

Значения типов Булево, Число, Строка, Неопределено в языке запросов задаются так же, как и во встроенном языке.
Пример обращения к примитивным типам в запросе:

Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| ПриходныйКассовыйОрдер.Ссылка КАК Ссылка
|ИЗ
| Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер
|ГДЕ
| ПриходныйКассовыйОрдер.Проведен = ИСТИНА
| И ПриходныйКассовыйОрдер.СуммаДокумента > 1000
| И ПриходныйКассовыйОрдер.ПринятоОт = «»Иванов И.И.»»»;

Результатом запроса будут все проведенные документы ПриходныйКассовыйОрдер с суммой документа больше 1000 и реквизитом «Принято от» равным «Иванов И.И.». Обратите внимание, что здесь переменная типа Строка указана в двух двойных кавычках. Необходимо использовать именно такой синтаксис.

Оцените статью