16 Aralık 2016 Cuma

Yetkileri, Kullanıcı Grubu ve Kişilerini Bir Formda Toplama

Dynamic Ax 2009'da Kullanıcı Grupları ve Kullanıcıları Bir Forma Çekip Kullanma


Dynamics Axapta 2009'da kullanıcı grupları ve içindeki kullanıcılar aynı tabloda tutulmadığı için, bir kullanıcının hangi grupta olduğunu ancak kullanıcı gruplarından bakıp tek tek görebiliyoruz.

Birçok kullanıcı ve grup olduğunu düşünürsek tek tek bakmak sıkıcı olabiliyor.

Öncelikle verileri bir alanda toplamak için  MAA_UserGroupList adında yeni bir tablo oluşturdum.

Kullanıcı grubu için gerekli bilgileri UserGroupListUserGroupInfo, UserInfo tablolarından çekeceğiz.
UserGroupList'ten  groupId ve userId alanlarını, UserGroupInfo'dan name ve company,  UserInfo'dan name alanlarına ulaşıp kendi oluşturduğumuz MAA_UserGroupList  tablosuna verileri çekeceğiz.
Bu tabloları standart Tables'ın içinden göremiyoruz.


Projemize bir form ve DataSource'una MAA_UserGroupList  tablosunu ekliyoruz.
Verileri çekmemiz için forma buton ekliyoruz.

Butonun click metoduna aşağıdaki kodu;

void clicked()
{
    element.getuser(); // buton tıklandığında getuser metodu çalışacak
    MAA_UserGroupList_ds.research(); // Güncel veriler eklendiğinde otomatik refresh yapar.
}

getuser kısmına da aşağıdaki kodu ekliyoruz;

void getuser()
{
      UserGroupInfo       UserGroupInfo;
      UserGroupList       UserGroupList;
      MAA_UserGroupList   maa_UserGroupList ;
      UserInfo            UserInfo;
      ;
delete_from maa_UserGroupList ;
    while select UserGroupInfo join UserGroupList
        where UserGroupInfo.Id == UserGroupList.groupId
         {
            select  UserInfo
                where  UserInfo.id == UserGroupList.userId;
                    {
                         maa_UserGroupList .clear();
                         maa_UserGroupList .groupId   =  UserGroupList.groupId;
                         maa_UserGroupList .userId    =  UserGroupList.userId;
                         maa_UserGroupList .GroupName =  UserGroupInfo.name;
                         maa_UserGroupList .company   =  UserInfo.company;
                         maa_UserGroupList .UserName  =  UserInfo.name;
                         maa_UserGroupList .insert();
                     }
             info(strfmt("%1 %2 %3 %4", maa_UserGroupList .groupId, maa_UserGroupList .userId, maa_UserGroupList .GroupName, maa_UserGroupList .UserName));
          }
}

Burada istediğimiz verileri tablomuza çektik ve formumuza da eklenmiş oldu. Artık hangi grupta kim var ya da bir kişi hangi grup ya da gruplarda görebiliriz.

Bu forma başka neler ekleyebiliriz?

Formda işimizi daha da kolaylaştıracak, İzinler(kişinin ya da grubun yetkilerini ayarladığımız alan)
ve Kayıt düzeyi güvenliği menülerinin Relation'unu ayarlayıp ekleyebilirsiniz.

Bu sayede yetki kontollerini tek formda birleştirip yapabilirsiniz.





1 Aralık 2016 Perşembe

Ana Tablo Formuna Git | Dynamic Ax 2009

Örneğin sizden Teminat Mektuplarında AccountNum alanından CustTable'daki CustAccount alanına gidilmesi istendi.

Formun Data Source'undaki ilgili alanın methots'unda jumpRef'ini Yöntemi gereçersiz kıl diyerek aşağıdaki kodu eklemeniz yeterli olacaktır.
public void jumpRef()
  {
    CustTable custTableMainTable;
    Args args;
    MenuFunction menuFunction;
    ;
    args = new Args();
    args.caller(element);
    args.lookupfield(FieldNum(CustTable,AccountNum));
    args.lookupValue(ETGCollateralTable.AccountNum);
    menuFunction = new MenuFunction(MenuItemDisplayStr(custTable),MenuItemType::Display);
    menuFunction.run(args);
  }

Total ciro

static void MAA_SalesTableTotal(Args _args) { SalesTable SalesTable; utcDateTime dateTime; dateTime ...