|
v7: проблемы с прямым запросом | ☑ | ||
---|---|---|---|---|
0
Fiasko
20.05.13
✎
00:20
|
Господа, я провозился с одним запросом несколько часов.. все заработало, но так и не понял в чем дело. Вопрос: Отличается ли чем-то способ получения данных, типа: тз=Запрос.ВыполнитьИнструкцию(ТекстЗапроса) или Запрос.ВыполнитьИнструкцию(ТекстЗапроса,тз) ???
|
|||
1
Попытка1С
20.05.13
✎
01:02
|
Вообще-то нет..
|
|||
2
Злопчинский
20.05.13
✎
01:03
|
первый вариант - слева не обязательно будет тип данных таблица, может быть скаляр
???? |
|||
3
Попытка1С
20.05.13
✎
01:03
|
"На самом деле ВыполнитьИнструкцию имеет три параметра
ВыполнитьИнструкцию(ТекстЗапроса, ТЗ, ФлагОчищитьТЗ); ТЗ - Таблица значений или ее наследник. ФлагОчищитьТЗ по умолчанию 1 очистит и создаст заново ТЗ по запросу. 0 не очищать. ТЗ = ВыполнитьИнструкцию(ТекстЗапроса); краткая более удобная форма при этом ТЗ всегда создается." http://www.1cpp.ru/forum/YaBB.pl?num=1206686989 |
|||
4
Злопчинский
20.05.13
✎
01:03
|
хотя я не спец - прислушаюсь к мнению других...
|
|||
5
Ёпрст
20.05.13
✎
09:03
|
(3) >>>при этом ТЗ всегда создается
какая наивность. http://www.1cpp.ru/docum/icpp/html/ODBC.html#executestatement |
|||
6
Fiasko
20.05.13
✎
18:56
|
мне кажется у меня чудеса творились... вот текст запроса:
Для сч=1 По ЗначенияФильтра.РазмерСписка() Цикл ЗначениеФильтра = ЗначенияФильтра.ПолучитьЗначение(сч); Запрос.УстановитьТекстовыйПараметр("ЗначениеФильтра", ЗначениеФильтра); ТекСписокТоваров = СоздатьОбъект("СписокЗначений"); тзБуфер.Выгрузить(ТекСписокТоваров,,,"Товар"); Если ТекСписокТоваров.РазмерСписка() > 0 Тогда Запрос.УложитьСписокОбъектов(ТекСписокТоваров, "#ТекСписокТоваров", "Номенклатура"); КонецЕсли; ТекстЗапроса = " |SELECT Номенклатура.ID [Товар $Справочник.Номенклатура] |FROM $Справочник.Номенклатура AS Номенклатура With (NOLOCK) |INNER JOIN $Справочник.СвойстваНоменклатуры AS СвойстваНоменклатуры With (NOLOCK) ON Номенклатура.ID = СвойстваНоменклатуры.PARENTEXT |WHERE (Номенклатура.ISMARK <> 1) |AND (Номенклатура.ID IN (SELECT val FROM #ТекСписокТоваров)) |AND ($СвойстваНоменклатуры.ЗначениеСвойства = :ЗначениеФильтра) |" ; Запрос.ВыполнитьИнструкцию(ТекстЗапроса, тзТоваров); КонецЦикла; Так вот, несмотря на то, что это запрос должен выгружать результат в тзТоваров, у меня почему-то тзБуфер (!!!) изменялась тоже - из нее удалялись ранее созданные колонки и в нее (!) загружались результаты запроса.. |
|||
7
Fiasko
20.05.13
✎
18:59
|
помогло только так:
тзТоваров = Запрос.ВыполнитьИнструкцию(ТекстЗапроса); |
|||
8
Злопчинский
20.05.13
✎
19:04
|
Не видно как определена ТЗБуфер
|
|||
9
Fiasko
20.05.13
✎
19:17
|
тзТоваров = СоздатьОбъект("ТаблицаЗначений");
тзБуфер = СоздатьОбъект("ТаблицаЗначений"); Запрос = СоздатьЗапрос(); Если Страница=2 Тогда тзБуфер = ЗапросПоТоварам(КлассыРукава); КонецЕсли; |
|||
10
fedoss
20.05.13
✎
19:21
|
(9) А если
тзТоваров = СоздатьОбъект("ТаблицаЗначений"); написать прямо перед Запрос.ВыполнитьИнструкцию(ТекстЗапроса, тзТоваров); тзБуфер продолжит волшебным образом изменяться? |
|||
11
Fiasko
20.05.13
✎
19:41
|
(10) угу :)
|
|||
12
SnarkHunter
20.05.13
✎
20:10
|
Сдается мне, Герасим, что ты чего-то недоговариваешь... (с)Муму
|
|||
13
Fiasko
20.05.13
✎
21:50
|
(12) это к чему? все понятно же...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |