С Новым годом! Форум программистов, компьютерный форум, киберфорум
1С: Администрирование и интеграция
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.58/100: Рейтинг темы: голосов - 100, средняя оценка - 4.58
3 / 3 / 0
Регистрация: 14.05.2013
Сообщений: 29

V82.COMConnector правильно получить NewObject из Справочники

25.07.2013, 06:13. Показов 19340. Ответов 52
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
С 1С совсем не работал, но очень хочется получить из неё данные .
В общем, с начало всё рождалось здесь:
Qt + COM (ActiveX) = Властелин упрвления сервером 1С предприятия
Qt определение вывода ошибок в определенной кодировке (для русского текста)

Сейчас уже вопрос наверно не кутистам, а к 1сникам.
Подскажите пожалуйста, как правильно выбрать всех пользователей из справочника?
Например, захожу в конфигуратор - открыть конфигурацию
Слева есть список объектов и всего всего, есть пункт Справочники - Пользователи
Как правильно сделать NewObject чтобы получить ссылку на этих пользователей?
C++
1
2
3
    QAxObject * ax = new QAxObject("V82.COMConnector");
    QAxObject * ac = ax->querySubObject("Connect(\"Srvr=\"172.0.0.100\";Ref=\"base1\";Usr=\"1C-Bot\";Pwd=\"56q\";\")");
    QAxObject * ab = ac->querySubObject("NewObject",QAxObject::tr("Справочники.Пользователи;"));
но в ответ ругается
C++
1
2
3
4
5
6
7
QAxBase: Error calling IDispatch member NewObject: Exception thrown by server
             Code       : 1001
             Source     : 1C:Enterprise 8.2.15.319
             Description: ??? ?? ????????? '???????????.????????????;'
             Help       :
         Connect to the exception(int,QString,QString,QString) signal to catch t
his exception
По коду 1001 я понял, что это отсутствие данного метода, собственно поэтому и ошибка Error calling IDispatch member NewObject что никакой указатель не вернулся.
Но если сделать
C++
1
QAxObject * ab = ac->querySubObject("NewObject",QAxObject::tr("Справочники;"));
То какая то другая ошибка будет (кодировку не могу победить, извините), не 1001, т.е. как бы существует Справочники, но что-то не то вызываю.

Вопрос - как правильно сделать соединитель на Справочники.Пользователи и потом через метод String выбрать всех пользователей?
зы И ещё, если кто знает, подскажите пожалуйста, где можно посмотреть подробные логи действий на 1С сервере, ведь ошибка которая мне вопросиками отдается, должна же она где то на сервере храниться?!
1
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.07.2013, 06:13
Ответы с готовыми решениями:

PowerShell и V82.COMConnector
Добрый день! Задача следующая: Необходимо создать com-object 1С и вытащить запросом кое-какие данные Проблема заключается в том,...

Visual Studio Express 2012 C++ подключение к 1С V82.COMConnector (COM) объекту
Хочу подключиться через com зарегистрированную библиотеку к 1С серверу. С VS совсем не работал ... В Qt есть такой пакет ActiveQT: ...

COM соединение ошибка объектного типа (NewObject)
В общем подключаюсь к внешней базе через функцию, объявив глобальную переменную для COM объекта, что бы дальше пользоваться в запросах: ...

52
3 / 3 / 0
Регистрация: 14.05.2013
Сообщений: 29
06.08.2013, 06:21  [ТС]
Студворк — интернет-сервис помощи студентам
SonicQ
Прошу прощения, запутался в темах, я на других ресурсах опыты свои показывал, но блин на киберфоруме монархия и ссыли ставить нельзя, тогда опишу примеры ещё раз:

1. Опыт.
Кодировка main.cpp в windows-1251
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <QCoreApplication>
#include <oleauto.h>
#include <ActiveQt/QAxObject>
#include <QAxBase>
#include <QDebug>
#include <QTextCodec>
#include <QString>
#include <QByteArray>
 
