На днях писал запрос и наткнулся на интересную особенность при использовании параметров. Если передать параметры ссылочных типов, то к ним можно обращаться как к объектам конфигурации - через оператор "точка". Например: нам необходимо выбрать документы "исполнительные листы" по какой-либо организации. Причем если в качестве параметра передается организация с кодом "01", нам нужно выбрать документы относящееся к организациям с кодами "01", "02", "03", иначе выбрать документы по переданной организации:
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
|ИсполнительныйЛист.Организация КАК Организация,
|ИсполнительныйЛист.Физлицо КАК Сотрудник,
|ИсполнительныйЛист.Предел КАК СуммаВсего
|
|ИЗ
|Документ.ИсполнительныйЛист КАК ИсполнительныйЛист
|
|ГДЕ
|ВЫБОР КОГДА (ВЫРАЗИТЬ((&Организация).Код КАК СТРОКА(2))= "01" )
| ТОГДА ВЫРАЗИТЬ(ИсполнительныйЛист.Организация.Код КАК СТРОКА(2)) В ("01","02","53")
| ИНАЧЕ
| ИсполнительныйЛист.Организация = &Организация
|КОНЕЦ";
Запрос.УстановитьПараметр("Организация", Справочник.Организации.НайтиПоКоду("01"));
В этом запросе мы обращаемся к параметру ссылочного типа "&Организация", мы можем извлечь из этого параметра любую информацию, например: наименование (&Организация.Наименование) или ИНН (&Организация.ИНН), словом все те реквизиты, которые есть в справочнике "Организации". При попытке открыть этот запрос в конструкторе запросов будет выдаваться ошибка, т.к. конструктор считает, что к параметру нельзя так обращаться, но на самом деле запрос РАБОТАЕТ!