|
8.2, COM-соединение, C#, dynamic строки |
☑ |
0
Bchgroup
13.02.14
✎
14:40
|
C#
V82.COMConnector v82conn = new V82.COMConnector();
string cStr = "File=\""+sets.Path1C+"\";";
dynamic handle = v82conn.Connect(cStr);
extProcess = handle.ВнешниеОбработки.Создать(@"c:\WRK\CTranslator\DB\ПолучениеКаталога.epf");
string s = extProcess.GetCatalog(false); //Работает
string fName = "C:\\1\\043\\Cat.xml" ;
extProcess.GetCatalog(false,fName); //Валится NullReferenceException
1С код
Функция GetCatalog(ТолькоИзменения,ФайлКаталога = "") Экспорт
ПолучениеТолькоИзменений = ТолькоИзменения;
Каталог = ПолучитьКаталог(ТолькоИзменения);
РезультатФормирования = СформироватьПредставлениеКаталогаXML(Каталог,ФайлКаталога);
Возврат РезультатФормирования;
КонецФункции
В чем косяк вообще может быть?
У меня есть ощущение, что как-то не так передается строка.
|
|
1
Serginio1
13.02.14
✎
14:49
|
Попробуй
extProcess.GetCatalog(false,ref fName);
В 1С все параметры, кроме знач, передаются по ссылке.
|
|
2
Bchgroup
13.02.14
✎
14:52
|
(1) Тоже самое, к сожалению.
|
|
3
Serginio1
13.02.14
✎
15:05
|
Для проверки можно сделать второй вариант GetCatalog
Для проверки сделай регистрацию в Журнал проверку на неопределено
ЗаписьЖурналаРегистрации("GetCatalog",УровеньЖурналаРегистрации.Ошибка,,,ФайлКаталога );
и вообще заходит ли в функцию
|
|
4
Ненавижу 1С
гуру
13.02.14
✎
15:09
|
сделай две функции
|
|
5
Bchgroup
13.02.14
✎
15:18
|
(3)
Ерунда какая-то, запись в журнал пишется( Строка правильно передана), фиксируется где-то дальше по коду еще одна строка в журнале, и вываливается с ошибкой.
Так в 1С вызывается.
GetCatalog(ложь,"C:\1\043\Cat.xml");
Права на папку поставил для всех.
|
|
6
Serginio1
13.02.14
✎
15:21
|
Сделай внутри Функции попытку Исключение
. И попробуй эти все действия из отчета вызвать напрямую. Внешний отчет тем и хорошь, что его легко отладить в среде 1с, а затем уже вызывать из 1с
|
|
7
Serginio1
13.02.14
✎
15:21
|
(5) Можешь посмотреть в ЖР ошибки.
|
|
8
Kalambur
13.02.14
✎
15:24
|
тыж строку передаешь а не путь
string fName = "C:\1\043\Cat.xml"
|
|
9
Serginio1
13.02.14
✎
15:32
|
(8) Это в C# экраны. Для того что бы не экранировать @
string fName = @"C:\1\043\Cat.xml" ;
Просто у него две записи применяются.
|
|
10
Bchgroup
13.02.14
✎
15:36
|
Так, нашлось решение. Оказалось все дело в безопасном режиме режиме создания обработки
extProcess = handle.ВнешниеОбработки.Создать(@"c:\WRK\CTranslator\DB\ПолучениеКаталога.epf",false);
вот так надо вызывать
|
|
11
Serginio1
13.02.14
✎
16:09
|
Спасибо учту.
|
|