QByteArray toCp1251(QString data)
{
   return QTextCodec::codecForName("windows-1251")->fromUnicode(data);
}
 
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    ::OleInitialize(0);
 
    qDebug() << "текст2";
 
    QAxObject * ax = new QAxObject("V82.COMConnector");
    QAxObject * ac = ax->querySubObject("Connect(\"Srvr=\"172.0.0.100\";Ref=\"base1\";Usr=\"1C-Bot\";Pwd=\"56q\";\")");
 
    QAxObject * ab = ac->querySubObject("Справочники");
 
    delete ax;
 
    qDebug() << "end";
    return a.exec();
}
результат
C++
1
2
3
4
oaeno2
QAxBase::dynamicCallHelper: ???????????: No such property in  [unknown]
        Candidates are:
end
2. Опыт.
Кодировка main.cpp в windows-1251
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <QCoreApplication>
#include <oleauto.h>
#include <ActiveQt/QAxObject>
#include <QAxBase>
#include <QDebug>
#include <QTextCodec>
#include <QString>
#include <QByteArray>
 
QByteArray toCp1251(QString data)
{
   return QTextCodec::codecForName("windows-1251")->fromUnicode(data);
}
 
int main(int argc, char *argv[])
{
    QTextCodec::setCodecForTr(QTextCodec::codecForName("windows-1251"));
    QTextCodec::setCodecForLocale(QTextCodec::codecForName("windows-1251"));
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("windows-1251"));
    qDebug() << "Link_Code ->" << QTextCodec::codecForName("windows-1251");
 
    QCoreApplication a(argc, argv);
    ::OleInitialize(0);
 
    qDebug() << "текст2";
 
    QAxObject * ax = new QAxObject("V82.COMConnector");
    QAxObject * ac = ax->querySubObject("Connect(\"Srvr=\"172.0.0.100\";Ref=\"base1\";Usr=\"1C-Bot\";Pwd=\"56q\";\")");
 
    QAxObject * ab = ac->querySubObject("Справочники");
 
    delete ax;
 
    qDebug() << "end";
    return a.exec();
}
Результат
C++
1
2
3
4
5
Link_Code -> 0xcb5d940
ЄхъёЄ2
QAxBase::dynamicCallHelper: ???????????: No such property in  [unknown]
        Candidates are:
end
3. Опыт.
Кодировка main.cpp в windows-1251
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <QCoreApplication>
#include <oleauto.h>
#include <ActiveQt/QAxObject>
#include <QAxBase>
#include <QDebug>
#include <QTextCodec>
#include <QString>
#include <QByteArray>
 
QByteArray toCp1251(QString data)
{
   return QTextCodec::codecForName("windows-1251")->fromUnicode(data);
}
 
int main(int argc, char *argv[])
{
    setlocale(LC_ALL, "Russian");
 
    QTextCodec::setCodecForTr(QTextCodec::codecForName("windows-1251"));
    QTextCodec::setCodecForLocale(QTextCodec::codecForName("windows-1251"));
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("windows-1251"));
    qDebug() << "Link_Code ->" << QTextCodec::codecForName("windows-1251");
 
    QCoreApplication a(argc, argv);
    ::OleInitialize(0);
 
    qDebug() << "текст2";
 
    QAxObject * ax = new QAxObject("V82.COMConnector");
    QAxObject * ac = ax->querySubObject("Connect(\"Srvr=\"172.0.0.100\";Ref=\"base1\";Usr=\"1C-Bot\";Pwd=\"56q\";\")");
 
    QAxObject * ab = ac->querySubObject("Справочники");
 
    delete ax;
 
    qDebug() << "end";
    return a.exec();
}
Результат
C++
1
2
3
4
5
Link_Code -> 0xcb1dad8
текст2
QAxBase::dynamicCallHelper: ???????????: No such property in  [unknown]
        Candidates are:
end
4. Опыт.
Кодировка main.cpp в UTF-8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <QCoreApplication>
#include <oleauto.h>
#include <ActiveQt/QAxObject>
#include <QAxBase>
#include <QDebug>
#include <QTextCodec>
#include <QString>
#include <QByteArray>
 
QByteArray toCp1251(QString data)
{
   return QTextCodec::codecForName("windows-1251")->fromUnicode(data);
}
 
int main(int argc, char *argv[])
{
    setlocale(LC_ALL, "Russian");
 
    QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
    qDebug() << "Link_Code ->" << QTextCodec::codecForName("UTF-8");
 
    QCoreApplication a(argc, argv);
    ::OleInitialize(0);
 
    qDebug() << "текст2";
 
    QAxObject * ax = new QAxObject("V82.COMConnector");
    QAxObject * ac = ax->querySubObject("Connect(\"Srvr=\"172.0.0.100\";Ref=\"base1\";Usr=\"1C-Bot\";Pwd=\"56q\";\")");
 
    QAxObject * ab = ac->querySubObject("Справочники");
 
    delete ax;
 
    qDebug() << "end";
    return a.exec();
}
Результат
C++
1
2
3
4
5
Link_Code -> 0xaf58aa8
текст2
QAxBase::dynamicCallHelper: Справочники: No such property in  [unknown]
        Candidates are:
end
5. Опыт.
Кодировка main.cpp в UTF-8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <QCoreApplication>
#include <oleauto.h>
#include <ActiveQt/QAxObject>
#include <QAxBase>
#include <QDebug>
#include <QTextCodec>
#include <QString>
#include <QByteArray>
 
QByteArray toCp1251(QString data)
{
   return QTextCodec::codecForName("windows-1251")->fromUnicode(data);
}
 
int main(int argc, char *argv[])
{
    setlocale(LC_ALL, "Russian");
 
    QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
    qDebug() << "Link_Code ->" << QTextCodec::codecForName("UTF-8");
 
    QCoreApplication a(argc, argv);
    ::OleInitialize(0);
 
    qDebug() << "текст2";
 
    QAxObject * ax = new QAxObject("V82.COMConnector");
    QAxObject * ac = ax->querySubObject("Connect(\"Srvr=\"172.0.0.100\";Ref=\"base1\";Usr=\"1C-Bot\";Pwd=\"56q\";\")");
 
    QAxObject * ab = ac->querySubObject(toCp1251(QString("Справочники")).data());
 
    delete ax;
 
    qDebug() << "end";
    return a.exec();
}
Результат
C++
1
2
3
4
5
Link_Code -> 0xae68aa8
текст2
QAxBase::dynamicCallHelper: ???????????: No such property in  [unknown]
        Candidates are:
end
6. Опыт. //показывает, что функция по перегону данных из юникода в кодировку и возврат char* корректна
Кодировка main.cpp в UTF-8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <QCoreApplication>
#include <oleauto.h>
#include <ActiveQt/QAxObject>
#include <QAxBase>
#include <QDebug>
#include <QTextCodec>
#include <QString>
#include <QByteArray>
 
QByteArray toCp1251(QString data)
{
   return QTextCodec::codecForName("windows-1251")->fromUnicode(data);
}
 
int main(int argc, char *argv[])
{
    setlocale(LC_ALL, "Russian");
 
    QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
    qDebug() << "Link_Code ->" << QTextCodec::codecForName("UTF-8");
 
    QCoreApplication a(argc, argv);
    ::OleInitialize(0);
 
    qDebug() << "текст2";
 
    QAxObject * ax = new QAxObject("V82.COMConnector");
    QAxObject * ac = ax->querySubObject("Connect(\"Srvr=\"172.0.0.100\";Ref=\"base1\";Usr=\"1C-Bot\";Pwd=\"56q\";\")");
 
    QAxObject * ab = ac->querySubObject(toCp1251(QString("Catalogs")).data());
 
    delete ax;
 
    qDebug() << "end";
    return a.exec();
}
Результат
C++
1
2
3
Link_Code -> 0x3b8aa8
текст2
end
Ошибок нет, коннект произошёл используя английские аналоги имен методов (но бляха не все методы в конфигураторе имеют латинские аналоги!!!)

Добавлено через 3 минуты
Использую кьют 4.8, т.к. в 5м вырезали поддержку windows-1251 и все исходники только в UTF-8, ну и в 5м часть функций в QTextCodec отсутствует.

Добавлено через 11 минут
КСТАТИ!!!
Возникла идея, - а может кто-нибудь из 1Сников выложить коды символов в 1С?
Например в C++ можно так
C++
1
2
3
4
5
6
char * my = "Справочники";
    int i = 0;
    while (i<11) {
        qDebug() << (int(my[i]));
        i++;
    }
То будут коды символов
C++
1
2
3
4
5
6
7
8
9
10
11
-48
-95
-48
-65
-47
-128
-48
-80
-48
-78
-48
В 1С можно так-же сделать? (с программированием в 1С сам вообще не работал)

