Имя: Пароль:
1C
1С v8
ВыполнитьПакет() для СОМ-запроса
0 Stim
 
11.06.13
00:30
Запрос=Соединение.NewObject("Запрос");
Запрос.Текст="бла-бла";
РезультатЗапроса = Запрос.ВыполнитьПакет();
ТЗ = РезультатЗапроса[1];

Запрос выполняется, отладчик показывает, что результат запроса - это массив(СОМ массив) из нескольких элементов. И даже показывает эти элементы, если нажать F2 на РезультатЗапроса в отладчике.

Но код РезультатЗапроса[1] выдает ошибку индекса за пределами, хотя в массиве больше 2 элементов точно.
Тот же запрос, выполненный напрямую в самой базе(без СОМ) - работает без проблем.
Куда копать?
1 Dethmont
 
11.06.13
00:36
Сообщить(РезультатЗапроса.ВГраница());
2 Dethmont
 
11.06.13
00:37
ТЗ = РезультатЗапроса.Получить(1);
3 H A D G E H O G s
 
11.06.13
00:38
(0) 1С не понимает обращение по индексу, COmОбъект - не коллекция. Стим, Стим.
4 Stim
 
11.06.13
00:39
(2) [] - аналогично команде ПОлучить(). Но все равно спасибо, завтра попробую, хотя и не уверен, что это что-то изменит
5 Stim
 
11.06.13
00:40
(3) и как быть? как получить результаты пакетных подзапросов?
6 Dethmont
 
11.06.13
01:11
(4) Это не одно и тоже...

Получить(<Индекс>)

Примечание:

Применяется в случаях, когда использование оператора [] невозможно.
7 Dethmont
 
11.06.13
01:23
На самом деле тут все логично.

Ты получаешь тот же массив только обернутый в СОМ и 1Ска в данном контексте не знает о наличии индексов у СОМОбъекта метод Get() позволяет получить значение по индексу внутри СОМ обертки
8 Stim
 
11.06.13
09:09
Спасибо, действительно - Получить()