Имя: Пароль:
1C
1С v8
Таблицу-COM объект вставить в запрос
,
0 ЕлАнКо
 
23.12.13
13:11
Добрый день! Подскажите, как вставить в запрос таблицу, являющуюся COM объектом?
1 Wobland
 
23.12.13
13:12
никак
2 Wobland
 
23.12.13
13:13
я у себя преврашал такое в родную ТЗ с родными ссылками
3 Wobland
 
23.12.13
13:13
а без фото совсем браться не стоит
4 ЕлАнКо
 
23.12.13
13:14
(1) а, преобразовать в таблицу значений (желательно безе перебора, если не ошибаюсь именно у вы писали, что есть такой способ)?
5 ДенисЧ
 
23.12.13
13:15
(4) только перебор, только хардкор
6 Wobland
 
23.12.13
13:15
(4) не знаю, что я там писал, но способ есть
7 ЕлАнКо
 
23.12.13
13:16
(6) можете поделиться?
8 Wobland
 
23.12.13
13:16
(5) или немного магии
9 Wobland
 
23.12.13
13:17
ТаблицаПродаж=ПолучитьТаблицуПродаж(ДатаНачала, ДатаОкончания); //КОМ
    стрТаблицаПродаж=Астор.ЗначениеВСтрокуВнутр(ТаблицаПродаж);
    ТЗ=ЗначениеИзСтрокиВнутр(стрТаблицаПродаж); //родная ТЗ
10 sapphire
 
23.12.13
13:17
(5) Фи, сериализация в xml десереализация в ТЗ
11 ДенисЧ
 
23.12.13
13:18
(10) какая пошлость...
12 ЕлАнКо
 
23.12.13
13:33
(9) что-то не получается, что не так:
    Результат = Запрос.Выполнить().Выгрузить();  //КОМ
    
    Временно = ЗначениеВСтрокуВнутр(Результат);
    Результат1 = ЗначениеИзСтрокиВнутр(Временно);

В результате получаю Результат1 Неопределено
13 Wobland
 
23.12.13
13:35
(12) попробуй ещё раз
14 Serginio1
 
23.12.13
13:39
Проще использовать внешние отчеты на стороне сервера и предавать параметры в виде сериализованных данных
v8: Получение ссылки на элемент ПВХ через COM-коннектор
15 Serginio1
 
23.12.13
13:40
(12) Вообще проще использовать СериализаторXDTO
Только База.ЗначениеВСтрокуВнутр(Результат);
16 ЕлАнКо
 
23.12.13
13:41
(9) Что такое Астор. в строке
стрТаблицаПродаж=Астор.ЗначениеВСтрокуВнутр(ТаблицаПродаж);
17 Wobland
 
23.12.13
13:46
(16) Астор=v81.Connect()
18 ЕлАнКо
 
23.12.13
14:00
(17) да, уже поняла, но все равно не получается :(. Пишет, что метод объекта не обнаружен. Что же все таки тут не так:
    
db = Новый COMобъект("V82.COMConnector");
Попытка
        Источник = db.Connect
             ("File=""D:\1_Источник"";Usr="""";Pwd="""";");
    сообщить("Получилось");
Исключение
    сообщить("база не открыта");
    Возврат;
КонецПопытки;
    
Запрос = Источник.NewObject("Запрос");
Запрос.Текст =
"ВЫБРАТЬ
.............. текст запроса

Результат = Запрос.Выполнить().Выгрузить();  
Временно = Источник.ЗначениеВСтрокуВнутр(Результат);
Результат1 = ЗначениеИзСтрокиВнутр(Временно);
19 ЕлАнКо
 
23.12.13
14:03
(18) ругается на строку
Временно = Источник.ЗначениеВСтрокуВнутр(Результат);
20 Wobland
 
23.12.13
14:06
(19) раз ругается, значит она ему не нравится. оно просто так ругаться не станет
21 ЕлАнКо
 
23.12.13
14:08
(20) а есть варианты, чем не нравиться?
22 Wobland
 
23.12.13
14:09
(21) конечно, есть. оно тебе чёрным шрифтом по белому фону рассказывает
23 ЕлАнКо
 
23.12.13
14:14
(22) ответ не впечатлил, так и не понятно, можно реализовать эту задачу как было предложено в (9) или нет?
24 Serginio1
 
23.12.13
14:15
ЗаписьXML = ВнешнееСоединение.NewObject("ЗаписьXML");
ЗаписьXML.УстановитьСтроку();
ВнешнееСоединение.СериализаторXDTO.ЗаписатьXML(ЗаписьXML, Результат);
ХранилищеВСтроке = ЗаписьXML.Закрыть();


ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.УстановитьСтроку(ХранилищеВСтроке);
Тз = СериализаторXDTO.ПрочитатьXML(ЧтениеXML);
25 Wobland
 
23.12.13
14:16
(23) ну я ж сделал
26 ЕлАнКо
 
23.12.13
14:19
(25) ну я тоже, переименовала Источник и все пошло, так что спасибо
27 ЕлАнКо
 
23.12.13
14:29
(24) Это для меня пока вообще темный лес. Этот способ получает ТЗ, в которой тоже данные только примитивных типов?
28 Serginio1
 
23.12.13
14:37
(27) Не только. Только вот обратное преобразование будет не совсем то, если базы не синхронизированы по УИД.

В 24 ты получаешь тз в сериализованном в XML.
Вообще 1С длч передачи данных все сериализует в XML.
Так в описании ТаблицаЗначений
Возможен обмен с сервером. Сериализуется. Данный объект может быть сериализован в/из XDTO. Тип XDTO, соответствующий данному объекту, определяется в пространстве имен {http://v8.1c.ru/8.1/data/core}. Имя типа XDTO: ValueTable.

Можешь посмотреть в чем различие  строк
ЗначениеВСтрокуВнутр

СериализаторXDTO.ЗаписатьXML
визуально.

Они занимаются одним и тем же только по разному.
А вот стандарт обмена выбран XML