Имя: Пароль:
1C
1С v8
com соединение 1с 8.2 запрос
0 igorius
 
07.10.15
16:55
Подскажите в чем может быть проблема? на ПроцесореКомпоновке вылетает... при этом пишет Не найдено "ДолгКонтрагента"(хотя я его получаю)  и  
Error executing report
через:
Error running processor - 'ПриКомпоновкеРезультата'
через:
{Отчет.ОтчетПоДолгамКонтрагенты.МодульОбъекта(66)}: Error calling context method (Инициализировать)
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, ДанныеРасшифровки);
через:
Data composition error
через:
Initialization error

Сам код

ВнешниеНаборыДанных = Новый Структура;


Попытка
            КОМ=Новый COMОбъект("V82.COMConnector");
            База=КОМ.Connect("Srvr=ia;Ref=aerostar_temp;Usr=Администратор;Pwd=123");
        Исключение
            Сообщить(ОписаниеОшибки(),СтатусСообщения.Внимание);
        КонецПопытки;
        
        ТекстЗапроса =
        "ВЫБРАТЬ
        |    ВзаиморасчетыСКонтрагентамиОстатки.Контрагент,
        |    ВзаиморасчетыСКонтрагентамиОстатки.СуммаЕвроОстаток КАК Долг
        |ИЗ
        |    РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки КАК ВзаиморасчетыСКонтрагентамиОстатки";
        
    КонецЕсли;              
    

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

КонецПроцедуры

Функция ВернутьРезультатЗапроса(ТекстЗапроса,База)
    

        Запрос=База.NewObject("Запрос");

    Запрос.Текст = ТекстЗапроса;

    Возврат Запрос.Выполнить();
КонецФункции
1 ukolabrother
 
07.10.15
16:57
Ты ком объект вставляешь, я думаю СКД не умеет с ним работать
2 igorius
 
07.10.15
16:59
(1) А что в таком случае надо сделать?
3 Casey1984
 
07.10.15
17:20
Запихай результат запроса в таблицу значений, они и будет внешним источником данных
4 GreatOne
 
07.10.15
17:28
COMРезультатЗапроса = COMЗапрос.Execute().Unload();
.ЗначениеВФайл(КаталогВременныхФайлов() + "COMResult.tbs", COMРезультатЗапроса);
ТЗCOMЗапроса = ЗначениеИзФайла(КаталогВременныхФайлов() + "COMQueryResult.tbs");
5 GreatOne
 
07.10.15
17:28
ой

    COMРезультатЗапроса = COMЗапрос.Execute().Unload();
    ВнешнееСоединение.ЗначениеВФайл(КаталогВременныхФайлов() + "COMQueryResult.tbs", COMРезультатЗапроса);
    ТЗCOMЗапроса = ЗначениеИзФайла(КаталогВременныхФайлов() + "COMQueryResult.tbs");
2 + 2 = 3.9999999999999999999999999999999...