Здравствуйте, abdula, Вы писали:
S>> Соди на http://www.gotdotnet.ru/ там есть пример.
A>это не то
A>запускаеться мой *.exe, он лезет в 1С и грузит себе все необходимое из нее, после небольшой обработки, выгружаем в 1С.
A>в данном случае юзеру не нать запускать 1С.
Посмотри v77websrv или я тебе ее скину. Честно не промню где взял. Но принцип обычный, на рефлексии.
lateBoundType=Type.GetTypeFromProgID("v77S.Application");
v77=Activator.CreateInstance(lateBoundType);
arg[0]=lateBoundType.InvokeMember("RMTrade",BindingFlags.Public | BindingFlags.InvokeMethod | BindingFlags.Static,null,v77,null);
arg[1]=@"/D"+v77base+" /N"+user+" /P"+password;
arg[2]="NO_SPLASH_SHOW";
lateBoundType.InvokeMember("Initialize", BindingFlags.Public | BindingFlags.InvokeMethod | BindingFlags.Static, null, v77,arg);
object[] arg2=new object[]{@""+v77object};
object getv77object=lateBoundType.InvokeMember("CreateObject", BindingFlags.Public | BindingFlags.InvokeMethod | BindingFlags.Static, null,v77, arg2);
getv77object.GetType().InvokeMember("ВыбратьЭлементы", BindingFlags.Public | BindingFlags.InvokeMethod | BindingFlags.Static, null, getv77object,null);
while(((double)getv77object.GetType().InvokeMember("ПолучитьЭлемент", BindingFlags.Public | BindingFlags.InvokeMethod | BindingFlags.Static, null, getv77object,null))==1)
{
myDataRow = myDataTable.NewRow();
for (int i=0; i<param.Length; i++)
{
myDataRow[(param[i].ToString())]=getv77object.GetType().InvokeMember((param[i].ToString()), BindingFlags.GetProperty, null,getv77object,null);
}
myDataTable.Rows.Add(myDataRow);
}
Marshal.ReleaseComObject(getv77object);
Marshal.ReleaseComObject(v77);
return myDataSet;
}