![]() |
![]() |
![]() |
|
Получение типа "ТаблицаЗначений" | ☑ | ||
---|---|---|---|---|
0
zippygrill
15.10.14
✎
10:48
|
Привет!
На что можно заменить выражение ЗначениеИзСтрокиВнутр(Параметры.Соединение.ЗначениеВСтрокуВнутр(мРезультатЗапроса.Получить(3).Выгрузить())) чтобы возвращаемый тип был ТЗ? А то получаю bad allocation |
|||
1
zippygrill
15.10.14
✎
11:36
|
апну
|
|||
2
Жан Пердежон
15.10.14
✎
11:37
|
какие типы колонок?
|
|||
3
Chai Nic
15.10.14
✎
11:39
|
Циклических ссылок в таблице нет?
|
|||
4
zippygrill
15.10.14
✎
11:50
|
Примитивные и ссылочные.
|
|||
5
Chai Nic
15.10.14
✎
11:50
|
С обеих сторон одна и та же версия 1с?
|
|||
6
zippygrill
15.10.14
✎
11:51
|
Да
|
|||
7
zippygrill
15.10.14
✎
11:51
|
Если запускать обработку на другой сервер (виртуальный) то ошибки нет (bad allocation) :)
|
|||
8
Chai Nic
15.10.14
✎
11:51
|
А если не делать ЗначениеИзСтрокиВнутр, а просто обратиться к этой строке (вывести её в окно сообщений, например) - ошибка выдается?
|
|||
9
zippygrill
15.10.14
✎
11:54
|
(8) Обращение идет к массиву результатов запросов для того чтобы аналогично "мРезультатЗапроса.Получить(3).Выгрузить()" получить результат запроса выполненный по COM
|
|||
10
zippygrill
15.10.14
✎
11:54
|
Нагляднее что происходит
Если Параметры.ИспользоватьCOM Тогда тзОстаткиПоКонтрагентамИДоговорам = ЗначениеИзСтрокиВнутр(Параметры.Соединение.ЗначениеВСтрокуВнутр(мРезультатЗапроса.Получить(3).Выгрузить())); тзВзаиморасчетыПоДокументам = ЗначениеИзСтрокиВнутр(Параметры.Соединение.ЗначениеВСтрокуВнутр(мРезультатЗапроса.Получить(1).Выгрузить())); тзВсегоОплатыПоДоговору = ЗначениеИзСтрокиВнутр(Параметры.Соединение.ЗначениеВСтрокуВнутр(мРезультатЗапроса.Получить(8).Выгрузить())); тзПритокДС = ЗначениеИзСтрокиВнутр(Параметры.Соединение.ЗначениеВСтрокуВнутр(мРезультатЗапроса.Получить(5).Выгрузить())); тзВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки = ЗначениеИзСтрокиВнутр(Параметры.Соединение.ЗначениеВСтрокуВнутр(мРезультатЗапроса.Получить(7).Выгрузить())); тзЗапретОтгрузки = ЗначениеИзСтрокиВнутр(Параметры.Соединение.ЗначениеВСтрокуВнутр(мРезультатЗапроса.Получить(9).Выгрузить())); Иначе тзОстаткиПоКонтрагентамИДоговорам = мРезультатЗапроса.Получить(3).Выгрузить(); тзВзаиморасчетыПоДокументам = мРезультатЗапроса.Получить(1).Выгрузить(); тзВсегоОплатыПоДоговору = мРезультатЗапроса.Получить(8).Выгрузить(); тзПритокДС = мРезультатЗапроса.Получить(5).Выгрузить(); тзВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстатки = мРезультатЗапроса.Получить(7).Выгрузить(); тзЗапретОтгрузки = мРезультатЗапроса.Получить(9).Выгрузить(); КонецЕсли; |
|||
11
Chai Nic
15.10.14
✎
11:55
|
И как вы себе представляете передать массив результатов запроса в другую базу? Передавайте таблицу значений в чистом виде.
|
|||
12
Chai Nic
15.10.14
✎
11:56
|
Всё-таки, ошибка возникает при сериализации или наоборот?
|
|||
13
zippygrill
15.10.14
✎
12:06
|
(11) При.
Никто массив никуда не передает :) |
|||
14
Serginio1
15.10.14
✎
12:09
|
Выгрузи через СериализаторXDTO
v8: Таблицу-COM объект вставить в запрос |
|||
15
hhhh
15.10.14
✎
12:16
|
(13) всё-таки проследите, чтобы в ТЗ были только примитивные типы.
|
|||
16
zippygrill
15.10.14
✎
16:09
|
ВнешнееСоединение.СериализаторXDTO.ЗаписатьXML(ЗаписьXML, мРезультатЗапроса.Получить(3).Выгрузить()); - так что ли?
|
|||
17
Serginio1
15.10.14
✎
16:15
|
(16) Наверное.
Ты через сеализатор должен записать Комовскую ТЗ Если мРезультатЗапроса это Сом запрос то да. |
|||
18
zippygrill
15.10.14
✎
16:21
|
(17) Понятно.
мРезультатЗапроса = Запрос.ВыполнитьПакет(); так что ТЗ внутри еще массива. |
|||
19
zippygrill
15.10.14
✎
17:06
|
Не сработало. На физическом сервере приложения выдал ошибку. И без причин еще :)
ВнешнееСоединение.СериализаторXDTO.ЗаписатьXML(ЗаписьXML, Результат); по причине: Неизвестная ошибка |
|||
20
zippygrill
15.10.14
✎
17:10
|
На физ. сервере стоит платформа х64 и 16гб. Изначально она ругалась на "ЗначениеИзСтрокиВнутр(Параметры.Соединение.ЗначениеВСтрокуВнутр(мРезультатЗапроса.Получить(3).Выгрузить()))".
Подумал давай ка поменяю на (14), в надежде что заработает. Но не сработало. |
|||
21
Serginio1
15.10.14
✎
17:17
|
(20) А на клиенте срабатывает?
Сделай внешний отчет и создай в модуле функцию которая возвратит строку. Этот метод можно вызвать из этой же обработки и отладить. Эту же отчет (обработку) можно вызвать через COM Как обратиться к справочнику по номеру из VB.NET v8: 8.2, COM-соединение, C#, dynamic строки |
|||
22
zippygrill
15.10.14
✎
17:24
|
(21) Больше чем уверен что на клиенте также будет работать (всю обработку надо перелопатить чтобы сделать на клиенте). Но...однозначный факт ... сформировал с отбором и ошибки не было. Вывод, скорее всего, один, причина в том что действительно не хватает памяти серверу.
|
|||
23
Serginio1
15.10.14
✎
17:34
|
(22) Можно ТЗ сжать и передавать как ХранилищеЗначения
v8: Помогите с загрузкой изображения в XML |
|||
24
Chai Nic
15.10.14
✎
18:48
|
(22) Как вариант - можно попробовать через ЗначениеВФайл.
|
|||
25
zippygrill
15.10.14
✎
20:41
|
Так перед тем как сжать ТЗ, хорошо было бы ее получить. Вмдите ли получить то пока не получается.
|
|||
26
Рэйв
15.10.14
✎
20:53
|
(0)Ты странный...
Я тебя удивлю. Но ИзЗначениеИзСтрокиВнутр( Можно понимать все что угодно.Почти. Но только то что ты положил как ЗначениеВСтрокуВнутр |
|||
27
Рэйв
15.10.14
✎
20:54
|
Не положил - не получил...Логично.
Сохранение энергии. 3 закон Ньютона |
|||
28
Рэйв
15.10.14
✎
20:56
|
Я так хотел донести до них свою мысль:-) Кажется перестарался.
:-) |
|||
29
zippygrill
15.10.14
✎
21:26
|
Прошу прощения, это я отвлекся. Завтра еще попробую через Хранилище.
|
|||
30
Chai Nic
15.10.14
✎
21:53
|
А кстати.. Интересно, какой в принципе размер строки, передаваемый через COM? Есть ли ограничение, и если есть - то оно фиксированно или от зависит от чего-то системного?
|
|||
31
Фокусник
15.10.14
✎
23:17
|
(0) ИМХО, лучше явным образом создать новую ТЗ, создать в ней колонки (обходом Соединение.ТЗ.Колонки) и заполнить значения через перебор строк, добавление строки и ЗаполнитьЗначенияСвойств().
|
|||
32
Chai Nic
16.10.14
✎
08:04
|
(31) Это с какого боку лучше? Зачем напрягать интерпретатор там, где можно обойтись системными средствами?)
|
|||
33
Fragster
гуру
16.10.14
✎
08:32
|
Это через COM?
|
|||
34
Fragster
гуру
16.10.14
✎
08:33
|
XML через файл можно попробовать, если через строку не пролезает :)
|
|||
35
Chai Nic
16.10.14
✎
08:39
|
(34) Через файл можно и без xml - быстрее будет, см. (24)
|
|||
36
Фокусник
16.10.14
✎
08:40
|
(32) С такого, что это правильнее. И как минимум работает, в отличии от (0), а также наверняка быстрее чем "через файл" ;)
|
|||
37
Chai Nic
16.10.14
✎
08:54
|
(36) Через ЗаполнитьЗначенияСвойств скорее всего не взлетит, а заполнять каждый реквизит, дергая при каждом обращении межпроцессное взаимодействие будет явно дороже.
|
|||
38
Фокусник
16.10.14
✎
09:00
|
(37) "ЗаполнитьЗначенияСвойств скорее всего не взлетит"
Значения простых типов заполнятся, ссылки проигнорируются. |
|||
39
Chai Nic
16.10.14
✎
09:07
|
(38) Не уверен. Всё-таки объект COM-интерфейса - это не совсем то же самое, что объект 1с. Хотя свойства и методы совпадают, но работают иначе. Вспомним хотя бы навязшую в зубах передачу чисел с плавающей точкой..
|
|||
40
МишельЛагранж
16.10.14
✎
09:20
|
А еще никто не догадался посмотреть, что же в случае ошибки в записи возвращает мРезультатЗапроса.Получить(3).Выгрузить()?
|
|||
41
МишельЛагранж
16.10.14
✎
09:22
|
(37)"дергая при каждом обращении межпроцессное взаимодействие"
слова-то какие умные. Ты не забыл, что рабюотаешь с 1С, и подобные заклинания в ней никакого практического значения никакого не имеют? )) |
|||
42
Фокусник
16.10.14
✎
09:42
|
(39) Я так делал :)
|
|||
43
Chai Nic
16.10.14
✎
10:04
|
(42) А если в таблице есть агрегатные объекты (массивы, списки, таблицы)? Вариант с сериализацией в файл наиболее универсален, всё-таки.
|
|||
44
Serginio1
17.10.14
✎
10:21
|
(29) Ну огласи результаты своих изысков.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |