| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 1C: Предприятие, SAP, ERP и учётные системы > Доступ через v81.Application |
| Автор: TongerenS 13.10.2009, 09:48 |
| Добрый день! Хотелось бы спросить у знающих такой вопрос. Пишу в Builder C++, подключение к 1С 8.1. Есть такой код: Variant Ole1C=CreateOleObject("v81.Application"); //Подключение к версии 8.1 AnsiString ConnectLine="File=D:\\1CM; Usr="+Form1->Edit1->Text+"; Pwd="+Form1->Edit2->Text+""; Ole1C.OleProcedure("Connect", ConnectLine.c_str()); Variant unDoc = Ole1C.OlePropertyGet("Документы").OlePropertyGet("Товар").OleFunction("НайтиПоРеквизиту", "Организация", NameOrg); Отобранный по реквизиту документ Товар содержит в себе табличную часть "ТаблицаМатериалов". Как перебрать данные этой таблицы из С++? Если можно подскажите пожалуйста, что-то не выходит у меня. |
| Автор: Itsys 13.10.2009, 11:09 | ||||
| На C++ не писал никогда, но к табличной части можно обратиться через точку. так
или так:
|
| Автор: TongerenS 13.10.2009, 11:25 |
| Через точку не выйдет в С++ Variant Ole1C=CreateOleObject("v81.Application"); //Подключение к версии 8.1 AnsiString ConnectLine="File=D:\\1CM; Usr="+Form1->Edit1->Text+"; Pwd="+Form1->Edit2->Text+""; Ole1C.OleProcedure("Connect", ConnectLine.c_str()); Variant unDoc = Ole1C.OlePropertyGet("Документы").OlePropertyGet("Товар").OleFunction("НайтиПоРеквизиту", "Организация", NameOrg); Variant ooo = unDoc.OleFunction("ПолучитьОбъект"); Variant kolvo = ooo.OlePropertyGet("ТаблицаТоваров").OleFunction("Количество"); int i; for (i = 1; i < kolvo; i++) { // Как в этом месте отображать например на экране значение колонки таблицы Наименование? // Должно быть по аналогии С 1С-овским диалектом т.е. Сообщить (ооо.ТаблицаТоваров[м].Наименование); // только через OlePropertyGet в подключении OLE // } |