SalesForce: связывание настраиваемого поля и данных об активности аккаунта - PullRequest
1 голос
/ 28 октября 2011

Я постепенно знакомлюсь с Salesforce и пытаюсь связать некоторые поля между учетными записями и возможностями и т. Д.

Моя текущая проблема связана с информацией об активности учетной записи.У меня есть набор учетных записей, которые показывают данные и данные, связанные с учетной записью, такие как:

Владелец учетной записи Имя учетной записи Тип Веб-сайт Номер телефона и многое другое ...

В этой учетной записи у нас есть каналдействия, которые дают подробности телефонных звонков, встреч или электронных писем, которые ссылаются на учетную запись.Каждое событие в деятельности учетной записи имеет поле Type, которое либо: Встреча, Звонок или Электронная почта.

Я пытаюсь создать настраиваемое поле в основной учетной записи, которое просматривает активность учетной записи,и отображает дату последней встречи, поэтому с точки зрения кода sudo это будет что-то вроде:

SELECT DueDate WHERE type=Meeting and DueDate <= TODAY()

или что-то в этом роде (я знаю, что это в основном SQL).

Если бы кто-нибудь мог помочь, это было бы замечательно, особенно к 5 часам вечера, когда мой начальник сказал, что купит мне пинту, если я выясню это!

Спасибо всем.

---------- РЕДАКТИРОВАТЬ ---------

Я пытаюсь что-то вроде этого:

CASE (TEXT (Activity.Type), Meeting, TODAY- LastActivityDate)

при создании поля формулы customme, поэтому я пытаюсь добраться до поля Event с именем Type, выполнив:

Activity.Type

Это не работает, ноэто было предположение, которое было взято из LastActivityDate.Возможно, я все об этом ошибаюсь, так что все поможет.ура!

---------- РЕДАКТИРОВАТЬ ---------

Это изображение поля, к которому я пытаюсь получить доступЯ не могу найти какой-либо способ доступа к этому Type полю

1 Ответ

0 голосов
/ 25 апреля 2012

Вы не можете сделать это с формулой, и вы действительно не можете использовать поле LastActivityDate, потому что оно отслеживает ВСЕ типы событий, а не только «Встреча».

Один из способов сделать это - создать триггер после вставки / обновления для объекта Event, который обновит поле «Last_Meeting_Date__c» в учетной записи (вам необходимо создать это поле).1003 *

Вот код:

trigger EventUpdateAccountMeetingDate on Event (after insert, after update) {
        Map<String,Date> acctToDate = new Map<String,Date>();
    for(Event e : Trigger.new){
        if(e.Type=='Meeting' && e.AccountId!=null && (!acctToDate.containsKey(e.AccountId) || acctToDate.get(e.AccountId) < e.activityDate)){
                acctToDate.put(e.accountId, e.activityDate);
        }
    } 
    if(acctToDate.size()>0){
        List<Account> accts = [select id, Last_Meeting_Date__c from Account where id in :acctToDate.keyset()];
        List<Account> acctsToUpdate = new List<Account>();
        for(Account a : accts){
            if(a.Last_Meeting_Date__c==null || a.Last_Meeting_Date__c<acctToDate.get(a.id)){
                a.Last_Meeting_Date__c = acctToDate.get(a.id);
                acctsToUpdate.add(a);
            }
        }
        if(acctsToUpdate.size()>0){
            update acctsToUpdate;
        }
    }
}

Я не пытался развернуть его, поэтому не уверен, попросит ли вас увеличить покрытие кода для этого триггера.Возможно, вам придется создать тестовый класс для него.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...