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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 24.10.2013, 12:32   #1  
user_ax is offline
user_ax
Участник
Аватар для user_ax
 
599 / 39 (3) +++
Регистрация: 07.10.2012
Адрес: ZP
Цитата:
Сообщение от plumbum Посмотреть сообщение
Создайте мап такого типа:
X++:
new Map(Types::container, Types::container);
а ключ формируйте таким образом:
X++:
[TableId, keyStr]
или вообще что хотите.

Вся прелесть в том, что Вам нет необходимости знать, сколько полей упаковано в контейнер, до начала обработки. А во время обработки Вы можете в зависимости от TableId из ключа вызвать нужный обработчик

Сделал почти так, только ключом выступает строка с преффиксом нужным, как вы ранее советовали

X++:
 while(queryRun.next())
    {
        jour = queryRun.get(tablenum(JourListTrans_));
        list = queryRun.get(tablenum(JourListTrans));
        invoice = queryRun.get(tablenum(InvoiceInvent));
        invent = queryRun.get(tablenum(InvoiceInvent));


        listKey = "L#"+list.InternalSp + "#" + list.ItemId+"#"+int2str(tablenum(VendSpListTrans));

        invoiceKey = "I#"+invoice.InternalSp + "#" + invoice.ItemId+"#"+int2str(tablenum(VendInvoiceTrans));

        //check in vendSpListTrans
        if(TotalMap.exists(listKey))
        {
            listCon = TotalMap.lookup(listKey);
            listCon = conpoke(listCon,7,conpeek(listCon,7)+list.SumOfSpQty);
            TotalMap.insert(listKey,listCon);
        }
        else
        {
            TotalMap.insert(listKey,[jour.IDSp, jour.SpDate, jour.RContractAccount,list.InternalSp, list.ItemId, list.SpUnit, list.SumOfSpQty]);
        }
        //check in VendInvoiceTrans
        if(TotalMap.exists(invoiceKey))
        {
            invoiceCon = TotalMap.lookup(invoiceKey);
            invoiceCon = conpoke(invoiceCon,3,conpeek(invoiceCon,3)+invoice.SumOfQty);
            TotalMap.insert(invoiceKey,invoiceCon);

        }
        else
        {
            TotalMap.insert(invoiceKey,[invoice.ItemId, invoice.PurchUnit, invoice.SumOfQty, invoice.InternalSp, invent.UnitId]);
        }

    }
Насчёт ключа - контейнера - интересное решение, спасибо!
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Помещение временной таблицы в Map Lemming DAX: Программирование 20 19.10.2017 14:16
Dynamics AX: Map Object Sorting - a real issue Blog bot DAX Blogs 7 15.10.2008 12:02
MAP vs Class. В чем идейная необходимость в MAP-ах? А что если использовать Class вместо MAP? Hub DAX: Программирование 16 11.08.2008 16:58
Открытие контейнера из Map tolstjak DAX: Программирование 12 12.11.2006 18:01
Пропадение связи в Map 6apcyk DAX: Программирование 1 08.06.2006 08:05
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

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

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

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