Добавить метод отображения в форме страницы списка

Я хочу добавить метод отображения в источник данных формы страницы списка. Я не могу добавить прямо, потому что источники данных поступают из запроса AOT. Как мне это сделать? Спасибо за помощь заранее. Метод отображения:

public display String255 UserNames()
{
    DirPartyName        partyName;
    DirPersonUser       personUser;
    DirPerson           person;
    UserInfo            userInfo;
    String255           userList = "";



    partyName = DirPersonUser::userId2Name(this.UserId);

    if(partyName)
    {
        while select Name from person
            exists join personUser
                where personUser.PersonParty == person.RecId
                    && personUser.User == this.UserId
        {
            userList += person.Name + ",";
        }
    }

    if (!partyName)
    {
        while select Name from userInfo 
            where userInfo.Id == this.UserId
        {
            userList += userInfo.name + ",";
        } 
    }
        partyName = (select firstonly Name from userInfo where userInfo.Id == this.UserId).Name;
    if (!partyName)
        userList += this.UserId + ",";

    strDel(userList,strLen(userList),1);
    return userList;
}

2 ответа

Решение

У меня было такое же требование, и мы сделали это с реальным физическим полем в таблице TrvExpTable после того, как поле было в таблице, мы заполняем его при открытии страницы списка.

В init() перед super() формы вы можете вызвать этот метод:

public void updateTrvExpTableApprovers()
{
    TrvExpTable             trvExpTable;
    TrvExpTrans             trvExpTrans;
    WorkflowWorkItemTable   workflowItemTable;
    String255               approversNames;
    HcmWorker               HcmWorker;
    DirPersonUser           dirPersonUser;
    Name                    name;

    ttsBegin;
    while select forUpdate trvExpTable where trvExpTable.ApprovalStatus == TrvAppStatus::Pending
    {
        approversNames = "";
        while select userId from workflowItemTable
            where workflowItemTable.RefRecId == trvExpTable.RecId &&
                  workflowItemTable.RefTableId == trvExpTable.TableId &&
                  workflowItemTable.Status == WorkflowWorkItemStatus::Pending
        {
            select firstonly hcmWorker
                join firstonly PersonParty, ValidFrom, ValidTo from dirPersonUser
                    where dirPersonUser.User == workflowItemTable.userId &&
                            hcmWorker.Person == dirPersonUser.PersonParty;
            name = HcmWorker.name();

            if (!name)
            {
                name = workflowItemTable.userId;
            }

            if(approversNames)
            {
                if (!strScan(approversNames, name, 0, 255))
                {
                    approversNames += ', ' + name;
                }
            }
            else
            {
                approversNames = name;
            }
        }

        trvExpTable.ApproversNames = approversNames;
        trvExpTable.update();
    }

    update_recordSet trvExpTable
        setting ApproversNames = ""
        where trvExpTable.ApprovalStatus != TrvAppStatus::Pending && trvExpTable.ApproversNames != "";

    ttsCommit;
}

Это не самый эффективный способ, но в нашем случае он отлично работает уже более года.

Также таким образом пользователь может нажать CTRL+G в этом поле в сетке, что невозможно при использовании методов отображения.

С наилучшими пожеланиями, Кристиан

Почему бы вам не попробовать написать метод отображения в табличном методе, как использовать то же самое на странице списка? Это хороший вариант. Если вы все еще хотите написать метод отображения на уровне источника данных формы, измените метод отображения, как показано ниже.

общедоступное отображение String255 UserNames(DataSourcetablename _tableName) { ....

Используйте _tableName везде, где вы используете "это".

Вы можете ссылаться на форму PurchaseEditLines в стандартном Ax 2012 и увидеть отображение ImageRes backOrder(PurchaseParmLine _purchParmLine).

Для более подробной информации о методе отображения нажмите здесь

Другие вопросы по тегам