|
11.03.2011, 14:11 | #1 |
Участник
|
fatihdemirci: Axaptada txt dosya okuyup SalesLine’ a kayıt atmak
Источник: http://www.fatihdemirci.net/index.ph...a-kayit-atmak/
============== Merhaba Daha önce txt formatında bir dosyayı okumakla ilgili bir makale yazmıştım. Buradan okuyabilirsiniz. Aynı örneği biraz geliştirdim. Öncelikle dosyayı diyalogtan alıyoruz ve tab ile ayrılmış halini pars edip container a atıyoruz. Daha sonra burdaki satırlardan SalesLine oluşturuyoruz. Örnek text dosyamız böyle olsun boşluklar tab. Editorden dolayı burada net anlaşılamıyor. Код: NameAlias Name Vergi Adet Fiyat 40306445 DAVIDOFF GOLD 0 2.00 14.00 40318523 KENT WHITE 0 1.00 7.00 40329055 CAMEL KISA BOX 8 7.00 18.00 X++: void TxtTransfer() { FileName fileName ; container c; FileIOPermission permission; TextBuffer textBuffer; str readText; str readLine , strlineamount; int etgline ; int i = 0; Dialog dialog = new Dialog(Dosya iniz.); DialogField dfFileName; SalesLine txtSalesLine; InventTable inventTable; InventItemSalesSetup InventItemSalesSetup; InventDim txtinventDim; Amount lAmount,KDV; ; #File dfFileName = dialog.addField(typeId(FileNameOpen)); dialog.filenameLookupFilter(["All files", #AllFiles]); if (dialog.run()) { fileName = dfFileName.value(); permission = new FileIOPermission(fileName, ); permission.assert(); textBuffer = new TextBuffer(); textBuffer.fromFile(fileName); readText = textBuffer.getText(); etgline = textBuffer.numLines(); while(i < etgline) { readLine = strLine(readText, i); // bir satırı okuyoruz c = str2con(readLine,); // tab a göre ayırıp container a atiyoruz // info(strFmt(“%1 %2 %3 %4 %5″, conPeek(c, 1), conPeek(c, 2),conPeek(c, 3),conPeek(c, 4) ,conPeek(c, 5))); inventTable = InventTable::findbyNameAlias(conPeek(c, 1)); // text dosyasındaki ilk alan InventTableNameAlias alanına denk geliyor bu yüzden findbyNameAlias adında bir metod yazdım sizinde bunu yazmanız gerekmekte if(inventTable.RecId) { txtSalesLine.clear(); txtSalesLine.SalesId =SalesTable.SalesId; txtSalesLine.initFromInventTable(inventTable); txtSalesLine.initFromSalesTable(salesTable); txtSalesLine.ItemId = inventTable.ItemId; InventItemSalesSetup = InventItemSalesSetup::findNotDefault(inventTable.ItemId); txtinventDim.clear(); // inventdim oluşturacağız txtinventDim.InventSiteId = inventDim::find(InventItemSalesSetup.InventDimId).InventSiteId; txtinventDim.InventLocationId = inventDim::find(InventItemSalesSetup.InventDimIdDefault).InventLocationId; txtinventDim = InventDim::findOrCreate(txtinventDim); txtSalesLine.InventDimId = txtinventDim.inventDimId; if(conPeek(c, 3) == 8 ) // vergi grubunu elle girmek zorunda kaldık siz kendi kodunuza göre değiştirmelisiniz txtSalesLine.TaxItemGroup = % ; else if(conPeek(c, 3) == 18) txtSalesLine.TaxItemGroup = % ; else txtSalesLine.TaxItemGroup = ; lAmount = conPeek(c, 5); KDV = conPeek(c, 3); strlineamount = conPeek(c, 5); strReplace(strlineamount, ., ,); if(KDV != 0) lAmount = any2real(strlineamount) /((KDV / 100) + 1 ) ; // txt dosyasındaki fiyatar kdv li olduğu için kdv siz fiyatı bulup onu yazıyoruz else lAmount = any2real(strlineamount); txtSalesLine.QtyOrdered = conPeek(c, 4) ; txtSalesLine.LineAmount = lAmount ; txtSalesLine.createLine(); } i++; } info(m r.); salesLine_ds.executeQuery(); } } Источник: http://www.fatihdemirci.net/index.ph...a-kayit-atmak/
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору. |
|
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|