Добавлено через 7 минут
Прошу прощения, вот так вернее будет
C++
1
2
3
4
5
6
unsigned char * my = (unsigned char *)"Справочники";
    int i = 0;
    while (i<11) {
        qDebug() << ((int)(my[i]));
        i++;
    }
C++
1
2
3
4
5
6
7
8
9
10
11
208
161
208
191
209
128
208
176
208
178
208
1
1 / 1 / 0
Регистрация: 22.04.2014
Сообщений: 42
15.09.2014, 17:16
Столкнулся с похожей задачей: нужно из базы 1с стащить данные но что то не получается. Может кто подскажет в чем косяк?

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
QVariantList date;
    axo v82("V82.COMConnector");
    axo* serv = v82.querySubObject("Connect(QString)", str(tr("File=C:/Users/kosyachok/Documents/AgroSoft/DemoBuhSh;Usr=kosyachok;Pwd=123456")));
    if (serv) qDebug() << "Connect";
    else qDebug()<<"No connect!";
    
    axo* qry = serv->querySubObject("NewObject(QString)", str(tr("Запрос")));
    qry->dynamicCall("Text", str(tr("ВЫБРАТЬ ВидТехники ИЗ Справочник.схМаркаСельхозТехники")));
    axo* res=qry->querySubObject("Execute()");
    axo* row=res->querySubObject("Choose()");
        qDebug()<<row->dynamicCall("Count()");
    date<<row->dynamicCall("get(int)",0);
    qDebug()<<date.count()<<"      "<<date.at(0);

в 1с запрос отрабатывает.
а получаю:
Миниатюры
V82.COMConnector правильно получить NewObject из Справочники  
0
340 / 315 / 43
Регистрация: 20.08.2014
Сообщений: 1,242
Записей в блоге: 1
15.09.2014, 18:17
Это мое скромное мнение. но возможно поможет.
kosyachok90, RecordSet в помощь и передвигание курсора в нём.
Посмотрите, как из 1с работают с внешними соединениями, аналогично обстоит (насколько помню) и работа с 1с
http://mudritskiy.blogspot.ru/2013/05/1-adodb.html
1
Модератор
Эксперт 1С
 Аватар для Dethmontt
4032 / 2977 / 594
Регистрация: 10.03.2011
Сообщений: 11,703
Записей в блоге: 1
16.09.2014, 01:06
Цитата Сообщение от _KUL Посмотреть сообщение
Возникла идея, - а может кто-нибудь из 1Сников выложить коды символов в 1С?
1C
1
2
3
4
текст = "Справочники";
    Для й=1 По СтрДлина(текст) Цикл
        Сообщить(КодСимвола(Сред(текст,й,1)));
    КонецЦикла;

Цитата Сообщение от kosyachok90 Посмотреть сообщение
qry->dynamicCall("Text", str(tr("ВЫБРАТЬ ВидТехники ИЗ Справочник.схМаркаСельхозТехники")));
* * axo* res=qry->querySubObject("Execute()");
* * axo* row=res->querySubObject("Choose()");
* * * * qDebug()<<row->dynamicCall("Count()");
* * date<<row->dynamicCall("get(int)",0);
* * qDebug()<<date.count()<<" * * *"<<date.at(0);
Курсор нужно переставлять методом next()

C++ (Qt)
1
2
3
4
5
6
7
qry->dynamicCall("Text", str(tr("ВЫБРАТЬ ВидТехники as nameColumn ИЗ Справочник.схМаркаСельхозТехники")));
 
 
 
qDebug()<<row->dynamicCall("next()");
value<<row->dynamicCall("nameColumn");
qDebug()<<DescriptionName<<value->dynamicCall("Description");
1
1 / 1 / 0
Регистрация: 22.04.2014
Сообщений: 42
16.09.2014, 09:58
C++ (Qt)
1
2
3
row->dynamicCall("Next()");
axo* values=row->querySubObject("tech");
date<<values->dynamicCall("Description");
ругается на Description: нет такого свойства. Да и в синтакс-помощнике ничего не нашел
0
340 / 315 / 43
Регистрация: 20.08.2014
Сообщений: 1,242
Записей в блоге: 1
16.09.2014, 11:02
Цитата Сообщение от kosyachok90 Посмотреть сообщение
ругается на Description
- это Наименование
1
1 / 1 / 0
Регистрация: 22.04.2014
Сообщений: 42
16.09.2014, 11:10
1c-k, что-то я сильно сильно туплю.
Наименование чего?
0
340 / 315 / 43
Регистрация: 20.08.2014
Сообщений: 1,242
Записей в блоге: 1
16.09.2014, 11:12
kosyachok90, поле называет Наименование.
Чего угодно, справочника, плана видов характеристик и так далее.
Он же в запросе в перемешку и англоязычные, и рускоязыные наименования возвращает?
1
 Аватар для duk337
