Показать сообщение отдельно
Старый 03.06.2013, 09:56   #2  
konfet is offline
konfet
Снова балуюсь косаптой :)
 
143 / 50 (2) ++++
Регистрация: 23.04.2003
Адрес: Moscow
Расскажу, как задача была решена с помощью .NET коннектора - может, кому-то пригодится.
Сначала пробовал COM-коннектор, но: во первых он морально устарел, его лучше сейчас не использовать.
Во вторых, при вызове из приложения 1 (далее П1) кода приложения 2 (далее П2) через ком-коннектор - передается строка размером до 1000 байт. Через .NET же передается строка любого размера (проверено на строке размером в 100 килобайт), то есть между приложениями можно передать в принципе любую осмысленную информацию.
Для передачи строки таблицы или другого сложного объекта можно использовать xml и функции преобразования.
Итак. Тестовая задача: передать из П1 в П2 на обработку только что заведенного в П1 клиента.
Перво-наперво, в репозитарий AOT П1, в ветку References, добавляем сборку Microsoft.Dynamics.BusinessConnectorNet.



Вызывающий код в П1:
X++:
static void testNETres(Args _args)
{
    Microsoft.Dynamics.BusinessConnectorNet.Axapta ax;
    Microsoft.Dynamics.BusinessConnectorNet.AxaptaObject axObj;
    CustTable ct;
    int xmlLen, resLen, bigLen, i;
    str xml, res, s, resres;    
    ;

    select firstonly ct;
    s = ct.xml();
    xmlLen = strLen(s);
    ax = new Microsoft.Dynamics.BusinessConnectorNet.Axapta();
    ax.Logon("","","","");
    axObj = ax.CreateAxaptaObject("test_Appl2");
    res = axObj.Call('test_NET', s);
    res = ''; 
}
В П2, в классе test_Appl2 создаем метод test_NET в котором осуществляется обработка переданного клиента.

X++:
str test_NET(str _s)
{
    custTable xTable;
    XmlDocument  xmlDocument = new XmlDocument();
    str xml;
    ;

    xml = _s;
    if (xmlDocument.loadXml(xml))
    {
        Global::recordFromXMLNode(xmlDocument.documentElement(), xTable);

//  дальше можно делать с клиентом все что надо
//  ...
        return xTable.Name;
    }
    return xml;

}
Вот так вот на самом деле просто всё.
__________________
Бесты и регарды!
За это сообщение автора поблагодарили: AlGol (2), raz (5).