03.03.2004, 11:30 | #1 |
Участник
|
Передача данных из 1С в Axapta 3.0 через COM Connector
Здравствуйте!
Ниже привожу код 1С: Процедура ПриЗаписи() Axapta = CreateObject("AxaptaCOMConnector.Axapta"); Axapta.Logon("admin"); MyRecord = Axapta.CreateRecord("MetroTable"); MyRecord.InitValue(); MyRecord.Field("MetroId").Value = "1"; MyRecord.Field("MetroName").Value = "Metro"; MyRecord.Insert(); Axapta.Logoff(); КонецПроцедуры 1С ругается, что нет такого метода MyRecord.Field("MetroId").Value. Пустая запись в Axapta (без MyRecord.Field) вставляется спокойно. В чем может быть проблема? Скорее всего неправильный синтаксис 1С. Просьба откликнуться, кто уже имел подообный опыт передачи данных из 1С. |
|
03.03.2004, 14:59 | #2 |
Участник
|
Попробуй так:
PHP код:
Например если со стороны аксапты к к какому-нибудь COM-у коннектиться, то можно толь так (длинный путь к обекту не поддерживатеся) . Извиняюсь, что не могу более грамотно выразиться.
__________________
Уточните значение слов и вы избавите человечество от половины его заблуждений. (Рене Декарт) / Axapta 2.5 |
|
03.03.2004, 15:50 | #3 |
Участник
|
К сожалению, тот же результат.
|
|
03.03.2004, 16:31 | #4 |
Участник
|
еще одно предположение
Может так:
PHP код:
__________________
Уточните значение слов и вы избавите человечество от половины его заблуждений. (Рене Декарт) / Axapta 2.5 |
|
03.03.2004, 16:47 | #5 |
Участник
|
Нет, все тот же результат. Неужели из 1С (v 77) никто не передавал по COM данные
в Axapta? По связи InterBase - Axapta (программка на Delphi) все четко, проблем нет, с 1С "застряли". |
|
03.03.2004, 17:09 | #6 |
Участник
|
Предлагаю создать у таблицы со стороны Аксапты метод, исполняющий нужную логику. И вызывать его. Там при необходимости можно проверять правильность значений полей, взаимосвязи с другими таблицами и т.д.
Примерно так: Аксапта: public int insertRecord(str _metroID, str _metroName) { // метод таблицы int retCode; try { this.initValue(); this.MetroID=_metroID; this.MetroName=_metroName; this.write(); retCode=1; } catch (exception::error){ retCode=0; } return retCode; } 1С: Процедура Сформировать() попытка Axapta = CreateObject("AxaptaCOMConnector.Axapta"); Axapta.Logon("Ravil"); MyRecord = Axapta.CreateRecord("MetroTable"); if MyRecord.call("insertRecord","1", "Metro")=0 then сообщить("Ошибка!"); иначе сообщить("Запись вставлена"); КонецЕсли; Axapta.Logoff(); исключение Axapta=0; Сообщить(ОписаниеОшибки()); КонецПопытки; КонецПроцедуры |
|
03.03.2004, 17:56 | #7 |
Участник
|
Спасибо!
Хороший способ. Единственное, вылетает ошибка if MyRecord.call("insertRecord","1", "Metro")=0 then {Справочник.Метро.Форма.Модуль(7)}: AxaptaCOMConnector.Axapta.1: Недостаточно прав для выполнения Method insertRecord Ошибка времени выполнения. : xRecord object не имеет метода 'insertRecord'. Трассировка стека: \Classes\xRecord\insertRecor В Axapte я - начинающий , попробовал перезапустить Axapta Business Connector, не помогло. |
|
03.03.2004, 18:16 | #8 |
Участник
|
Честно говоря сходу ответить не могу
Но предложенный способ не кажется мне верным Скорее правильное направление поиска будет следующее: видимо СОМ-интерфейс IAxaptaRecord реализует класс Common в Аксапте Если Вам удастся вставить запись с помощью Common, Вы сможете сделать это и через СОМ |
|
04.03.2004, 08:10 | #9 |
Участник
|
У меня работает
в 1с: Процедура Сформировать() Axapta = CreateObject("AxaptaCOMConnector.Axapta"); Axapta.Logon("Admin", "", "", ""); ClassObject = Axapta.CreateObject("MetroEdit"); ClassObject.Call("InsertRecord","1","Metro1"); Axapta.Logoff(); КонецПроцедуры в Ax: class MetroEdit { MetroTable MetroTable; } public void InsertRecord(int MetroId, str MetroName) { ; MetroTable.initValue(); MetroTable.MetroId = MetroId; MetroTable.MetroName = MetroName; MetroTable.insert(); } |
|
04.03.2004, 14:42 | #10 |
Участник
|
Спасибо большое за помощь!
И этот способ работает успешно в Delphi, а вот в 1С упорно выдается ошибка "AxaptaCOMConnector.Axapta.1: Недостаточно прав для выполнения Method insertRecord". Даже не знаю, проблема в 1С, или в чем-то другом (политика лицензирования и т.п). |
|
03.12.2004, 10:58 | #11 |
Участник
|
не работает!
1С -ка говорит что ошибка! (COM я зарегисрировал и запустил) Как сделать не знаю
__________________
Смотрим в книгу - видим фигу. |
|