2956 / 1768 / 84
Регистрация: 03.11.2011
Сообщений: 8,280
16.09.2014, 12:14
Цитата Сообщение от kosyachok90 Посмотреть сообщение
values=row->querySubObject("tech")
а любопытно, что в values. Вряд ли
Цитата Сообщение от 1c-k Посмотреть сообщение
справочника, плана видов характеристик и так далее.
1
1 / 1 / 0
Регистрация: 22.04.2014
Сообщений: 42
16.09.2014, 12:19
Чет я запутался.

C++ (Qt)
1
2
3
4
5
axo* res=qry->querySubObject("Execute()");
    axo* row=res->querySubObject("Choose()");
    
    row->dynamicCall("Next()");
    qDebug()<<row->dynamicCall("view");//разве не выведет 1-й элемент выборки?

Ну к примеру QVariant(QString,"Трактор")
0
340 / 315 / 43
Регистрация: 20.08.2014
Сообщений: 1,242
Записей в блоге: 1
16.09.2014, 12:23
Цитата Сообщение от duk337 Посмотреть сообщение
а любопытно, что в values. Вряд ли
по идее массив данных значений колонки tech.

Добавлено через 2 минуты
kosyachok90, по моему надо курсор на начало установить в принудиловку. Если мне не изменяет память.
1
1 / 1 / 0
Регистрация: 22.04.2014
Сообщений: 42
16.09.2014, 12:30
1с-k, а разве Next() не ставит курсор на 1 элемент выборки(просто так в доках по 1с написано)?
И если не ставит - то как установить курсор на начало (метод какой то ведь должен быть).
0
340 / 315 / 43
Регистрация: 20.08.2014
Сообщений: 1,242
Записей в блоге: 1
16.09.2014, 12:37
kosyachok90, MoveFirst(), MoveLast(), MoveNext(), MovePrevious() из ADODB взял. Есть еще EOF и BOF.
Обычно пишут:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
'Выполняем запрос
Set objRecordset = objConn.Execute("SELECT name, filename FROM sysdatabases")
'Перебираем результаты запроса
While Not objRecordset.EOF
    strRes = vbNullString
    For i=0 To objRecordset.Fields.Count-1
        strRes = strRes & CStr(objRecordset.Fields(i).Value) & vbTab
    Next
    WScript.Echo Trim(strRes)
    objRecordset.MoveNext
Wend
'Закрываем соединение
objConn.Close
Set objConn = Nothing
Set objRecordset = Nothing
0
Модератор
Эксперт 1С
 Аватар для Dethmontt
4032 / 2977 / 594
Регистрация: 10.03.2011
Сообщений: 11,703
Записей в блоге: 1
16.09.2014, 13:50
Цитата Сообщение от kosyachok90 Посмотреть сообщение
row->dynamicCall("Next()");
Да. Ставит курсор на первый элемент выборки.

Цитата Сообщение от kosyachok90 Посмотреть сообщение
qDebug()<<row->dynamicCall("view");//разве не выведет 1-й элемент выборки?
Должен вернуть значение свойства view (поле "view" должно быть выбрано в запросе)

Добавлено через 5 минут
C++ (Qt)
1
2
axo* values
qDebug()<<values->Description;
А разве так обращаться к свойствам из Qt нельзя?

Добавлено через 2 минуты
1c-k, если база файловая, через ADO к ней не подцепиться... Только OLE вариант
1
340 / 315 / 43
Регистрация: 20.08.2014
Сообщений: 1,242
Записей в блоге: 1
16.09.2014, 13:53
Dethmontt, пускай оле, что мешает recordset пользовать?
я вот к чему, неважно как зацепился к базе, принцип работы с recordSet останется тот же. Может быть видоизменятся команды для перебора RecordSet.
0
Модератор
Эксперт 1С
 Аватар для Dethmontt
