AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.12.2014, 21:05   #5  
Art_Tanis is offline
Art_Tanis
Участник
 
225 / 36 (2) +++
Регистрация: 04.02.2014
Итог! Будет все так::
X++:
static void _HTC_EXCELIMPORT_DataImportToAXFromExcel(Args _args)
{
    SysExcelApplication              xlsApplication;
    SysExcelWorkBooks         xlsWorkBookCollection;
    SysExcelWorkBook                    xlsWorkBook;
    SysExcelWorksheets       xlsWorkSheetCollection;
    SysExcelWorksheet                  xlsWorkSheet;
    SysExcelRange                          xlsRange;
    SysExcelCells                             Cells;
    SysExcelCell                              RCell;
    CommaIO                                  inFile;
    int                                      nRow,i;
    DialogField                          dialogPath;
    DialogField                         dlgFilepath;
    DialogField                        dlgReqPlanId;
   
    DialogField                     dlgInventSiteId;
   

    Dialog                                   dialog;
    Filename                               filename;

    ItemId                                    ItemId;
    ItemGroupId                          ItemGroupId;
    ItemBomId                              ItemBomId;
    ItemRouteId                          itemRouteId;
    InventSiteId                        inventSiteId;

    ReqPO                                      ReqPo;
    ReqTrans                                   ReqTrans;

    ReqPlanId                                    ReqPlanId;
    ReqCalcExplodePo                                   reqCalcExplodePo;
    


    ReqDate                                                                 ReqDate;
    ReqDateOrder                                                       ReqDateOrder;
    Qty                                                                         Qty;
    
    InventDim   InventDim;

        ;


    dialog = new Dialog("Import");
    dialogPath = dialog.addField(typeid(Filenameopen), "File Name");

    dlgReqPlanId = dialog.addField(typeid(ReqPlanId), "Plan Id");
    dlgInventSiteId = dialog.addField(typeid(InventSiteId), "Site");
    dialog.run();
    if (dialog.run())
    {
        filename = (dialogPath.value());
        ReqPlanId = dlgReqPlanId.value();
       
        InventSiteId = dlgInventSiteId.value();
    }
    inFile = new CommaIO (filename, 'R');

    if (!inFile || infile.status() != IO_Status::Ok )
    {
        throw error (strfmt("@SYS19312",filename));
    }
     try
    {
        xlsApplication          = SysExcelApplication::construct();
        xlsWorkBookCollection   = xlsApplication.workbooks();
        xlsWorkBookCollection.open(filename);
        xlsWorkSheetCollection  = xlsApplication.worksheets();
        xlsWorkSheet            = xlsWorkSheetCollection.itemFromNum(1);
        Cells                   = xlsWorkSheet.Cells();
        nRow = 2;
        RCell = Cells.Item(nRow, 1);
       
        InventDim.InventSiteId = InventSiteId;
        while(RCell.value().bStr() != "")
        {
            ItemId                   = RCell.value().bStr();
            RCell                      = Cells.item(nRow,2);
            Qty                      = RCell.value().double();

            ttsbegin;
            ReqPO.ReqPlanId     = ReqPlanId;
            ReqPO.RefType       = ReqRefType::BOMPlannedOrder;

            ReqPO.initFromItemId(ItemId);

            ReqPo.setBOMCreated(true);
            ReqPo.setRouteCreated(true);




            ReqPO.Qty   = Qty;
            ReqPo.BOMRouteCreated                                         = ReqBOMRouteCreated::BOMRoute;
            Reqpo.CovInventDimId =                        InventDim::findOrCreate(inventDim).inventDimId;
            ReqPO.PurchUnit      = inventTableModule::find(ItemId,moduleInventPurchSales::Invent).UnitId;
            ReqPo.ReqTime                                                                    = timenow();
            ReqPo.ReqDateDlv     = today();
            ReqPo.ReqDateOrder   = today();

             ReqPo.insert();

            ReqTrans.insertFromReqPo(ReqPo,True);
          
            ttscommit;

            reqCalcExplodePo = ReqCalcExplode::newReqTrans(ReqTrans, null);
            ReqCalcExplodePo.run();

            nRow++;
            RCell = Cells.Item(nRow, 1);
        }
        xlsApplication.quit();

        xlsApplication.finalize();
        info("Imported completed");
    }
    catch( Exception::Error)
    {
        //Close Excel.
        xlsApplication.quit ();
        xlsApplication.finalize ();
        ttsabort;
        info("Unable to process the excel import ");
    }

}
Для 2009 это работает. Вопрос. А вот теперь я хочу разумеется сделать кнопку все дела чтобы пользователь выбирал и грузил. А как лучше сделать? Вот я сделаю класс, надо ли наследовать RunBase класс? Выполнять Batch Job мне ненадо - это редкие загрузки будут ... что мне даст Runbase? Только сохранение параметров на параметров на вызываемой форме диалога?
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Импорт из Эксель через АДО и обновление ячеек Экселя Sada DAX: Программирование 0 23.07.2014 15:43
Финансовый квит производственного заказа. Ах 2009 Rimantas DAX: Программирование 1 07.10.2013 19:58
Импорт КЛАДР Ах 3.0 СП2 HouseNumber Sada DAX: Программирование 5 17.10.2012 16:26
Импорт в АХ через ODBC AXbeginer DAX: Программирование 14 02.10.2009 08:12
Производство: проблема при обработке производственного заказа Asp DAX: Функционал 2 15.04.2004 15:48

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 02:42.