Показать сообщение отдельно
Старый 13.03.2009, 11:25   #23  
Antoncheg is offline
Antoncheg
Участник
 
41 / 11 (1) +
Регистрация: 29.02.2008
Сегодня попробовал применить результаты на практике, вот что у меня вышло

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);

}
выдает ошибку "Общий сбой"