![]() |
|
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
|
Спасибо учту.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |