|
v8: Как перебрать результат запроса, выполненный в другой базе, подключенной по COM? | ☑ | ||
---|---|---|---|---|
0
Vladal
30.03.12
✎
15:50
|
Подключил базу с помощью COM-соединения, пишу запрос:
Запрос = РДС.NewObject("Запрос"); Запрос.Текст = "ВЫБРАТЬ | АвтомобилиМеханизмы.Ссылка, | АвтомобилиМеханизмы.Код, | АвтомобилиМеханизмы.Наименование, | АвтомобилиМеханизмы.ГосударстванныйНомер, |ИЗ | Справочник.АвтомобилиМеханизмы КАК АвтомобилиМеханизмы"; РезультатЗапроса = Запрос.Выполнить().Выгрузить(); Теперь этот РезультатЗапроса никак не читается - ни выборкой, ни выгрузить в таблицу значений. Отладчик пишет COMобъет, но при раскрытии поля справочника, как есть. По форуму искал, нашел, что выборка такая же, как и при обычном запросе - но не работает. |
|||
1
Vladal
30.03.12
✎
15:50
|
*Правильно тема так: Как перебрать результат запроса ;)
|
|||
2
Eugene_life
30.03.12
✎
15:53
|
(1) Неправда.. не читается только ссылка, вот Код, Наименование и прочее - должно читаться
|
|||
3
Vladal
30.03.12
✎
15:54
|
(2) Ссылку убрал, но как перебрать или выгрузить в ТЗ?
{Форма.Форма.Форма(44)}: Метод объекта не обнаружен (Выгрузить) РезультатЗапроса.Выбрать().Выгрузить(); |
|||
4
Широкий
30.03.12
✎
15:55
|
Примитивные типы должны читаться :)
|
|||
5
КМ155
30.03.12
✎
15:56
|
(3) ЧЯДНТ ?
// получим ТЧ документа прием на работу в организацию ЗапросHR = connection.NewObject("Запрос"); ЗапросHR.Текст="ВЫБРАТЬ | ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СчетДт.Код КАК ДтКод, | ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СубконтоДт1.Наименование КАК СубконтоДт1Наименование_строкой, | ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СчетКт.Код КАК КтКод, | ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СчетДтНУ.Код КАК ДтНУКод, | ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СубконтоДтНУ1.Наименование КАК СубконтоДтНУ1Наименование_строкой, | ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СчетКтНУ.Код КАК КтНУКод, | СУММА(ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.Сумма) КАК Сумма |ИЗ | Документ.ОтражениеЗарплатыВРеглУчете.ОтражениеВУчете КАК ОтражениеЗарплатыВРеглУчетеОтражениеВУчете |ГДЕ | ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.Ссылка.Дата МЕЖДУ &ДатаНач И &ДатаКон | И ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.Ссылка.Проведен = ИСТИНА | |СГРУППИРОВАТЬ ПО | ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СчетКт.Код, | ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СчетДт.Код, | ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СчетДтНУ.Код, | ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СчетКтНУ.Код, | ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СубконтоДтНУ1.Наименование, | ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СубконтоДт1.Наименование"; //определим интервал дат ОтражениеВУчете.Очистить(); ДатаСлева=НачалоМесяца(ЭтотОбъект.ПериодРегистрации); ДатаСправа=КонецМесяца(ЭтотОбъект.ПериодРегистрации); ЗапросHR.УстановитьПараметр("ДатаНач",ДатаСлева); ЗапросHR.УстановитьПараметр("ДатаКон",ДатаСправа); ТЗ = ЗапросHR.Выполнить().Выгрузить(); // в зависимости от типа счета будем устанавливать разные субконто - подменные Для Каждого СтрокаТЗ из ТЗ Цикл |
|||
6
m-serg74
30.03.12
✎
15:56
|
(3) что за бред "РезультатЗапроса.Выбрать().Выгрузить()"? оперделись уже Выбрать() или Выгрузить()
|
|||
7
Vladal
30.03.12
✎
16:02
|
(5) Х.з. чтднт.
(6) Сначала было .Выполнить().Выгрузить(); потом стал играться пошагово (5) СтрокаТЗ - тоже ком-объект. Т.е. дальше его ручками по каждой колонке, т.е. реквизиту? |
|||
8
Vladal
30.03.12
✎
16:06
|
(5) Спасибо. Я протупил изначально - изначально у меня все данные и были. только я хотел выгрузить этот ком-объект в свою ТЗ и работать как привык. А надо теперь ручками каждую колонку выгрузить.
|
|||
9
Vladal
30.03.12
✎
16:07
|
Вот я сначала хотел так:
ЭлементыФормы.ТабличноеПоле1.Значение=Запрос.Выполнить().Выгрузить(); ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки(); |
|||
10
MSII
30.03.12
✎
16:08
|
(8) ЗаполнитьЗначенияСвойств юзай
|
|||
11
m-serg74
30.03.12
✎
16:09
|
(8) а чем плохо
Для Каждого СтрокаСОМ_ТЗ Из РезультатЗапроса Цикл СтрокаТвоейТЗ = ТвояТЗ.Добавить(); ЗаполнитьЗначенияСвойств(СтрокаТвоейТЗ, СтрокаСОМ_ТЗ); КонецЦикла; |
|||
12
aka AMIGO
30.03.12
✎
16:12
|
а не должно-ли создать ТЗ тоже "по ту сторону", где и запрос?
|
|||
13
Vladal
30.03.12
✎
16:23
|
(12) Но та потусторонняя ТЗ тоже будет Com-объектом.
|
|||
14
Vladal
30.03.12
✎
16:25
|
(11) Но прежде на до организовать структуру моей ТЗ, идентичной получаемой, т.е. МояТЗ.ДобавитьКолонку(... Верно?
|
|||
15
Kashemir
30.03.12
✎
16:28
|
(0) Что-то не въезжаю, тебе результаты из внешнего соединения надо достать или в нем же использовать ?
|
|||
16
Kashemir
30.03.12
✎
16:31
|
Если достать по примерно так
ХранилищеВнешнее = РДС.NewObject("ХранилищеЗначения", ТЗТам, РДС.NewObject("СжатиеДанных",9)); ЗаписьXML = РДС.NewObject("ЗаписьXML"); ЗаписьXML.УстановитьСтроку(); РДС.СериализаторXDTO.ЗаписатьXML(ЗаписьXML, ХранилищеВнешнее); ХранилищеВСтроке = ЗаписьXML.Закрыть(); ЧтениеXML = Новый ЧтениеXML; ЧтениеXML.УстановитьСтроку(ХранилищеВСтроке ); ТЗТут = СериализаторXDTO.ПрочитатьXML(ЧтениеXML).Получить(); |
|||
17
m-serg74
30.03.12
✎
16:36
|
(14) все верно
|
|||
18
Vladal
30.03.12
✎
16:46
|
(16) Вай, спасибо! Получилось!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |