// sadece bir gruba yetki verirken kullanılır. static void MAA_ChangeAccess_OneGroup(Args _args) { SecurityKeySet swSysSecurity; UserGroupList userGroupList; DomainInfo domainInfo; #admin ttsbegin; while select domainInfo //where domainInfo.id == #AdminDomain //sadece belirli domainler için çalıştırmak istersen { while select userGroupList where userGroupList.groupId == "10-03" { swSysSecurity = SysSecurity::constructSecurityKeySet(); swSysSecurity.loadGroupRights(userGroupList.groupId, domainInfo.id); swSysSecurity.tableAccess(tablenum(VENDBANKACCOUNT), AccessType::View); // tabloya yetki swSysSecurity.menuItemAccess("ETGCustRiskLimitUpdateAppApproval", AccessRecordType::MenuItemAction, AccessType::View); // menuye yetki xAccessRightsList::saveSecurityRights(swSysSecurity.packTouched(), userGroupList.groupId, domainInfo.id); } } ttscommit; info("tamamlandı"); }
25 Ocak 2018 Perşembe
Kodla bir gruba menuye ve tabloya yetki verme
Ax'ta bir kullanıcı grubuna, istediğiniz forma ya da tabloya yetki vermek için aşağıdaki kodu çalıştırabilirsiniz.
Verileri Excelle Aktarma
Verilerinizi excelle aktarmak için. bir buton ekleyip click'ine aşağıdaki kodu eklededikten sonra;
void clicked() { super(); element.updateFromExcel(); DRTCreateProdDemandsTable_ds.query().dataSourceTable(tablenum(DRTCreateProdDemandsTable)).sortClear(); DRTCreateProdDemandsTable_ds.query().dataSourceTable(tablenum(DRTCreateProdDemandsTable)).addSortField(fieldNum(DRTCreateProdDemandsTable,Qty),SortOrder::Descending); DRTCreateProdDemandsTable_ds.executeQuery(); }Formun methods kısmına kodları eklediyip excelinizdeki verileri aktarabilirsiniz.
void updateFromExcel() { #Excel #AviFiles Dialog dialog = new Dialog("Excel veri aktarma"); 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; SysExcelRange range; Int NoofSheet,i,lastRow,sn; DRTCreateProdDemandsTable ProdDemandsTable; 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("Plan aktarılıyor"); progress.setTotal(lastRow); progress.setAnimation(#AviTransfer); setprefix("Plan aktarımı başladı"); 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(); ProdDemandsTable.clear(); select forupdate ProdDemandsTable where ProdDemandsTable.itemid == cells.item(sn,1).value().bStr(); if ( ProdDemandsTable.RecId ) { ProdDemandsTable.Qty = cells.item(sn,2).value().double(); ProdDemandsTable.Notes = cells.item(sn,3).value().bStr(); ProdDemandsTable.ConfigId = cells.item(sn,4).value().bStr(); ProdDemandsTable.InventSizeId = cells.item(sn,5).value().bStr(); ProdDemandsTable.InventColorId = cells.item(sn,6).value().bStr(); ProdDemandsTable.InventDimId = cells.item(sn,7).value().bStr(); // MAA ProdDemandsTable.ETGGroupId2 = cells.item(sn,8).value().bStr(); ProdDemandsTable.InventDimCombinationName = cells.item(sn,9).value().bStr(); ProdDemandsTable.InventSizeName = cells.item(sn,10).value().bStr(); ProdDemandsTable.doupdate(); } else info(strfmt("%1 bulunamadı.", cells.item(sn,1).value().bStr())); ttscommit; } } } } catch { ttsabort; application.quit(); } } } }exceli görmek için tıklayın.
Oluşturma tarihini display olarak farklı bir forma ekleme
Örneğin sizden satış siparişinin oluşturma tarihini farklı bir formda isteniyorsa display olarak aşağıdaki şekilde ekleyebilirsiniz.
display utcDatetime dispSalesCreateDate() { return salestable::find(SalesLine::findInventTransId(this.InventTransId).SalesId).createdDateTime; }
18 Ocak 2018 Perşembe
Dynamics Ax | Deftere nakli kontrollü hale getirebilirsiniz.
Kullanıcılar girdikleri siparişleri Deftere naklederken yetkisi varsa farkında olmadan PurchParmTable'da beklemede tikini kaldırmaya yetkisi varsa;
farkında olmadan bu alanı tikleyip faturalaştırabilirler. Bu da muhasebesel açıdan çok büyük bir probleme yol açabilir.
Bir tablodaki alanın yetkisini yönetmek daha zor olduğu için tablodan düzenlemeye kapattıktan sonra, beklemede alanın görevini bir butona verip yetkisini de ilgili departmana verirseniz yönetmeniz daha kolay olabilir.
Beklemede butonunun click method'una kodları yazdığınızda tikleme görevini buton yapacaktır.
Butonun yetkilerini de aşağıdaki gibi SecurityKey ve ConfigurationKey'den verebilirsiniz.
Bu konuyla ilgili farklı bir önlemi daha inceleyebilirsiniz.
void clicked() { super(); element.hold(); }
void hold() //MAA 10.01.2017 { PurchTable purchTbl; if ((PurchTable::find(PurchParmTable.PurchId).PurchId == PurchParmTable.PurchId) && PurchParmTable.ETGHold == NoYes::Yes) { PurchParmTable.ETGHold =NoYes::No; PurchParmTable.doUpdate(); } }
Butonun yetkilerini de aşağıdaki gibi SecurityKey ve ConfigurationKey'den verebilirsiniz.
Bu konuyla ilgili farklı bir önlemi daha inceleyebilirsiniz.
Kaydol:
Kayıtlar (Atom)
Total ciro
static void MAA_SalesTableTotal(Args _args) { SalesTable SalesTable; utcDateTime dateTime; dateTime ...
-
Dynamics Ax Microsoft’un orta ve büyük ölçekli işletmelerin ihtiyaçlarını karşılamak için tasarladığı temel iş çözümüdür. Veritabanı yöne...
-
Veri Filtreleme CTRL+F Geçerli alanı filtrelemek için kullanılır. Ekran açılır. Hangi alan üzerine tıklandı ise o alan için filtreleme k...