Имя: Пароль:
1C
1С v8
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
Спасибо учту.