|
Выгрузить колонку из ТЗ | ☑ | ||
---|---|---|---|---|
0
Meilleur
19.03.13
✎
12:26
|
Приветствую всех!
Может, кто-нибудь сталкивался. У меня есть ТЗ, полученная через COM соединение с другой базой 1С. Мне необходимо выгрузить колонку из этой ТЗ в отдельный массив. Так как данная ТЗ является COM-объектом, метод "Выгрузить колонку" вызвать не получается, вылетает по ошибке. Или я что-то путаю? Как можно выгрузить колонку, не прибегая к циклическому перебору строк из ТЗ? Спасибо! |
|||
1
acsent
19.03.13
✎
12:27
|
нужно safearray передавать
|
|||
2
Галахад
гуру
19.03.13
✎
12:38
|
(0) Как-то так:
массивТам = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("ОченьНужнаяКолонка") МассивТут = ЗначениеИзСтрокиВнутр(Там.ЗначениеВСтрокуВнутр(массивТам)) |
|||
3
zladenuw
19.03.13
✎
12:39
|
||||
4
Meilleur
19.03.13
✎
12:53
|
(2) Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("ОченьНужнаяКолонка")
Именно здесь и вылетает. |
|||
5
Meilleur
19.03.13
✎
12:55
|
(1)(3) У меня результат запроса или же выгрузка из него имеют тип COMОбъект. Как мне к COMSafeArray перейти при этом?
|
|||
6
Галахад
гуру
19.03.13
✎
12:56
|
(4) Может в коде чего?
|
|||
7
Meilleur
19.03.13
✎
13:17
|
(6) В коде все просто:
Рез = Запрос.Выполнить(); Выгрузка = Рез.Выгрузить(); ДанныеПоКолонке = Выгрузка.ВыгрузитьКолонку("Код"); В результате все переменные: Рез, Выгрузка и ДанныеПоКолонке имеют тип COMОбъект различной структуры. Но выгрузить значения в массив или список значений ни из одной полученной переменной у меня не получается. |
|||
8
Галахад
гуру
19.03.13
✎
13:20
|
Наверное ругается как-то?
|
|||
9
Reset
19.03.13
✎
13:24
|
(7) Ты (2) проигнорировал?
|
|||
10
Reset
19.03.13
✎
13:25
|
Колонку с кодом так легко пернести, т.к. тип данных примитивный
|
|||
11
Defender aka LINN
19.03.13
✎
13:25
|
(7) Вообще-то ДанныеПоКолонке - массив. Просто ты этого понять не можешь.
|
|||
12
Meilleur
19.03.13
✎
13:32
|
(11) Спасибо за комплимент!
Немного уточню. Не получается выгрузить в массив, который бы я передал на входе в качестве параметра для другого запроса. |
|||
13
Reset
19.03.13
✎
13:34
|
(12) Посочувствовать нужно или что?
|
|||
14
Reset
19.03.13
✎
13:34
|
Ответ дали вроде.
|
|||
15
Рэйв
19.03.13
✎
13:36
|
(12)Если массив содержит числа,даты или строки - создай массив местной базе и заполни его перебрав полученный COM массив.
Если содержит ссылки СОМ базы, то тебе придется брать у них код (или что-то еще) и искать локально |
|||
16
Reset
19.03.13
✎
13:37
|
(15) Он не хочет перебором (см (0))
|
|||
17
Рэйв
19.03.13
✎
13:37
|
(0)А...
Ну,мало ли что он не хочет.. |
|||
18
Meilleur
19.03.13
✎
13:45
|
(2) Да, все правильно! Данные выгружаются без проблем и очень быстро в отличие от перебора.
массивТам = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("ОченьНужнаяКолонка") МассивТут = ЗначениеИзСтрокиВнутр(Там.ЗначениеВСтрокуВнутр(массивТам)) Просто первый оператор необходимо разбить на несколько, как я и сделал. Но второй оператор я ввиду ошибочного первого проигнорировал... |
|||
19
Meilleur
19.03.13
✎
13:46
|
(2) Спасибо!
|
|||
20
skunk
19.03.13
✎
13:47
|
(2)все это хорошо будет работать пока базы индентичны
|
|||
21
Meilleur
19.03.13
✎
13:50
|
(20) Задача и заключается в том, чтобы синхронизировать один объект в двух базах.
|
|||
22
skunk
19.03.13
✎
13:53
|
(21)вот и получиш жопу когда будешь синхранизировать объект которого нет в базах
|
|||
23
Галахад
гуру
19.03.13
✎
13:53
|
(18) "Просто первый оператор необходимо разбить на несколько, как я и сделал." Почему? А как в (2) не работает?
(20) А какая разница для простых типов? |
|||
24
Reset
19.03.13
✎
13:54
|
(20) Все будет работать даже в совершенно различных базах и кофигурациях до тех пор, пока в коллекции будут только примитивные типы
|
|||
25
skunk
19.03.13
✎
14:09
|
(23)а ты уверен, что там простые типы?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |