![]() |
![]() |
![]() |
|
C# и V82.Application | ☑ | ||
---|---|---|---|---|
0
DMF84
30.04.15
✎
11:14
|
Приветствую всех.
Не получается соединиться с 1С из приложения на C# через V82.Application. Код: V8 = Activator.CreateInstance(Type.GetTypeFromProgID("V82.Application")); // Запускается 1cv8.exe Object[] arg = new Object[3]; arg[0] = V8.GetType().InvokeMember("RMTrade", BindingFlags.Public | BindingFlags.InvokeMethod, null, V8, null); // Выдает ошибку: "Неизвестное имя. (Исключение из HRESULT: 0x80020006 (DISP_E_UNKNOWNNAME))". arg[1] = @"/d" + split[2] + " /n" + split[7] + " /p" + split[8]; arg[2] = @"NO_SPLASH_SHOW"; bool result = (Boolean)V8.GetType().InvokeMember(@"Initialize", BindingFlags.Public | BindingFlags.InvokeMethod, null, V8, arg); if (!result) {} Конец кода. Подскажите что не так делаю? Какие в InvokeMember значения должны быть? Что-то нигде информации найти не могу. RMTrade - это имя конфигурации или чего? Уж простите, в 1С я - "дуб-дубом"... |
|||
1
DMF84
30.04.15
✎
11:19
|
П.С.: Рабочий код на старую версию 7.7:
V7 = Activator.CreateInstance(Type.GetTypeFromProgID("V77.Application")); Object[] arg = new Object[3]; arg[0] = V7.GetType().InvokeMember("RMTrade", BindingFlags.Public | BindingFlags.InvokeMethod, null, V7, null); arg[1] = @"/d" + pathBase + " /n" + loginUser + " /p" + paswordUser; arg[2] = @"NO_SPLASH_SHOW"; bool result = (Boolean)V7.GetType().InvokeMember(@"Initialize", BindingFlags.Public | BindingFlags.InvokeMethod, null, V7, arg); if (!result) { } На v8.2 по аналогии не заработало... |
|||
2
Ненавижу 1С
гуру
30.04.15
✎
11:30
|
RMTrade это что?
и вообще вместо этих ваших InvokeMember использовать dynamic |
|||
3
DMF84
30.04.15
✎
13:05
|
(2) "RMTrade это что?" самому интересно. Это из третей строки кода: "arg[0] = V8.GetType().InvokeMember("RMTrade", BindingFlags.Public | BindingFlags.InvokeMethod, null, V8, null);"
"вместо этих ваших InvokeMember использовать dynamic" а подробней можно? Как его использовать применительно к 1С? Или пример кода можно? |
|||
4
Господин ПЖ
30.04.15
✎
13:08
|
RMTrade - осталось его в 8.2 найти
|
|||
5
butterbean
30.04.15
✎
13:11
|
(0) это похоже на код для запуска приложения v7.7, он нафиг тут не нужен
|
|||
6
DMF84
30.04.15
✎
13:15
|
(4) Как?
|
|||
7
DMF84
30.04.15
✎
13:15
|
(5) А что тут нужно?
|
|||
8
Xapac
30.04.15
✎
13:31
|
||||
9
Ненавижу 1С
гуру
30.04.15
✎
13:59
|
dynamic V8 = Activator.CreateInstance(Type.GetTypeFromProgID("V82.ComConnector"));
dynamic tr = V8.Connect("..."); dynamic s = tr.Справочники.Валюты.СоздатьЭлемент(); |
|||
10
Serginio1
30.04.15
✎
14:04
|
||||
11
DMF84
30.04.15
✎
16:35
|
На другом форуме нашёл ответ.
Может кому пригодится: var v82ComConnector = Type.GetTypeFromProgID("V82.Application"); V82 = Activator.CreateInstance(v82ComConnector); string t = ("File=\"" + split[2] + "\";Usr=\"" + split[7] + "\";" + "Pwd=\"" + split[8] + "\";"); Object[] ar = {}; Object[] arguments = { t }; bool isConnected = (bool)v82ComConnector.InvokeMember("Connect", BindingFlags.Public | BindingFlags.InvokeMethod | BindingFlags.Static, null, V82, arguments); dynamic _Module = v82ComConnector.InvokeMember("ПроцедурыОбменаДаннымиСУправлениемТорговлей", BindingFlags.Public | BindingFlags.GetProperty | BindingFlags.Static, null, V82, ar); string _ResaltFunc = _Module.Привет(); V82 = null; v82ComConnector = null; Осталось понять как завершить 1cv8.exe по окончании работы... |
|||
12
sapphire
30.04.15
✎
16:45
|
см метод Exit
False |
|||
13
sapphire
30.04.15
✎
16:45
|
Глобальный контекст (Global context)
ЗавершитьРаботуСистемы (Exit) Синтаксис: ЗавершитьРаботуСистемы(<ЗапрашиватьВозможность>, <ПерезапуститьПриЗавершении>, <ДополнительныеПараметрыКомаднойСтроки>) Параметры: <ЗапрашиватьВозможность> (необязательный) Тип: Булево. Если Ложь, то завершение работы программы будет выполнено безусловно (не зависимо от наличия редактируемых данных). Если значение параметра Истина, то будут вызываться обработчики закрытия для каждой открытой формы и для всего приложения. Для редакторов текстов, табличных документов и HTML-документов будет произведен анализ модифицированности. Если нет факторов, препятствующих закрытию (например, данные модифицированы и не сохранены), то выполняется завершение работы. В противном случае (такие данные есть) будет выдан вопрос о необходимости сохранения документов. Значение по умолчанию: Истина <ПерезапуститьПриЗавершении> (необязательный) Тип: Булево. Указывает необходимость выполнения запуска нового сеанса с текущими установками после завершения работы. Значение по умолчанию: Ложь <ДополнительныеПараметрыКомаднойСтроки> (необязательный) Тип: Строка. Содержит дополнительные параметры, которые будет переданы новому сеансу. Если такие параметры уже есть среди текущих установок, переданные заменят текущие. Параметр указывается, если значение параметра <Перезапустить при завершении>=Истина. Если режим приложения (УправляемоеПриложение/ ОбычноеПриложение) не задан явно дополнительным параметром командной строки, при запуске текущего приложения учитывается использование параметров принудительного включения режима управляемого или обычного приложения /RunModeManagedApplication и /RunModeOrdinaryApplication. Описание: Позволяет принудительно вызвать завершение работы 1С:Предприятия. В зависимости от переданного параметра будут вызываться обработчики закрытия и завершения работы системы или завершает работу безусловно. Доступность: Тонкий клиент, веб-клиент, толстый клиент. Примечание: Если вызов осуществляется из модуля формы, открытой в модальном режиме, завершение работы системы не выполняется. Если параметр <ПерезапуститьПриЗавершении>=Истина, то после завершения работы системы будет открыт новый сеанс 1С:Предприятия. Если в процессе завершения системы пользователь отменит завершение работы, запуск нового сеанса выполнен не будет. Пример: // безусловное завершение работы программы ЗавершитьРаботуСистемы(Ложь); |
|||
14
Serginio1
30.04.15
✎
16:56
|
FinalReleaseComObject
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |