|
![]() |
#1 |
Участник
|
Цитата:
Сообщение от 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]); } } |
|
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|