Имя: Пароль:
1C
1С v8
нужно чтобы ПроцессорВывода.Вывести выгрузил в ТЗ из COMобъект
0 Комфортный
 
12.03.14
23:17
&НаКлиенте
Процедура Сравнить(Команда)
    СравнитьНаСервере();
КонецПроцедуры

&НаСервере
Процедура СравнитьНаСервере()
    ОтчетОбъект=РеквизитФормыВЗначение("Отчет");
    ИсточникДанных2=ОтчетОбъект.СхемаКомпоновкиДанных.ИсточникиДанных.Добавить();
    
    ИсточникДанных2.Имя="ИсточникДанных2";
    ИсточникДанных2.СтрокаСоединения="Srvr=""Prog1C"";Ref=""ImperialStorchous"";Usr=""СторчоусМИ"";Pwd=""40461RT""";
    //ИсточникДанных2.ТипИсточникаДанных=    "ВнешниеИсточникиДанных.ВнешнийИсточникДанных1";
    ИсточникДанных2.ТипИсточникаДанных=    "Local";
    
    ОтчетОбъект.СхемаКомпоновкиДанных.НаборыДанных.НаборДанных1.ИсточникДанных="ИсточникДанных2";
    
    ТЗ=Новый ТаблицаЗначений;
    ВнешниеНаборыДанных = Новый Структура;
    ВнешниеНаборыДанных.Вставить("ТЗ",ТЗ);  
    
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    //МакетКомпоновки = КомпоновщикМакета.Выполнить(ОтчетОбъект.СхемаКомпоновкиДанных,Отчет.КомпоновщикНастроек.ПолучитьНастройки());
    //МакетКомпоновки = КомпоновщикМакета.Выполнить(ОтчетОбъект.СхемаКомпоновкиДанных,Отчет.КомпоновщикНастроек.ПолучитьНастройки() , ДанныеРасшифровки , ,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));    
    МакетКомпоновки = КомпоновщикМакета.Выполнить(ОтчетОбъект.СхемаКомпоновкиДанных,Отчет.КомпоновщикНастроек.ПолучитьНастройки() , , ,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
    
    ПараметрыСоединения="Srvr=""Prog1C"";Ref=""ImperialStorchous"";Usr=""СторчоусМИ"";Pwd=""40461RT""";
    Соединение=СоздатьСоединение(ПараметрыСоединения);
    
    ПроцессорКомпоновкиДанных = Соединение.NewObject("ПроцессорКомпоновкиДанных");
    
    Строка = ЗначениеВСтрокуXML(МакетКомпоновки);
    
    ЧтениеXML= Соединение.NewObject("ЧтениеXML");
    
    ЧтениеXML.УстановитьСтроку(Строка);
    
    
    Строка2= ЗначениеВСтрокуXML(ВнешниеНаборыДанных);
    
    ЧтениеXML2= Соединение.NewObject("ЧтениеXML");
    
    ЧтениеXML2.УстановитьСтроку(Строка2);

    
    //Соединение.СериализаторXDTO.ПрочитатьXML(ЧтениеXML);

    //ПроцессорКомпоновкиДанных.Инициализировать(ЗначениеИзСтрокиXML(ЗначениеВСтрокуXML(МакетКомпоновки)));
    ПроцессорКомпоновкиДанных.Инициализировать(Соединение.СериализаторXDTO.ПрочитатьXML(ЧтениеXML),Соединение.СериализаторXDTO.ПрочитатьXML(ЧтениеXML2));
    

    Результат.Очистить();
    Табл=Новый ТаблицаЗначений;
    
    //ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    //ПроцессорВывода.УстановитьДокумент(Результат);    
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
    ПроцессорВывода.УстановитьОбъект(Табл);
    
    //ПроцессорВывода.НачатьВывод();
    //
    //Пока Истина Цикл
    //    
    //    ЭлементРезультата=ПроцессорКомпоновкиДанных.Следующий();
    //    
    //    Если ЭлементРезультата = Неопределено Тогда
    //        
    //        Прервать;
    //        
    //    Иначе
    //        
    //        ЗаписьXML= Соединение.NewObject("ЗаписьXML");
    //        
    //        ЗаписьXML.УстановитьСтроку();
    //        
    //        Соединение.СериализаторXDTO.ЗаписатьXML(ЗаписьXML,ЭлементРезультата);
    //        
    //        ПроцессорВывода.ВывестиЭлемент(ЗначениеИзСтрокиXML(ЗаписьXML.Закрыть()));
    //        
    //    КонецЕсли;    
    //        
    //    
    //КонецЦикла;    
    //
    //ПроцессорВывода.ЗакончитьВывод();
    
    
    ЗаписьXML= Соединение.NewObject("ЗаписьXML");
    
    ЗаписьXML.УстановитьСтроку();
    
    Соединение.СериализаторXDTO.ЗаписатьXML(ЗаписьXML,ПроцессорКомпоновкиДанных,Тип("ПроцессорКомпоновкиДанных"));
    
    ПроцессорВывода.Вывести(ЗначениеИзСтрокиXML(ЗаписьXML.Закрыть()));

    
     //ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных,Истина);
    
     Сообщить("123");
КонецПроцедуры

Процедура ДействияФормыСформировать (Кнопка)
     СравнитьНаСервере();
КонецПроцедуры

//Записать значение в строку хмл
Функция ЗначениеВСтрокуXML(Значение) Экспорт

    ЗаписьXML= Новый ЗаписьXML;
    
    ЗаписьXML.УстановитьСтроку();
    
    СериализаторXDTO.ЗаписатьXML(ЗаписьXML,Значение);
    
    Возврат ЗаписьXML.Закрыть();
КонецФункции

//Записать значение из строку хмл
Функция ЗначениеИзСтрокиXML(Строка) Экспорт

    ЧтениеXML= Новый ЧтениеXML;
    
    ЧтениеXML.УстановитьСтроку(Строка);
    
    Возврат СериализаторXDTO.ПрочитатьXML(ЧтениеXML);
КонецФункции


&НаСервере
Функция СоздатьСоединение(СтрокаПодключения) Экспорт
    
    ПодключаемаяБаза = Новый COMобъект("V83.COMConnector");
    
    Попытка
        БД = ПодключаемаяБаза.Connect(СтрокаПодключения);
        Сообщить(БД.Метаданные.ПодробнаяИнформация + " версия: " + БД.Метаданные.Версия);
        Сообщить("Соединение с базой "+СтрокаПодключения+" установлено.");
        Возврат БД;
    Исключение
        Сообщить("Подключение не установлено! Проверьте параметры!"+" "+ОписаниеОшибки());
        Возврат Ложь;
    КонецПопытки;
    
КонецФункции
1 Комфортный
 
12.03.14
23:19
в Табличный документ выводит,
Соединение.СериализаторXDTO.ЗаписатьXML(ЗаписьXML,ПроцессорКомпоновкиДанных,Тип("ПроцессорКомпоновкиДанных"));
а вот как сие завернуть ?
2 Комфортный
 
13.03.14
01:14
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
    ПроцессорВывода.УстановитьОбъект(Табл);
    
    ПроцессорВывода.НачатьВывод();
    
    Пока Истина Цикл
        
        ЭлементРезультата=ПроцессорКомпоновкиДанных.Следующий();
        
        Если ЭлементРезультата = Неопределено Тогда
            
            Прервать;
            
        Иначе
            
            ЗаписьXML= Соединение.NewObject("ЗаписьXML");
            
            ЗаписьXML.УстановитьСтроку();
            
            Соединение.СериализаторXDTO.ЗаписатьXML(ЗаписьXML,ЭлементРезультата);
            
            ПроцессорВывода.ВывестиЭлемент(ЗначениеИзСтрокиXML(ЗаписьXML.Закрыть()));
            
        КонецЕсли;    
            
        
    КонецЦикла;    
    
    ПроцессорВывода.ЗакончитьВывод();


вот так прекрасно выгружает...