Имя: Пароль:
1C
1C 7.7
v7: SQL запрос
0 pofigos
 
20.06.12
18:40
Добрый день форумчане.

Подскажите кто может. Начал изучать прямые запросы:

Запрос = СоздатьОбъект("ODBCRecordSet");
   ТекстЗапроса = "
   |SELECT
   |    Рег.Покупатель as [Контрагент $Справочник.Контрагенты],
   |    Рег.Филиал as [Филиал $Справочник.Подразделение],
   |    Рег.Товар as [Номенклатура $Справочник.ВидыТоваров],
   |    Рег.СуммаОборот as СуммаОборот,
   |    Рег.КоличествоОборот as КоличествоОборот
   |FROM
   |    $РегистрОбороты.Реализация(:ВыбДата,:КонДата~,,,,(Покупатель,Товар,Филиал),(Сумма,Количество)) as Рег
   |Where
   |    Рег.Филиал = :ВыбФилиал";

   Запрос.УстановитьТекстовыйПараметр("ВыбДата",НачДата);    
   Запрос.УстановитьТекстовыйПараметр("КонДата",КонДата);
   Запрос.УстановитьТекстовыйПараметр("ВыбФилиал",ВыбФилиал);
   Запрос.ВыполнитьИнструкцию(ТекстЗапроса,ВыхТаб);

Вопрос такой, как мне назначить условия отбора по параметрам, которые задаются на форме отчета (Пустое значение(обирается все)\группа (если тип справочник)\элемент)

Заранее спасибо
1 leshikkam
 
20.06.12
18:44
Универсальной разработки в общем доступе не существует.
Рекомендую накладывать условия не "за" виртуальной таблицы а в секции Условие
2 pofigos
 
20.06.12
18:48
И еще такой вопрос, правильно ли я понял, что если я какой-то переменной присвою текст до описания текста запроса, а в блоке WHERE присвою значение этого параметра, запрос все равно отработает?
3 leshikkam
 
20.06.12
18:52
В классе ODBCRecordset установка параметров не зависит от текста запроса.
В классе ПрямойЗапрос только для параметризированного запроса текст запроса надо устанавливать перед установкой описания параметров. В остальных случаях поведение аналогично классу ODBCRecordset
4 pofigos
 
20.06.12
18:52
(2) *Значение переменной
5 pofigos
 
20.06.12
18:52
Спасибо, буду разбираться дальше
6 leshikkam
 
20.06.12
18:57
Сразу дам уточнение - в ВТ (виртуальных таблицах таких как РегистрОбороты) нельзя накладывать фильтр на реквизиты и соответственно получать значения реквизитов в выборке. Для обращения к реквизитам необходимо обращаться напрямую к таблице движения регистра ($Регистр.<ИмяРегистра>)