![]() |
#11 |
Участник
|
Цитата:
Сообщение от plumbum
![]() Два мапа нужно вам из-за того, что вы их в разных местах инициализируете, или для какого-то логического разделения элементов.
Ведь если вопрос только в инициализации, то можно выкрутиться и создать один мап. Передавайте общий мап как параметр в ваши методы и возвращайте его, как результат. Тогда сможете добавить нужные элементы в один мап в нескольких местах еще и от дубликатов избавитесь. Ну а если честно, сколько элементов в сумме в двух мапах получается? Может стоит уже их просто перебрать ![]() А по поводу метода с мапом в кач-ве параметра не совсем понял, если честно. Данным методом я создаю своих 2 мапа X++: void FindSpecForClose() { //view variable -> JourListTrans jour,list; InvoiceInvent invoice,invent; //<- str listKey, invoiceKey; container listCon, invoiceCon; ; ListMap = new Map(Types::String, Types::Container); InvoiceMap = new Map(Types::String, Types::Container); //->add range in query by date if(bydate) queryRun.query().dataSourceNo(1).addRange(fieldnum(JourListTrans,SpDate)).value(strFmt('(SpDate <= %1)', date2strXpp(bydate))); //<- //info(queryRun.query().dataSourceNo(1).toString()); while(queryRun.next()) { jour = queryRun.get(tablenum(JourListTrans)); list = queryRun.get(tablenum(JourListTrans)); invoice = queryRun.get(tablenum(InvoiceInvent)); invent = queryRun.get(tablenum(InvoiceInvent)); listKey = list.InternalSp + "#" + list.ItemId+"#"+tablenum(VendSpListTrans); invoiceKey = invoice.InternalSp + "#" + invoice.ItemId+"#"+tablenum(VendInvoiceTrans); //check in vendSpListTrans if(ListMap.exists(listKey)) { listCon = ListMap.lookup(listKey); listCon = conpoke(listCon,7,conpeek(listCon,7)+list.SumOfSpQty); listMap.insert(listKey,listCon); } else { listMap.insert(listKey,[jour.IDSp, jour.SpDate, jour.RContractAccount,list.InternalSp, list.ItemId, list.SpUnit, list.SumOfSpQty]); } //check in VendInvoiceTrans if(InvoiceMap.exists(invoiceKey)) { invoiceCon = invoiceMap.lookup(invoiceKey); invoiceCon = conpoke(invoiceCon,3,conpeek(invoiceCon,3)+invoice.SumOfQty); InvoiceMap.insert(invoiceKey,invoiceCon); } else { invoiceMap.insert(invoiceKey,[invoice.ItemId, invoice.PurchUnit, invoice.SumOfQty, invoice.InternalSp, invent.UnitId]); } } } ![]() |
|