AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Прочие вопросы
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 18.09.2013, 09:11   #5  
_sharky_ is offline
_sharky_
Участник
 
4 / 10 (1) +
Регистрация: 16.09.2013
Цитата:
Сообщение от handy-comp Посмотреть сообщение
Активно использую коннектор .Net для возврата XML и подобных проблем не замечено, думаю тут нужно смотреть уже конкретно ваш код статического метода и С#, опубликуйте.
Ax:
X++:
public server static container mel_getInventTableWithBarcodeListXml(RBOID _rboid, RBOItemHierarchy _rboitemhierarchy)
{
    InventTable         inventTable;
    InventItemBarcode  inventItemBarcode;
    container           con = connull();
    XmlDocument         ItmXml;
    XmlElement          ItmRoot;
    XmlElement          ItmNode;
    XmlElement          ItmField;

    XmlDocument         BarXml;
    XmlElement          BarRoot;
    XmlElement          BarNode;
    XmlElement          BarField;
    ;
    ItmXml = XmlDocument::newBlank();
    BarXml = XmlDocument::newBlank();
    ItmRoot = ItmXml.createElement(@"DocumentElement");
    BarRoot = BarXml.createElement(@"DocumentElement");
    ItmXml.appendChild(ItmRoot);
    BarXml.appendChild(BarRoot);
    
    while select inventTable
    where inventTable.InventStatus == DKL_InventStatus::Active
    && (_rboItemHierarchy == RBOItemHierarchy::BusinessGroup
    && inventTable.MEL_BusinessGroup == _rboid)
    
    || (_rboitemhierarchy == RBOItemHierarchy::DivisionGroup
    && inventTable.MEL_DivisionGroup == _rboid)
    
    || (_rboitemhierarchy == RBOItemHierarchy::RetailDepartment
    && inventTable.MEL_ItemDepartment == _rboid)
    
    || (_rboitemhierarchy == RBOItemHierarchy::RetailGroup
    && inventTable.MEL_RetailGroup == _rboid)
    {
        ItmNode = ItmXml.createElement(@"I");
        ItmRoot.appendChild(ItmNode);
        
        ItmField = ItmXml.createElement(@"ItemId");
        ItmField.innerText(inventTable.ItemId);
        ItmNode.appendChild(ItmField);
        
        ItmField = ItmXml.createElement(@"Description");
        ItmField.innerText(inventTable.ItemName);
        ItmNode.appendChild(ItmField);
        
        ItmField = ItmXml.createElement(@"Article");
        ItmField.innerText(inventTable.MEL_Article);
        ItmNode.appendChild(ItmField);
        
        ItmField = ItmXml.createElement(@"Price");
        ItmField.innerText(num2str(inventTable.dkl_baseRetailPrices().BasePrice, 0, 8, 1, 0));
        ItmNode.appendChild(ItmField);
        
        while select inventItemBarcode
        where inventItemBarcode.itemId == inventTable.ItemId
        {
            BarNode = BarXml.createElement(@"B");
            BarRoot.appendChild(BarNode);
            
            BarField = BarXml.createElement(@"ItemId");
            BarField.innerText(inventTable.ItemId);
            BarNode.appendChild(BarField);
            
            BarField = BarXml.createElement(@"Barcode");
            BarField.innerText(inventItemBarcode.itemBarCode);
            BarNode.appendChild(BarField);
        }
    }
    con = [ItmXml.toString(), BarXml.toString()];
    return con;
}
в C# использую собственную обёртку для BusinessConnector'a
Код:
//вызов 
object Ret = ax.CallAxMethod("PosIsTransactionService", "mel_getInventTableWithBarcodeListXml", new object[] { BusinessGroup, ItemHierarchy });

//Обёртка
public object CallAxMethod(string className, string methodName, params object[] parameters)
        {
            if (AxConn == null)
                return null;
            object res = null;
            try
            {
                log.Write("AxConn.CallAxMethod({0}, {1})", className, methodName);
                res = AxConn.CallStaticClassMethod(className, methodName, parameters);
            }
            catch (BusinessConnectorException bex)
            {
                log.Write("AxConn.Logon BusinessConnectorException: {0} {1}", bex.ToString(), bex.Message);
                log.Write("AxConn.Logon BusinessConnectorException stack: {0}", bex.StackTrace);
                return null;
            }
            catch (Exception ex)
            {
                log.Write("AxConn.CallAxMethod Exception: {0} {1}", ex.ToString(), ex.Message);
                log.Write("AxConn.CallAxMethod Exception stack: {0}", ex.StackTrace);
                return null;
            }
            return res;
        }
Цитата:
Сообщение от gl00mie Посмотреть сообщение
А на какого размера XML-документах это все валится, любого или только на больших (>4Mb)? И если на больших, то джобиком вы тоже большой документ генерите или же просто мелкий тестовый?
Джобиком большой объем не пробовал, но <4Mb свободно собирает

P.S. Не пинайте сильно, я только учусь

Последний раз редактировалось _sharky_; 18.09.2013 в 09:15.
Теги
business connector, sehexception

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
axforum blogs: Квест: Подружим Dynamics Ax 2009 Sp1 RU7 c SharePoint Foundation 2010 Blog bot DAX Blogs 4 16.10.2017 17:50
Падает AOS MS DAX 2009 SP1 RU6 Daiver DAX: Администрирование 21 14.02.2011 09:59
Проблема запуска клиента DAX 2009 SP1 (safe mode) polygris DAX: Программирование 6 19.01.2010 12:32
emeadaxsupport: List of fixes that improve performance of certain features in Dynamics AX 2009 Blog bot DAX Blogs 0 13.10.2009 19:06
DAX 2009 SP1 + MS SQL Server 2008 xshaman DAX: Администрирование 7 10.12.2008 12:26

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 16:05.