QString value = row->dynamicCall("ФИОплательщика").toString(); // исксепшн: такого кракосябры свойтсва нету$value = $row->ФИОплательщика; // всё работает ок// при этом запись загружена, падает именно свойствоbool ok = row->dynamicCall("Next()").toBool(); // == true
#include <QTextCodec>#include <QtGui/QApplication> #include <ActiveQt/QAxObject>#include <iostream>#include "dumper.h"/* * Содержимое dumper.h *#include <QtCore/QObject>class Dumper : public QObject{ Q_OBJECTpublic slots: void print(int, QString, QString, QString);}; */#define str QString#define axo QAxObjectvoid Dumper::print(int code, str s1, str s2, str s3){ std::cout << "1с ошибка: " << s2.toUtf8().constData() << std::endl;}void exposeErr(QObject* cry){ Dumper ex; QObject::connect ( cry , SIGNAL(exception(int, QString, QString, QString)) , &ex , SLOT(print(int, QString, QString, QString)) );}int main(int argc, char *argv[]){ // QCoreApplication не поддерживает com-инициализацию QApplication app(argc, argv); QTextCodec* utf8 = QTextCodec::codecForName("utf8"); QTextCodec* cp1251 = QTextCodec::codecForName("cp1251"); QTextCodec* cp866 = QTextCodec::codecForName("cp866"); QTextCodec::setCodecForCStrings(utf8); axo v81("V81.COMConnector"); exposeErr(&v81); axo* serv = v81.querySubObject("Connect(QString)", str("File=C:/Temp/1cГлав")); if (serv) std::cout << "Соединение есть" << "\n"; exposeErr(serv); axo* qry = serv->querySubObject("NewObject(QString)", str("Запрос")); qry->dynamicCall("Text", str("ВЫБРАТЬ * ИЗ Справочник.Договоры")); axo* res = qry->querySubObject("Execute()"); axo* row = res->querySubObject("Choose()"); exposeErr(row); bool ok = row->dynamicCall("Next()").toBool(); std::cout << "выбран ли ряд: " << ok << std::endl; // результат: 1 // вот в этом месте вылетает ошибка // причем ошибка не 1с, иначе она перехватилась // бы через дампер, а ошибка QAxBase str fio = row->dynamicCall("ФИОплательщика").toString(); return 0;}
> test.exe > txt.txt 2>&1
> php com.php > php-dump.txt 2>&1
<?echo "Привет, начнем работу..."."\n";$v8 = new COM("V81.COMConnector", NULL, CP_UTF8) or die("no-connection");$serv = $v8->Connect("File=C:/Temp/1cГлав;");$qry = $serv->NewObject("Запрос");$qry->Text = "ВЫБРАТЬ * ИЗ Справочник.Договоры";$res = $qry->Execute();$row = $res->Choose();$ok = $row->Next();// var_dump($row); // нельзя - падаетecho "<br>".$row->ФИОплательщика."<br>"; // результат: Петрова?>
C++ (Qt)str fio = row->dynamicCall(QObject::trUtf8("ФИОплательщика")).toString();
const char* cp1251form = cp1251->fromUnicode(str("ФИОплательщика"));str fio = row->dynamicCall(cp1251form).toString();