Выложил новую версию.
1.07.010 от 21.06.10 г.- Добавлена возможность работы с параметризованными запросами. В качестве переменных используется конструкция «@ИмяПараметра». Подробнее см. Параметризованные запросы.
Параметризованные запросы (документация к классу).Обычно запросы содержат переменные в своем составе, например в предложении WHERE. Для эффективной работы с такими запросами используются параметризованные запросы. Конечно, запрос может быть и не параметризованным - собираться программой динамически, а затем подаваться для создания Statement - однако это не самый легкий и что самое главное далеко не оптимальный подход.
Параметризованный запрос это выражение, где на месте текстовых параметров (не обязательно всех) стоят идентификаторы подставляемых значений - "@Контрагент", "@ДатаНачалаПериода". Перед использованием их надо связать с конкретными типами значений - это производится вызовом метода «ОписаниеПараметра». Далее запрос необходимо подготовить специальным методом – «ПодготовитьПараметризованныйЗапрос».
Непосредственно перед выполнением запроса во все параметры должны быть подставлены значения методом «ПодставлятьПараметры». После этого запрос можно выполнять.
Установка текста запроса, описание параметров и подготовка запроса должна выполняться в том же объекте где и дальнейшая подстановка значений и выполнение. При этом в качестве текста запроса используется значение атрибута «Текст». В качестве параметров должны выступать выражения – «@ИмяПараметра». Модификаторы для них не используются.
При изменении атрибута «Текст» ранее подготовленный запрос будет сброшен, а все заданные значения и описания очищены.
Пример кода:
При инициализации класса (ЗапросПоставленныеЗадачи - переменная класса)
ЗапросПоставленныеЗадачи = СоздатьОбъект("ПрямойЗапрос");
ЗапросПоставленныеЗадачи.БухгалтерскийУчет = 0;
ЗапросПоставленныеЗадачи.ОперативныйУчет = 0;
ЗапросПоставленныеЗадачи.ПериодическиеЗначения = 0;
ЗапросПоставленныеЗадачи.Текст =
"ВЫБРАТЬ
| КОЛИЧЕСТВО($Спр.ТекущийЭлемент) КАК Количество
|ИЗ
| Справочник.Календарь КАК Спр $NOLOCK
|ГДЕ
| $Спр.СтатусНазначения = :Перечисление.СтатусыНазначеногоСобытия.ВПроцессе
|И
| $Спр.ПолучательСобытия = @ПолучательСобытия";
ователи");
ЗапросПоставленныеЗадачи.ПодготовитьПараметризованныйЗапрос();
Далее вызов запроса:
Функция ПолучитьКоличествоПоставленныхЗадач(СправочникПользовательСсылка) Экспорт
ЗапросПоставленныеЗадачи.РежимОтладки = глРежимОтладки;
зовательСсылка);
Результат = ЗапросПоставленныеЗадачи.ВыполнитьПараметризованныйЗапрос();
Возврат Результат.ПолучитьЗначение(1,1);
КонецФункции // ПолучитьКоличествоПоставленныхЗадач
Т.о. при использовании параметризованного запроса необходимо (в отличии от обычного запроса) - установить описание параметров. Использование модификаторов для параметров вида "@ИмяПараметра" недопустимо.