Вот код который поможет найти не попавшие фактуры в обработку:
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();
}