public void modifiedField(fieldId _fieldId) { super(_fieldId); switch (_fieldId) { case (fieldnum(DRT_EnvanterTransTable,EmplID)) : this.EmplName = EmplTable::find(this.EmplID).Name; this.Dimension[1] = EmplTable::find(this.EmplID).Dimension[1]; break; } }
28 Haziran 2018 Perşembe
İlişkili tablodan verileri otomatik çekme | Dynamics Ax
Sizden tablonuzda sicil numarasını seçip persoenelin adı ve departmanı otomatik olarak gelmesi istenirse, aşağıdaki şekilde tablonuzun methodsunda modifiedField'ına yazabilirsiniz.
27 Haziran 2018 Çarşamba
Bir tablodaki alanın adını kodla bulma | Dynamics Ax
26 Haziran 2018 Salı
Display bir alana ilişkili bir tablodan alan getirme | Dynamics Ax
Bir tabloya, viewe vs. display olarak bir alan eklediniz ve bu alanla ilişkili bir alanı çekmek istiyorsanız aşağıdaki gibi yapabilirsiniz.
Eklediğiniz display alan;
İlişkili tablodan çekmek istediğiniz farklı bir alan;
Eklediğiniz display alan;
display VendAccount ETGExImpVendAccount() {;
return PurchTable::find(this.PurchId).OrderAccount;
}
İlişkili tablodan çekmek istediğiniz farklı bir alan;
display VendName ETGExImpVendName() {;
return VendTable::find(this.ETGExImpVendAccount()).Name;
}
25 Haziran 2018 Pazartesi
Tümünü seç, kaldır | Dynamics Ax
Formda kayıtların tümünü seçmek ya kaldırmak istiyorsanız, öncelikle iki adet buton ekleyip ve click methoduna aşağıdaki gibi kodları yazarak yapabilirsiniz.
Tümünü seç yapmak için;
void clicked() { AtmSalesPickingListJournalTable atmtable; AtmSalesPickingListJournalLine atmDetail; ; super(); ttsbegin; while select AtmTable where atmtable.PickingListId == AtmSalesPickingListJournalTable.PickingListId { while select forupdate atmDetail where atmdetail.PickingListDate == atmTable.PickingListDate && atmdetail.PickingListId == atmTable.PickingListId { atmdetail.DIIB = Noyes::Yes ; atmDetail.update(); } } ttscommit; AtmSalesPickingListJournalLine_ds.executeQuery(); }
Tümünü kaldır için;
void clicked() { AtmSalesPickingListJournalTable atmtable; AtmSalesPickingListJournalLine atmDetail; ; super(); ttsbegin; while select AtmTable where atmtable.PickingListId == AtmSalesPickingListJournalTable.PickingListId { while select forupdate atmDetail where atmdetail.PickingListDate == atmTable.PickingListDate && atmdetail.PickingListId == atmTable.PickingListId { atmdetail.DIIB = Noyes::No ; atmDetail.update(); } } ttscommit; AtmSalesPickingListJournalLine_ds.executeQuery(); }
7 Haziran 2018 Perşembe
17 Mayıs 2018 Perşembe
Boyutları güncelleme(Dimension1,2,3,4) | Dynamics Ax
Örneğin satınalma siparişleri formunda boyutları buton yardımı ile güncellemek istediler. Dimension(1,2,3,4,5) Extended'lerde yok. Bunun için öncelikle ilişkili olarak exdended data type'lerin içine hangi boyutların güncellenmesi isteniyorsa tanımlama yapmamız gerekiyor.
Örneğin Dimension3 için resimdeki gibi bir tanımlama yapabilirsiniz;
Aşağıdaki kodu formun methods kısmına yazdıktan sonra istenilen forma bir buton ekleyip, butonun click'ınde bu methodu çağırabilirsiniz.
Örneğin Dimension3 için resimdeki gibi bir tanımlama yapabilirsiniz;
Aşağıdaki kodu formun methods kısmına yazdıktan sonra istenilen forma bir buton ekleyip, butonun click'ınde bu methodu çağırabilirsiniz.
void updateDims() { // Dimensions Değiştirme Dialog d = new Dialog(strfmt("%1 için boyutları düzenle", PurchLine.ETGInventDimCombinationName)); DialogField dlgDimDepartment, dlgDimPerson, dlgDimVehicle, dlgDimPurpose; DialogGroup dlgGroup; InventTrans inventTrans; InventTransPosting inventTransPosting; ; // Dimensions dlgGroup = d.addGroup("@SYS80374"); dlgGroup.widthMode(FormWidth::ColumnWidth); dlgDimDepartment = d.addFieldValue(typeid(DepartmentDimension), PurchLine.Dimension[1], "Departman"); dlgDimPerson = d.addFieldValue(typeid(PersonDimension), PurchLine.Dimension[4], "Personel"); dlgDimVehicle = d.addFieldValue(typeid(VehicleDimension), PurchLine.Dimension[5], "Araç"); dlgDimPurpose = d.addFieldValue(typeid(PurposeDimension), PurchLine.Dimension[3], "Amaç"); if(PurchLine) { d.run(); if (d.closedOk()) { ttsbegin; PurchLine.selectForUpdate(true); PurchLine.Dimension[1] = dlgDimDepartment.value(); PurchLine.Dimension[4] = dlgDimPerson.value(); PurchLine.Dimension[5] = dlgDimVehicle.value(); PurchLine.Dimension[3] = dlgDimPurpose.value(); PurchLine.doupdate(); inventTrans = InventTrans::findTransId(PurchLine.InventTransId); while select forupdate inventTransPosting where inventTransPosting.TransDate == inventTrans.DateFinancial && inventTransPosting.Voucher == inventTrans.Voucher && inventTransPosting.InventTransId == inventTrans.InventTransId { inventTransPosting.Dimension[1] = PurchLine.Dimension[1]; inventTransPosting.Dimension[4] = PurchLine.Dimension[4]; inventTransPosting.Dimension[5] = PurchLine.Dimension[5]; inventTransPosting.Dimension[3] = PurchLine.Dimension[3]; inventTransPosting.doupdate(); } ttscommit; PurchLine_ds.research(true); } } else throw warning ("Öncelikle bir satır girmelisiniz!"); }
Siparişlerde -(eksi) fiyat atması | Dynamics Ax
Siparişlerde girilen birim fiyatın sistem tarafında -(eksi) olarak gelmesini madde kartında bulunan
Fiyata esas alınan miktar alanından yapabilirsiniz.
Fiyata esas alınan miktar alanından yapabilirsiniz.
Bu alan -(eksi) olarak seçildiğinde sipariş satırlarına birim fiyatı -(eksi) olarak gelecektir.
3 Mayıs 2018 Perşembe
Toplu İş | Dynamics Ax
Hergün kayıtlarınızın otomatik olarak hesaplanması, güncellenmesi vs. istenilirse;
Toplu işlerden(Temel > Sorgulamalar > Toplu iş) bunu yapabilirsiniz.
Bunun için öncelikle bir class yazmanız gerekecek. Classta yapmak hergün yapılmasını istediğiniz işin kodunu da aşağıdaki gibi yazabilirsiniz. Bu şartlara göre belirlediğim saatte DRTUserGroupList tablosuna insert etmesini istiyorum.
Class'ın içerisinde aşağıdaki şekilde bir method oluşturuyoruz ve burda çalıştırıyoruz. Aşağıdaki gibi bir ekran karşımıza çıkıyor. Tamam dedikten sonra Toplu işlere eklemiş oluyoruz.
Toplu işler'den de gerekli ayarları yapınca; belirttiğimiz sıktıkta Ax otomatik olarak çalıştıracaktır.
Class'ı indirmek için tıklayın.
Toplu işlerden(Temel > Sorgulamalar > Toplu iş) bunu yapabilirsiniz.
Bunun için öncelikle bir class yazmanız gerekecek. Classta yapmak hergün yapılmasını istediğiniz işin kodunu da aşağıdaki gibi yazabilirsiniz. Bu şartlara göre belirlediğim saatte DRTUserGroupList tablosuna insert etmesini istiyorum.
public void run()
{
UserGroupInfo UserGroupInfo;
UserGroupList UserGroupList;
DRT_UserGroupList DrtUserGroupList;
UserInfo UserInfo;
;
ttsbegin;
delete_from DrtUserGroupList;
while select UserGroupInfo join UserGroupList
where UserGroupInfo.Id == UserGroupList.groupId
{
select UserInfo
where UserInfo.id == UserGroupList.userId;
{
DrtUserGroupList.clear();
DrtUserGroupList.groupId = UserGroupList.groupId;
DrtUserGroupList.userId = UserGroupList.userId;
DrtUserGroupList.GroupName = UserGroupInfo.name;
DrtUserGroupList.company = UserInfo.company;
DrtUserGroupList.UserName = UserInfo.name;
DrtUserGroupList.insert();
}
}
ttscommit;
}
Class'ın içerisinde aşağıdaki şekilde bir method oluşturuyoruz ve burda çalıştırıyoruz. Aşağıdaki gibi bir ekran karşımıza çıkıyor. Tamam dedikten sonra Toplu işlere eklemiş oluyoruz.
static void main(Args _args)
{
DRTUserGroupList DRTUserGroupList = new DRTUserGroupList();
;
if(DRTUserGroupList.prompt())
{
DRTUserGroupList.run();
}
}
Toplu işler'den de gerekli ayarları yapınca; belirttiğimiz sıktıkta Ax otomatik olarak çalıştıracaktır.
Class'ı indirmek için tıklayın.
13 Nisan 2018 Cuma
Oluşturan ve Değişiklik yapanı display olarak getirme | Dynamics Ax
Tablodaki bir kaydı oluşturan(CreatedBy) ya da değiştiren(ModifiedBy) kişinin tam adını görmek istediğinizde aşağıdaki kodlar size yardımcı olacaktır.
display Name dispCreatedByName()
{;
return EmplTable::find(SysCompanyUserInfo::find(this.createdBy).EmplId).Name;}
display Name dispModifiedByName()
{;
return EmplTable::find(SysCompanyUserInfo::find(this.modifiedBy).EmplId).Name;
}
5 Nisan 2018 Perşembe
Formu kullanıcıya göre düzenleme yetkisi (Form Kişiselleştirme)
Ax'ta herhangi bir form üzerinde sağ tık > Kurulum yetkisini vermek için;
Yetkilerden Güvenlik > Yönetim > Çeşitli > Form Kişiselleştirme
Buradan yetkiyi verebilirsiniz.
Yetkilerden Güvenlik > Yönetim > Çeşitli > Form Kişiselleştirme
Buradan yetkiyi verebilirsiniz.
3 Nisan 2018 Salı
Kayıtları excelden içeri aktarma | Dynamics Ax
Exceldeki verilerinizi direk olarak kendiniz seçebileceğiniz aşağıdaki job örneği işinizi kolaylaştırabilir.
void CreateLedgerBudgetFromExcel()
{
#Excel
#AviFiles
Dialog dialog = new Dialog("@ETG83");
DialogField dialogPath;
FilenameFilter filter = ['Excel files 2010','*.xlsx','Excel files 2003', '*.xls' ];
FilenameOpen filePath;
SysExcelApplication application;
SysExcelWorkBooks workBooks;
SysExcelWorkBook workBook;
SysExcelWorkSheets workSheets;
SysExcelWorkSheet workSheet;
SysExcelCells cells;
SysOperationProgress progress;
Int NoofSheet,i,lastRow,sn;
LedgerTable ledgerTable;
LedgerBudget ledgerBudget;
SysExcelRange range;
void findLastRow(SysExcelWorkSheet _workSheet)
{
#define.Star('*')
#define.Space(' ')
;
range = _workSheet.cells().range(#ExcelTotalRange);
try
{
// Finds the row where the first contents is found.
range = range.find(#Star, null, #xlFormulas, #xlWhole, #xlByRows, #xlPrevious);
}
catch (Exception::Error)
{
error("@SYS59926");
}
if (range)
{
lastRow = range.row();
}
else
{
lastRow = 0;
}
}
;
dialog.filenameLookupFilter(filter);
dialogPath = dialog.addField(typeid(FilenameOpen));
if (dialog.run())
{
if(dialog.closedOk())
{
filePath = dialogPath.value();
application = SysExcelApplication::construct();
application.visible(false);
workBooks = application.workbooks();
workBooks.open(filePath,0,true);
workSheets = workBooks.item(1).worksheets();
noOfSheet = worksheets.count();
progress = new SysOperationProgress();
progress.setCaption("Vendor Importing");
progress.setTotal(lastRow);
progress.setAnimation(#AviTransfer);
setprefix("Vendor Import");
try
{
For( i = 1; i <= noOfSheet; i++)
{
workSheet = workSheets.itemFromNum(i);
if(workSheet)
{
findLastRow(workSheet);
for(sn = 2;sn <= lastrow;sn++)
{
ttsbegin;
cells = workSheet.cells();
ledgerBudget.clear();
cells = workSheet.cells();
ledgerBudget.ModelNum = cells.item(sn,1).value().bStr();
// ledgerBudget.RevisionDate = cells.item(sn,2).value().date();
ledgerBudget.AccountNum = cells.item(sn,2).value().bStr();
ledgerTable = LedgerTable::find(cells.item(sn,3).value().bStr());
if(ledgerTable)
{
ledgerBudget.TaxGroup = ledgerTable.TaxGroup;
ledgerBudget.Comment = ledgerTable.AccountName;
}
ledgerBudget.Dimension[1] = cells.item(sn,4).value().bStr();
ledgerBudget.Dimension[4] = cells.item(sn,5).value().bStr();
ledgerBudget.Dimension[5] = cells.item(sn,6).value().bStr();
ledgerBudget.StartDate = cells.item(sn,7).value().date();
ledgerBudget.Currency = cells.item(sn,8).value().bStr();
ledgerBudget.Amount = cells.item(sn,9).value().double();//cells.item(sn,9).value().currency();
ledgerBudget.DRTBudgetResponsible = cells.item(sn,10).value().bStr();
ledgerBudget.insert();
ttscommit;
}
}
//LedgerBudget_ds.executeQuery();
}
}
catch
{
ttsabort;
application.quit();
}
}
}
}
Kaydol:
Kayıtlar (Atom)
Total ciro
static void MAA_SalesTableTotal(Args _args) { SalesTable SalesTable; utcDateTime dateTime; dateTime ...
-
Dynamic Ax 2009'da Kullanıcı Grupları ve Kullanıcıları Bir Forma Çekip Kullanma Dynamics Axapta 2009'da kullanıcı grupları ve iç...
-
Aşağıdaki hatayı aldığınızda, İlk olarak kullanıcının şirketini DAT olarak değiştirin, kullanıcının hesabından giriş yapın, sonrasında k...
