![]() |
#7 |
Участник
|
Вот код который поможет найти не попавшие фактуры в обработку:
X++: static void _HTC_VAT_Analyze_ObrabotkaNDS(Args _args) { Dialog dialog = new Dialog(); DialogField dlgDateStart; DialogField dlgDateEnd; Query query = new Query(); QueryBuildDataSource qbds; QueryRun qr; TransDate startDate, endDate; FactureJour_RU factureJour; COM rstAxa; COM flds, fld; COM xlApp; COM wbks, wbk; COM wkss, wks; COM rng, cell, rngCR; COM font; COM entCol; COM actWin; int i, iMax; int adoTypeToExcel(str _type) { switch (_type) { case 'num' : return 5; // adDouble case 'str' : return 8; // adBSTR case 'date': return 133; // adDBDate } return 8; } ; dlgDateStart = dialog.addField(typeid(TransDate),'StartDate'); dlgDateEnd = dialog.addField(typeid(TransDate),'EndDate'); dialog.run(); startDate = dlgDateStart.value(); endDate = dlgDateEnd.value(); rstAxa = new COM('ADODB.Recordset'); flds = rstAxa.Fields(); flds.Append("FactureDate" , adoTypeToExcel('date')); flds.Append("FactureExternalId" , adoTypeToExcel('str')); flds.Append("CustVendAC" , adoTypeToExcel('str')); flds.Append("Amount" , adoTypeToExcel('num')); flds.Append("Tax" , adoTypeToExcel('num')); rstAxa.Open(); qbds = query.addDataSource(tableNum(FactureJour_RU)); qbds.addRange(fieldNum(FactureJour_RU, Module)).value(queryValue(FactureModule_RU::Vend)); qbds.addRange(fieldNum(FactureJour_RU, FactureDate)).value(strfmt('((%1 >= %2) && (%1 <= %3))', fieldstr(FactureJour_RU, FactureDate),date2StrXpp(startDate), date2StrXpp(endDate))); qbds = query.dataSourceTable(tableNum(FactureJour_RU)).addDataSource(tableNum(PurchBookVATProcessLogTrans_RU)); qbds.relations(true); qbds.joinMode(JoinMode::NoExistsJoin); qr = new QueryRun(query); while(qr.next()) { factureJour = qr.get(tableNum(FactureJour_RU)); rstAxa.AddNew(); fld = flds.Item("FactureDate"); fld.Value(facturejour.FactureDate); fld = flds.Item("FactureExternalId"); fld.Value(facturejour.FactureExternalId); fld = flds.Item("CustVendAC"); fld.Value(facturejour.CustVendInvoiceAccount); fld = flds.Item("Amount"); fld.Value(facturejour.FactureAmount); fld = flds.Item("Tax"); fld.Value(facturejour.FactureTax); rstAxa.Update(); } xlApp = new COM('Excel.Application'); wbks = xlApp.Workbooks(); wbk = wbks.Add(); wkss = wbk.Worksheets(); wks = wkss.Item(1); wks.Name('NotExistsInPurchBook'); rng = wks.Range('A1'); flds = rstAxa.Fields(); iMax = flds.Count() - 1; for (i = 0; i <= iMax; i += 1) { fld = flds.Item(i); cell = rng.Offset(0, i); cell.Value2(fld.Name()); } rngCR = rng.CurrentRegion(); font = rngCR.Font(); font.Bold(true); cell = rng.Offset(1, 0); cell.CopyFromRecordset(rstAxa); rngCR = rng.CurrentRegion(); entCol = rngCR.EntireColumn(); entCol.AutoFit(); cell.Select(); actWin = xlApp.ActiveWindow(); actWin.FreezePanes(true); xlApp.Visible(true); rstAxa.Close(); } |
|