4032 / 2977 / 594
Регистрация: 10.03.2011
Сообщений: 11,703
Записей в блоге: 1
16.09.2014, 14:04
Recordset Object это объект драйвера ADO

Т.к. ADO не умеет работать с файловой БД 1С

использовать объект Recordset не получиться.
т.е. методы MoveFirst(), MoveLast(), MoveNext(), MovePrevious() будут недоступны

в итоге: есть возможность использовать только 1С-овский рекордСет (Выборка) с методами Next() и т.д.

Добавлено через 3 минуты
1c-k, если есть примеры\материалы\литература работы с файловой БД через ADO с удовольствием почитаю
0
1 / 1 / 0
Регистрация: 22.04.2014
Сообщений: 42
16.09.2014, 14:06
Dethmontt, так не хотеть.

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#define str QString
#define axo QAxObject
 
MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    
    //QVariantList date;
    axo v82("V82.COMConnector");
    axo* serv = v82.querySubObject("Connect(QString)", str(tr("File=C:/Users/kosyachok/Documents/AgroSoft/DemoBuhSh;Usr=kosyachok;Pwd=123456")));
    if (serv) qDebug() << "Connect";
    else qDebug()<<"No connect!";
    
    axo* qry = serv->querySubObject("NewObject(QString)", str(tr("Запрос")));
    qry->dynamicCall("Text", str(tr("ВЫБРАТЬ ВидТехники as view ИЗ Справочник.схМаркаСельхозТехники")));
    axo* res=qry->querySubObject("Execute()");
    axo* row=res->querySubObject("Choose()");
    for(int i = 0; i < row->dynamicCall("Count()").toInt(); i++){
        if(row->dynamicCall("Next()").toBool())
            qDebug()<<row->dynamicCall("view");
    }
}
Вот вся прога. Запрос в 1С отрабатывает, а в результате запуска получаю пустоту.
Миниатюры
V82.COMConnector правильно получить NewObject из Справочники   V82.COMConnector правильно получить NewObject из Справочники  
0
Модератор
Эксперт 1С
 Аватар для Dethmontt
4032 / 2977 / 594
Регистрация: 10.03.2011
Сообщений: 11,703
Записей в блоге: 1
16.09.2014, 14:13
Цитата Сообщение от kosyachok90 Посмотреть сообщение
row->dynamicCall("Next()").toBool()
Лучше цикл While на эту запись построить, проще читать...


А если запрос видоизменить? Вот так:
1C
1
"ВЫБРАТЬ ВидТехники.Наименование as view ИЗ Справочник.схМаркаСельхозТехники"
Добавлено через 1 минуту
kosyachok90, Посмотри в конфигураторе 1С тип поля ВидТехники ??? (в палитре свойств реквизита)
1
340 / 315 / 43
Регистрация: 20.08.2014
Сообщений: 1,242
Записей в блоге: 1
16.09.2014, 14:15
Dethmontt, обшибси, память.
0
Модератор
Эксперт 1С
 Аватар для Dethmontt
4032 / 2977 / 594
Регистрация: 10.03.2011
Сообщений: 11,703
Записей в блоге: 1
16.09.2014, 14:19
1c-k, просто у 1С файловая БД в закрытом формате (в отличии от SQL, DB и т.д.)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.09.2014, 14:19
Помогаю со студенческими работами здесь

COMConnector к УТ11
Привет. хочу законектится к УТ 11(8.3 sql) из УТ 10.3(8.2) через &quot;V83.COMConnector&quot;, но приложение просто вылетает, однако через...

1C 8.3 COMConnector Исключение при подключении [C#]
Доброго времени суток. Надеюсь по адресу обращаюсь. Не могу никак заставить работать программу. На форме 1 кнопка. Текст клика: ...

Comcntr.dll, V83.COMConnector
Здравствуйте, не подскажете где можно взять документацию по comcntr.dll? Или подскажите по ошибке. Платформа 8.3.11. Ошибка на строке 12 -...

Нарушение Прав Доступа! Comconnector
Имеется чистая файловая конфигурация УТ 8.3.5.1098. Подключаюсь с помощью COM объекта, успешно создаю и провожу &quot;ЗаказКлиента&quot;....

Подключение к серверной базе 1С используя ComConnector
Добрый день. Имеется на корпоративном сервере база 1С, на компьютере 1С - нет. Необходимо написать программу, которая будет подключаться...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru