Для того чтоб запустить внешнюю обработку на семерке надо:
object v77 = null;
object retVal = null;
try
{
string BaseCatalog,
User = "",
Pass = "";
object[] arg = new object[3];
Type lateBoundType = Type.GetTypeFromProgID("v77.Application", true);
v77 = Activator.CreateInstance(lateBoundType);
arg[0] = lateBoundType.InvokeMember("RMTrade", BindingFlags.Public | BindingFlags.InvokeMethod | BindingFlags.Static, null, v77, null);
arg[1] = @"/D" + "D:\\Work\\База 1С" + " /N" + User + " /P" + Pass;
arg[2] = "NO_SPLASH_SHOW";
lateBoundType.InvokeMember("Initialize", BindingFlags.Public | BindingFlags.InvokeMethod | BindingFlags.Static, null, v77, arg);
object[] arg1 = new object[] { "ОткрытьФорму(\"Обработка\", ,\"C:\\Parts\\СоздатьЗаказ.ert\")" };
// запускаем обработку если Р=1 то выполнено успешно,если 0 то невыполнено
retVal = lateBoundType.InvokeMember("EvalExpr", BindingFlags.Public | BindingFlags.InvokeMethod | BindingFlags.Static, null, v77, arg1);
}
catch (Exception er)
{ }
finally
{
// убиваем 1С
System.Runtime.InteropServices.Marshal.ReleaseComObject(v77);
GC.GetTotalMemory(true);
}
Для восьмерки надо:
1.Создать метод в обработке с атрибутом эксопрт
функция МояПроцедура() экспорт
возврат 5;
конецфункции
2.В программе:
var v81comType = Type.GetTypeFromProgID("V8.Application");
var v81 = Activator.CreateInstance(v81comType);
Object[] arguments = { @"File=""D:\Work\База 1С"";Usr=""Администратор"";" };
object trade = v81comType.InvokeMember("Connect", BindingFlags.Public | BindingFlags.InvokeMethod | BindingFlags.Static, null, v81, arguments);
object v8_componenta = v81comType.InvokeMember("NewObject", BindingFlags.Public | BindingFlags.InvokeMethod | BindingFlags.Static, null, v81, new object[] { "ВнешниеОбработкиМенеджер" });
object[] arg = { "c:\\111.epf" };
object myCompanent = v81comType.InvokeMember("Создать", BindingFlags.Public | BindingFlags.InvokeMethod | BindingFlags.Static, null, v8_componenta, arg);
object myForm = v81comType.InvokeMember("МояПроцедура", BindingFlags.Public | BindingFlags.InvokeMethod | BindingFlags.Static, null, myCompanent, null);
System.Runtime.InteropServices.Marshal.ReleaseComObject(v81);
GC.GetTotalMemory(true);
No comments:
Post a Comment