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