![]() |
#11 |
Роман Долгополов (RDOL)
|
Как обращаться к такой таблице в коде? Первый вариант уже сказали - табличный мап и инициализация через MakeRecord. Второй вариант - дублировать таблицу чтобы FieildId были такие как в таблице с решетом и то-же инициализация через MakeRecord. В этом случае заработают insert-update-delete_recordset. Этакий хакерский мап в виде таблицы.
Работа с мапом обычным (mInventSumDeltaKeyMap - мап) X++: mInventSumDeltaKeyMap inventSumDeltaKey = mInventSumDeltaKeyMap::tmpTableInit(); InventSum inventSum; InventSum inventSumNew; RecordInsertList insertList; ; while select ItemId, InventDimId from inventSumDeltaKey group by ItemId, InventDimId notexists join inventSum where inventSum.ItemId == inventSumDeltaKey.ItemId && inventSum.InventDimId == inventSumDeltaKey.InventDimId { if (!inventSumDeltaKey.ItemId || !inventSumDeltaKey.InventDimId) { throw error(strfmt("@SYS68912",funcname())); } if (! insertList) { insertList = new RecordInsertList(tablenum(InventSum), true, true, true); } inventSumNew.ItemId = inventSumDeltaKey.ItemId; inventSumNew.InventDimId = inventSumDeltaKey.InventDimId; inventSumNew.ClosedQty = NoYes::Yes; inventSumNew.Closed = NoYes::Yes; insertList.add(inventSumNew); } if (insertList) { insertList.insertDatabase(); } X++: mLedgerBalancesTransDeltaMap ledgerBalancesTransDelta = trecord::init(this.getBalanceDeltaTableId()); ; unchecked(Uncheck::TableSecurityPermission) { insert_recordset ledgerBalancesTrans (AccountNum, PeriodCode, TransDate, SystemGeneratedUltimo, DebitMST, CreditMST, DebitOPRMST, CreditOPRMST, DebitTaxMST, CreditTaxMST, DebitMSTSecond, CreditMSTSecond, DebitOPRMSTSecond, CreditOPRMSTSecond, DebitTaxMSTSecond, CreditTaxMSTSecond, Qty) select forceLiterals LedgerAccountNum, PeriodCode, TransDate, SystemGeneratedUltimo, sum(DebitMST), sum(CreditMST), sum(DebitOPRMST), sum(CreditOPRMST), sum(DebitTaxMST), sum(CreditTaxMST), sum(DebitMSTSecond), sum(CreditMSTSecond), sum(DebitOPRMSTSecond), sum(CreditOPRMSTSecond), sum(DebitTaxMSTSecond), sum(CreditTaxMSTSecond), sum(Quantity) from ledgerBalancesTransDelta group by LedgerAccountNum, PeriodCode, TransDate, SystemGeneratedUltimo; } X++: mInventSumDateTransTmp transTmp = trecord::init(_tableId, false, true); mInventSumDateDim dim; mInventSumDateTrans trans; #mInventSumDateDimDevelop insert_recordset transTmp (TransDate, ItemId, FinancialDimId) select maxof(TransDate), ItemId, FinancialDimId from trans group by ItemId, FinancialDimId where trans.TransDate <= transDate && (!inventSumDateDimParmCriteria.ItemIdFlag || (trans.ItemId == inventSumDateDimCriteria.ItemId)) join dim where dim.FinancialDimId == trans.FinancialDimId && (!inventSumDateDimParmCriteria.InventSiteIdFlag || (dim.InventSiteId == inventSumDateDimCriteria.InventSiteId )) && (!inventSumDateDimParmCriteria.InventLocationIdFlag || (dim.InventLocationId == inventSumDateDimCriteria.InventLocationId )) && (!inventSumDateDimParmCriteria.InventProfileIdFlag || (dim.InventProfileId == inventSumDateDimCriteria.InventProfileId )) && (!inventSumDateDimParmCriteria.InventProfileItemTypeFlag || (dim.InventProfileItemType == inventSumDateDimCriteria.InventProfileItemType)) && (!inventSumDateDimParmCriteria.AccountFlag || (dim.Account == inventSumDateDimCriteria.Account )) && (!inventSumDateDimParmCriteria.Account2Flag || (dim.Account2 == inventSumDateDimCriteria.Account2 )) && (!inventSumDateDimParmCriteria.AccountOffsetFlag || (dim.AccountOffset == inventSumDateDimCriteria.AccountOffset )) && (!inventSumDateDimParmCriteria.AccountOffset2Flag || (dim.AccountOffset2 == inventSumDateDimCriteria.AccountOffset2 )) && (!inventSumDateDimParmCriteria.StornoFlag || (dim.Storno == inventSumDateDimCriteria.Storno )) && (!inventSumDateDimParmCriteria.DimensionFlag[1] || (dim.Dimension[1] == inventSumDateDimCriteria.Dimension[1] )) && (!inventSumDateDimParmCriteria.DimensionFlag[2] || (dim.Dimension[2] == inventSumDateDimCriteria.Dimension[2] )) && (!inventSumDateDimParmCriteria.DimensionFlag[3] || (dim.Dimension[3] == inventSumDateDimCriteria.Dimension[3] )) && (!inventSumDateDimParmCriteria.DimensionFlag[4] || (dim.Dimension[4] == inventSumDateDimCriteria.Dimension[4] )) && (!inventSumDateDimParmCriteria.DimensionFlag[5] || (dim.Dimension[5] == inventSumDateDimCriteria.Dimension[5] )) && (!inventSumDateDimParmCriteria.DimensionFlag[6] || (dim.Dimension[6] == inventSumDateDimCriteria.Dimension[6] )) && (!inventSumDateDimParmCriteria.DimensionFlag[7] || (dim.Dimension[7] == inventSumDateDimCriteria.Dimension[7] )) && (!inventSumDateDimParmCriteria.DimensionFlag[8] || (dim.Dimension[8] == inventSumDateDimCriteria.Dimension[8] )) && (!inventSumDateDimParmCriteria.DimensionFlag[9] || (dim.Dimension[9] == inventSumDateDimCriteria.Dimension[9] )) && (!inventSumDateDimParmCriteria.DimensionFlag[10] || (dim.Dimension[10] == inventSumDateDimCriteria.Dimension[10] )) && (!inventSumDateDimParmCriteria.DimensionFlag[11] || (dim.Dimension[11] == inventSumDateDimCriteria.Dimension[11] )) && (!inventSumDateDimParmCriteria.DimensionFlag[12] || (dim.Dimension[12] == inventSumDateDimCriteria.Dimension[12] )) && (!inventSumDateDimParmCriteria.DimensionFlag[13] || (dim.Dimension[13] == inventSumDateDimCriteria.Dimension[13] )) && (!inventSumDateDimParmCriteria.DimensionFlag[14] || (dim.Dimension[14] == inventSumDateDimCriteria.Dimension[14] )) && (!inventSumDateDimParmCriteria.DimensionFlag[15] || (dim.Dimension[15] == inventSumDateDimCriteria.Dimension[15] )) && (!inventSumDateDimParmCriteria.DimensionFlag[16] || (dim.Dimension[16] == inventSumDateDimCriteria.Dimension[16] )) && (!inventSumDateDimParmCriteria.DimensionFlag[17] || (dim.Dimension[17] == inventSumDateDimCriteria.Dimension[17] )) && (!inventSumDateDimParmCriteria.DimensionFlag[18] || (dim.Dimension[18] == inventSumDateDimCriteria.Dimension[18] )); } |
|
|
За это сообщение автора поблагодарили: raz (20), Logger (20), Ace of Database (19). |
Теги |
dispose, inventsumdelta, ledgerbalancestransdelta, tempdb |
|
|