Поле ссылочного объекта в Salesforce Apex Trigger - PullRequest
0 голосов
/ 22 марта 2019

Сообщество Hi Stack Overflow!

Вопрос Noob, но у меня есть триггер Salesforce Chatter, который отправляет сообщение в виде чата каждый раз, когда происходит обновление поля, которое находится в моем поле, установленном на объекте моей учетной записи.Тем не менее, я хочу сослаться на имя учетной записи, URL-адрес и, если что-нибудь, возможность выделять жирным шрифтом / подчеркивать текст в теле сообщения болтовни.

Каков наилучший способ сделать это?Я действительно борюсь и очень нуждаюсь в помощи !!Спасибо !!

Мой код здесь:

trigger AccountChatter on Account (after update) {
    List<Schema.FieldSetMember> lstTrackedFields = SObjectType.Account.FieldSets.AccountChatter.getFields();

    if (lstTrackedFields.isEmpty()) return;

    List<FeedItem> lstFieldChanges = new List<FeedItem>();

    if(!trigger.isUpdate) return;

    for (Account objNewAccount : trigger.new) {
        String chatterPostBody = '';
        final Account oldAccount = trigger.oldmap.get(objNewAccount.Id);
        // Iterate over all fields in Fieldset

        for (Schema.FieldSetMember objField : lstTrackedFields) {
            String fieldName  = objField.getFieldPath();
            String fieldLabel = objField.getLabel();            

            if (objNewAccount.get(fieldName) == oldAccount.get(fieldName))
                continue;

            String oldValue = String.valueOf(oldAccount.get(fieldName));
            String newValue = String.valueOf(objNewAccount.get(fieldName));



            if (oldValue != null && oldValue.length()>255)
                oldValue = oldValue.substring(0,255);

            if (newValue != null && newValue.length()>255)
                newValue = newValue.substring(0,255); 

            //chatter body post - this is where I want to add account name and url
            chatterPostBody += UserInfo.getName()+' changed '+fieldLabel+' from '+oldValue +' to '+newValue+'\n'+'\n';       
        }
        if(String.isNotEmpty(chatterPostBody)){
            FeedItem post = new FeedItem();
            post.ParentId = objNewAccount.Id; // RecordId
            post.Body = chatterPostBody;


            FeedItem groupPost = new FeedItem();
            groupPost.ParentId = '0F94B0000008kd1SAA'; // GroupId
            groupPost.Body = chatterPostBody;

            lstFieldChanges.add(post);
            lstFieldChanges.add(groupPost);
        }
    }



    if (!lstFieldChanges.isEmpty()) insert lstFieldChanges;

}
...