如何查找系统用户

时间:2017-01-21 11:09:46

标签: axapta microsoft-dynamics x++ dynamics-ax-2009

我有一个必须从InfostartupPost方法触发的表单,因为它必须验证条件,如果条件为真(如果它是用户&# 39;生日那天,然后触发我的表格  我发现验证用户的BDay的唯一方法是从EmplTable获取它。另外,我需要在EmplTableUserInfoSysUserInfo表之间进行关联,以便为我提供用户ID。
 问题是我没有找到一种正确的方法来关联表格,因为在我的EmplTable我有一个DEL_userId字段,它没有填充而没有使用。  总之,来自以下代码块的if块不会被执行。  我还故意没有声明emplTable变量,因为我不确定什么是最好的声明方式。

提前感谢任何想法的人!

void startupPost()
{
    EmplTable           emplTable     ; //intentionally left undeclared

    int                 dayOfBirth    = dayOfMth(emplTable.BirthDate);
    int                 monthOfBirth  = mthOfYr(emplTable.BirthDate);
    int                 dayOfMonth    = dayOfMth(systemdateget());
    int                 monthOfYear   = mthOfYr(systemdateget());
    str                 emplName      = emplTable.name();
    Args                args          = new Args(); //formrun
    FormRun             formrun;
    ;

    if (dayOfBirth == dayOfMonth && monthOfBirth == monthOfyear )
    {
        info("ok"); //just to verify if my loop is working
        new MenuFunction(menuitemDisplayStr(NET_PALIN_001_HBDay),   MenuItemType::Display).run();
        //        args.name(formStr(NET_PALIN_001_HBDay));
        //        formRun = classFactory.formRunClass(args);
        //        formRun.init();
        //        formrun.run();
    }
}

1 个答案:

答案 0 :(得分:1)

查看表格SysCompanyUserInfo,该表格将系统用户从UserInfo映射到EmplTable的员工。
下面是一个示例,用于查找当前用户的EmplTable(如果存在)的相关记录

static void FindCurUserEmplTable(Args _args)
{
    EmplId emplId;
    EmplTable emplTable;
    ;

    emplId = EmplTable::userId2EmplId(curuserid());
    if (emplId != '')
    {
        emplTable = EmplTable::find(emplId);
        // ... your birthday logic
    }
}