|
Провести документ из C++ |
☑ |
0
The_Immortal
25.01.14
✎
01:54
|
Всех приветствую!
Друзья, быть может, кто-нибудь работал с 1С из C++ Builder'а?
Необходимо провести документ, соединившись через COM.
Максимально упростил код:
Variant v8, con;
String path = "File=\"C:\\InfoBase1\"";
v8 = CreateOleObject("V82.COMConnector");
con = v8.OleFunction("Connect",WideString(path));
Variant doc = con.OlePropertyGet("Документы").OlePropertyGet("ПоступлениеДенег").OleFunction("СоздатьДокумент");
doc.OlePropertySet("Дата", Now());
doc.OleFunction("Записать");
Не могу понять каким образом впихнуть параметр "РежимЗаписиДокумента.Проведение" в OleFunction, чтобы выполнить "Записать(РежимЗаписиДокумента.Проведение)".
Подскажите, пожалуйста.
Спасибо!
|
|
1
kokamoonga
25.01.14
✎
02:38
|
(0) А по аналогии с этим не работает?
con.OlePropertyGet("Документы").OlePropertyGet("ПоступлениеДенег").OleFunction("СоздатьДокумент");
Что-то вроде:
param = con.OlePropertyGet("РежимЗаписиДокумента").OlePropertyGet("Проведение")
doc.OleFunction("Записать", param);
Вроде бы логика подсказывает, что как-то так должно быть.
|
|
2
kokamoonga
25.01.14
✎
02:43
|
И кстати, разве через точку это нельзя писать? Или есть какие-то соображения почему нужно использовать именно геттеры? Это не холивара ради, интересно.
Я имею в виду например:
con.Документы.ПоступлениеДенег.СоздатьДокумент()
вместо:
con.OlePropertyGet("Документы").OlePropertyGet("ПоступлениеДенег").OleFunction("СоздатьДокумент");
Вроде бы в документации описан именно такой вариант работы.
|
|
3
The_Immortal
25.01.14
✎
03:01
|
(1) Так я пробовал, но увы, получаю на это "Неизвестное имя".
И действительно, такого объекта как "РежимЗаписиДокумента" в 1С нету. Это тип... Как привестись к этому типу - не могу понять :(
(2) На "con.Документы.ПоступлениеДенег.СоздатьДокумент()" получаю ошибку:
'Документы' is not a member of 'Variant' - что вполне логично.
|
|
4
kokamoonga
25.01.14
✎
03:13
|
(3) Какой же это тип, если это системное перечисление? :)
По идее оно должно быть доступно для объекта con
|
|
5
The_Immortal
25.01.14
✎
03:21
|
(4) Очень сильно ступил.
Ошибся в синтаксисе...
Большое Вам спасибо!
|
|
6
kokamoonga
25.01.14
✎
03:24
|
(5) Не за что:) Просто угадал
|
|