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С 7.7
нужна помощь с вызовом обработки в 1С 7.7
подключаюсь нормально, а функцию в обработке вызвать не получается.
из своего приложения использую вот этот код:
Код:
пожалуйста подскажите как вызвать функцию в обработке с нужными мне параметрами?
Насколько я понял (язык мне не совсем знаком)
Вы запустили невидимое приложение и пытаетесь открыть в нем форму. Скорее всего,
одинэсина просто игнорирует метод "ОткрытьФорму". Я не уверен точно, но по-моему, по ОЛЕ там нельзя открыть окно обработки. Попробуйте хотя бы сделать основное окно 1С видимым.
Если можно, приведите кусок кода процедуры ПриОткрытии из этой обработки, чтобы понять, что собственно Вы пытаетесь вызвать из 1С.
Да, и еще, попробуйте вызвать то же самое но без EvalExpr, а сразу у COM-соединения с 1С. Я когда с 77 работал никогда EvalExpr не трогал. Нужды не было, т.к. все и так работало, что мне надо.