Сегодня попробовал применить результаты на практике, вот что у меня вышло
X++:
void Exec(str Path,SnQueryTableTmp SnQ)
{
str strValue;
str strFormula;
COMVariant sep;
#define.xlPasteValues(-4163)
#define.xlListSeparator(5)
;
xlApp = new COM('Excel.Application');
xlApp.Visible(true);
wbks = xlApp.Workbooks();
wbk = wbks.Add();
wkss = wbk.Worksheets();
wks = wkss.Add();
wks = wkss.Item(1);
wks.Name('Итог');
rng = wks.Range('A1');
//==================================Первая вкладка=======================
rstAxa = new COM('ADODB.Recordset');
flds = rstAxa.Fields();
flds.Append('Дата закрытия' ,this.adoTypeToExcel('date'));
flds.Append('Отгрузочная накладная' ,this.adoTypeToExcel('str'));
flds.Append('Заказ' ,this.adoTypeToExcel('str'));
flds.Append('Безналичная накладная' ,this.adoTypeToExcel('str'));
flds.Append('Менеджер' ,this.adoTypeToExcel('str'));
flds.Append('Код клиента' ,this.adoTypeToExcel('str'));
flds.Append('Дата отгрузочной накладной' ,this.adoTypeToExcel('date'));
flds.Append('Город' ,this.adoTypeToExcel('str'));
flds.Append('Краткое наименование' ,this.adoTypeToExcel('str'));
flds.Append('Номенклатура' ,this.adoTypeToExcel('str'));
flds.Append('Код дет. в спецификации' ,this.adoTypeToExcel('str'));
flds.Append('Название' ,this.adoTypeToExcel('str'));
flds.Append('Склад' ,this.adoTypeToExcel('str'));
flds.Append('Цена ед.' ,this.adoTypeToExcel('num'));
flds.Append('Себестоимость' ,this.adoTypeToExcel('num'));
flds.Append('Количество' ,this.adoTypeToExcel('num'));
flds.Append('Сумма по позиции' ,this.adoTypeToExcel('num'));
flds.Append('Прибыль' ,this.adoTypeToExcel('num'));
flds.Append('Каталожный номер' ,this.adoTypeToExcel('str'));
flds.Append('Серийные номера1' ,this.adoTypeToExcel('str'));
flds.Append('Серийные номера2' ,this.adoTypeToExcel('str'));
flds.Append('Серийные номера3' ,this.adoTypeToExcel('str'));
flds.Append('Серийные номера4' ,this.adoTypeToExcel('str'));
flds.Append('Серийные номера5' ,this.adoTypeToExcel('str'));
flds.Append('Серийные номера6' ,this.adoTypeToExcel('str'));
flds.Append('Серийные номера7' ,this.adoTypeToExcel('str'));
flds.Append('Серийные номера8' ,this.adoTypeToExcel('str'));
flds.Append('Серийные номера9' ,this.adoTypeToExcel('str'));
flds.Append('Серийные номера10' ,this.adoTypeToExcel('str'));
flds.Append('Серийные номера11' ,this.adoTypeToExcel('str'));
flds.Append('REF' ,this.adoTypeToExcel('str'));
flds.Append('Квота' ,this.adoTypeToExcel('str'));
flds.Append('Конечный клиент' ,this.adoTypeToExcel('str'));
flds.Append('Номер партии' ,this.adoTypeToExcel('str'));
rstAxa.Open();
// SnQ.setTmpData(SnQ);
while select SnQ
{
sep = xlApp.International(#xlListSeparator);
strFormula = strFmt('=CONCATENATE(RC[-30]%2RC[-29]%2RC[-28]%2RC[-27]%2RC[-26]%2RC[-25]%2RC[-24]%2RC[-23]%2RC[-22]%2RC[-21])',
sep.bStr());
strValue = strRep(SnQ.findSerialNumbersFromWMS(SnQ), 60);
rstAxa.AddNew();
// fld = flds.Item('Каталожный номер'); fld.Value(SelloutMsTable.A_PartNumber);
fld = flds.Item('Дата закрытия'); fld.Value(SnQ.DeliveryDate);
fld = flds.Item('Отгрузочная накладная'); fld.Value(SnQ.PickingListId);
fld = flds.Item('Заказ'); fld.Value(SnQ.SalesId);
fld = flds.Item('Безналичная накладная'); fld.Value(SnQ.InvoiceIdElect);
fld = flds.Item('Менеджер'); fld.Value(SnQ.SalesResponsible);
fld = flds.Item('Код клиента'); fld.Value(SnQ.CustAccount);
fld = flds.Item('Дата отгрузочной накладной'); fld.Value(SnQ.PickingListDate);
fld = flds.Item('Город'); fld.Value(SnQ.City);
fld = flds.Item('Краткое наименование'); fld.Value(SnQ.NameAlial);
fld = flds.Item('Номенклатура'); fld.value(SnQ.ItemId);
fld = flds.Item('Код дет. в спецификации'); fld.Value(SnQ.ChosenPartNumber);
fld = flds.Item('Название'); fld.Value(SnQ.ItemName);
fld = flds.Item('Склад'); fld.Value(SnQ.InventLocationId);
fld = flds.Item('Цена ед.'); fld.Value(SnQ.A_SalesPrice);
fld = flds.Item('Себестоимость'); fld.Value(SnQ.SalesCostPrice);
fld = flds.Item('Количество'); fld.Value(SnQ.Qty);
fld = flds.Item('Сумма по позиции'); fld.Value(SnQ.Amount);
fld = flds.Item('Прибыль'); fld.Value(SnQ.SalesProfit);
fld = flds.Item('Каталожный номер'); fld.Value(SnQ.A_PartNumber);
fld = flds.Item('Серийные номера1'); fld.Value(strFormula);
fld = flds.Item('Серийные номера2'); fld.Value(strValue);
fld = flds.Item('Серийные номера3'); fld.Value(strValue);
fld = flds.Item('Серийные номера4'); fld.Value(strValue);
fld = flds.Item('Серийные номера5'); fld.Value(strValue);
fld = flds.Item('Серийные номера6'); fld.Value(strValue);
fld = flds.Item('Серийные номера7'); fld.Value(strValue);
fld = flds.Item('Серийные номера8'); fld.Value(strValue);
fld = flds.Item('Серийные номера9'); fld.Value(strValue);
fld = flds.Item('Серийные номера10'); fld.Value(strValue);
fld = flds.Item('Серийные номера11'); fld.Value(strValue);
fld = flds.Item('REF'); fld.Value(SnQ.REF);
fld = flds.Item('Квота'); fld.value(SnQ.InventQuotationId);
fld = flds.Item('Конечный клиент'); fld.Value(SnQ.EndPartnerCode);
fld = flds.Item('Номер партии'); fld.Value(SnQ.InventBatchId);
rstAxa.Update();
}
cell = rng.Offset(1,0);
cell.CopyFromRecordset(rstAxa);
rng = wks.Range('T2:T%');
rng.FormulaR1C1( rng.Value() );
rng.Copy();
rng.PasteSpecial(#xlPasteValues);
xlApp.CutCopyMode(true);
rng = wks.Columns();
rng = COM::createFromVariant(rng.Item('U:AD'));
rng.Delete();
rstAxa.close();
actWin = xlApp.ActiveWindow();
// actWin.FreezePanes(true);
}
выдает ошибку "Общий сбой"