Интеграция с 1С 8.2 на C++ Builder


Интеграция с 1С 8.2 на C++ Builder

Подключение из программы на С++ Builder 6 к 1С 8.2 через COM-объект (V82.Application)

Возможности:

  1. Просмотр списка справочников 1С
  2. Просмотр реквизитов справочника с указанием типа данных
  3. Вывод данных справочника в Текстовый документ

Исходники прилагаются!

Добавлен бесплатный компонент VirtualTreeview.

По свойствам намного превосходит обычное дерево Treeview. 

На мой взгляд, самый функциональный компонент по работе с деревьями!

Пример подключения и получения списка справочников

TVirtualNode *Child;
TVirtualNode *Node;
TDateCatalog *dateCat;
TrVCatalogs->RootNodeCount=0;
TrVCatalogs->NodeDataSize=sizeof(TDateCatalog);
char *TempPath;
TempPath=GetDir();
Directory->Caption=TempPath;
if (Directory->Caption=="")return;
TPanel *Panel;
Panel=new TPanel(this);
Panel->Parent=this;
Panel->Color=TColor(0x00C6D3A9);
Panel->Caption="Идет подключение к 1С 8.2...";
Panel->Font->Size=16;
Panel->Font->Name="Arial";
Panel->Width=350;
Panel->Height=150;
Panel->Left=this->Width/2-Panel->Width/2;
Panel->Top=this->Height/2-Panel->Height;
Panel->Repaint();
Ole1C=CreateOleObject("V82.Application");
//Подключение к БД файлового варианта
ConnectLine="File="+Directory->Caption+"; "
"Usr="+CBoxName->Text+"; "
"Pwd="+EditPass->Text+"";
Ole1C.OleProcedure("Connect", ConnectLine.c_str());
if (VarIsEmpty(Ole1C)) {
   ShowMessage("Не удалось подключится!");
   return;
}
Catalogs=Ole1C.OlePropertyGet("Справочники");
String ss;
try{ss=Ole1C.OlePropertyGet("Метаданные").OlePropertyGet("Синоним");}
catch(...){}
Form1C->Caption="Интеграция с 1C: Предприятие 8.2 "+ss;
Meta_ole=Ole1C.OlePropertyGet("Метаданные").OlePropertyGet("Справочники");
int RecCount=Meta_ole.OleFunction("Количество");
for (int i=0;i<RecCount;i++){
   Variant ss=Meta_ole.OleFunction("Получить",i);
   Child=TrVCatalogs->AddChild(NULL,NULL);
   dateCat= (TDateCatalog*)TrVCatalogs->GetNodeData(Child);
   dateCat->name=ss.OlePropertyGet("Имя");
   dateCat->synonym=ss.OlePropertyGet("Синоним");
   dateCat->image=1;
}
TrVCatalogs->BeginUpdate();
TrVCatalogs->Header->AutoFitColumns(false,smaAllColumns,0,0);
TrVCatalogs->EndUpdate();
SizeTree();
delete Panel;


-