Builder + OLE + 1c Бухгалтерия
Или может ссылки по этим темам.
(Есть пример на Delphi, но при переводе на Builder 6 он не работает.)
Как в С++ Builder подключиться к 1С Бухгалтерии и проитать какие-то данные?
Или может ссылки по этим темам.
(Есть пример на Delphi, но при переводе на Builder 6 он не работает.)
А для чего тебе нужно потключиться если просто прочитать данные, то подключайся к бд....
А для чего тебе нужно потключиться если просто прочитать данные, то подключайся к бд....
ДА подключайся подключайся ежели драйвер такой найдеш! Затем разберись в структуре из полусотни таблиц итд... фигня это все... просто так к 1с не подцепишся, но можно через OLE ,как правильно задал вопрос автор, исходники для делфи лежат на hippo, там все показано что да как подключить и как получить.
Кстати я уже задавал аналогичный вопрос на этом форуме (OLE OLE OLE и 1С Предприятие) только касающийся создания внешник компонент для 1С, правда ответить мне никто не смог (или не хотел), так что разбираюсь сам.
Между прочим как вариант могу предложить вариант обмена данными через внешнюю компоненту, одна проблема, 1С в упор отказывается работать с OLE старше чем 1.0
ДА подключайся подключайся ежели драйвер такой найдеш! Затем разберись в структуре из полусотни таблиц итд... фигня это все... просто так к 1с не подцепишся, но можно через OLE ,как правильно задал вопрос автор, исходники для делфи лежат на hippo, там все показано что да как подключить и как получить.
Кстати я уже задавал аналогичный вопрос на этом форуме (OLE OLE OLE и 1С Предприятие) только касающийся создания внешник компонент для 1С, правда ответить мне никто не смог (или не хотел), так что разбираюсь сам.
Между прочим как вариант могу предложить вариант обмена данными через внешнюю компоненту, одна проблема, 1С в упор отказывается работать с OLE старше чем 1.0
Ole конечно модно но если знать что лежит в БД, то можно и без ole обойтись...
onesobj.initialise(...
Т.е. указывается путь к конфигурации, а также пароль и логин.Ну так вот, в Buildere метода initialise для объекта класса OleVariant нет.
Может, это уже делается по-другому?
Кстати, а что такое hippo?
Через BDE я уже пробовал подключаться, ничего не получается. В примере на Delphi есть код:
onesobj.initialise(...
Т.е. указывается путь к конфигурации, а также пароль и логин.Ну так вот, в Buildere метода initialise для объекта класса OleVariant нет.
Может, это уже делается по-другому?
Кстати, а что такое hippo?
1c.hippo.ru - сайт интересных разработок под 1С
А не получилось через BDE потому что 1С'овцы используют (скорее всего) модифицированный драйвер DBF.
Спасибо за ответы, уже разобрался сам.
ВЫложи исходники если не влом а то жуть как интересно....
Variant onesobj = CreateOleObject("V77.Application");
onesobj.Exec(Procedure("Initialize")<<onesobj.OlePropertyGet("rmtrade")<<"/DD:\\money /M /NПапа"<<"NO_SPLASH_SHOW");
Variant Sprav = onesobj.Exec(Function("CreateObject")<<"Справочник.Участники");
Sprav.OleProcedure("Selectgroup",1);
Sprav.OleProcedure("Selectitems",1);
int numr=1;
while (Sprav.OleFunction("GetItem",1)) {
StringGrid1->Cells[0][numr]=Sprav.Exec(Function("GetAttrib")<<"Код");
StringGrid1->Cells[1][numr]=Sprav.Exec(Function("GetAttrib")<<"Наименование");
numr++;
}
Выкидываю, банзайте на здоровье.
Variant onesobj = CreateOleObject("V77.Application");
onesobj.Exec(Procedure("Initialize")<<onesobj.OlePropertyGet("rmtrade")<<"/DD:\\money /M /NПапа"<<"NO_SPLASH_SHOW");
Variant Sprav = onesobj.Exec(Function("CreateObject")<<"Справочник.Участники");
Sprav.OleProcedure("Selectgroup",1);
Sprav.OleProcedure("Selectitems",1);
int numr=1;
while (Sprav.OleFunction("GetItem",1)) {
StringGrid1->Cells[0][numr]=Sprav.Exec(Function("GetAttrib")<<"Код");
StringGrid1->Cells[1][numr]=Sprav.Exec(Function("GetAttrib")<<"Наименование");
numr++;
}
Спасибо!
Вот как это делал я:
Variant Ole1C, rmTrade;
HResult s1cResult;
LPUNKNOWN pIUnknown = NULL;
char *IntializationLine = "/DC:\\Base1";
s1cResult = GetActiveObject(ProgIDToClassID("V77.Application"), NULL, &pIUnknown);
if ( s1cResult == MK_E_UNAVAILABLE ) {
Ole1C = CreateOleObject("V77.Application");
} else {
Ole1C = GetActiveOleObject("V77.Application");
}
rmTrade = Ole1C.OlePropertyGet("RMTrade");
/* Start OLE Automation ... */
Ole1C.OleProcedure("Initialize", rmTrade, IntializationLine,"NO_SPLASH_SHOW");
IntializationLine = "СоздатьОбъект(\"Справочник.Товары\")";
Variant Buh1 = Ole1C.OleFunction("EvalExpr", IntializationLine);
k = 1;
Form1->StringGrid1->Visible = false;
if (Buh1.OleFunction("ВыбратьЭлементы")==1) {
while (Buh1.OleFunction("ПолучитьЭлемент") == 1) {
StringGrid1->Cells[1][k] = Buh1.OlePropertyGet("Наименование");
StringGrid1->Cells[0][k] = Buh1.OlePropertyGet("Код");
StringGrid1->Cells[2][k] = Buh1.OlePropertyGet("ШтрихКод");
k++;
}
}
Form1->StringGrid1->RowCount = k;
Form1->StringGrid1->Visible = true;
думаю суть понятна, далее немного знаний 1с Конфигуратора и вперед, рубить дрова. ;)