Тип базы данных Salesforce Record и сценарий отношений возможностей - PullRequest
2 голосов
/ 19 декабря 2011

Я пытаюсь создать визуальную страницу силы, где вы выбираете возможность, а затем выбираете этапы, связанные с этой возможностью.Возможности сохраняются в таблице RecordTypes, а этапы сохраняются в таблице OpportunityStage.

В какой таблице сохраняются отношения?

1 Ответ

2 голосов
/ 19 декабря 2011

RecordTypes - это не таблица, а буквально набор типов, определенных для конкретного объекта, так что любая запись этого объекта (например, любая возможность) может иметь один из этих типов.По сути, это суперспециальное поле для объекта, которое используется для управления целой кучей поведений - вы можете иметь разные макеты страниц для каждого типа записи, разные значения списка выбора, вы можете настроить правила проверки и т. Д.

Этапыопять же, это «особая» часть конфигурации Salesforce, так как они принадлежат процессу Sales, и я считаю, что доступные значения зависят от типа записи (т. е. они действуют как список выбора).

Короче говоря, выне нужно беспокоиться о каких-либо отношениях между этими полями, в терминах базы данных они являются столбцами таблицы возможностей, в терминах SFDC - полями объекта Opportunity.

Edit После разъяснения требований, т.е. необходимости наличия доступных сценических названий для двух возможностей.

Использование Visualforce легко получить без какой-либо описательной информации.

Убедитесь, что ваши процессы продаж определены и связаны с соответствующимитипы записей для возможностей (звучит какэто уже сделано).Затем просто загрузите необходимые возможности с помощью пользовательского контроллера (или расширения контроллера) - вы можете указать их с помощью параметров страницы, как показано ниже, хотя это надуманный пример и не включает обработку ошибок и т. Д. (Или выбор возможностей):

public with sharing class DualOpptyController
{
    public Opportunity oppty1 {get; set;}
    public Opportunity oppty2 {get; set;}

    public DualOpptyController()
    {
        oppty1 = [select Id, StageName from Opportunity where id = : ApexPages.currentPage().getParameters().get('o1')];
        oppty2 = [select Id, StageName from Opportunity where id = : ApexPages.currentPage().getParameters().get('o2')];
    }
}

Затем просто используйте <apex:inputField>, чтобы поместить поле StageName на страницу:

<apex:page controller="DualOpptyController">
    <apex:form >
        <apex:inputField value="{!oppty1.StageName}"/>
        <apex:inputField value="{!oppty2.StageName}"/>
    </apex:form>
</apex:page>

Если вы хотите выполнить поиск учетных записей, вы можете просто использовать StageName поле на oppty и oppty2 в вашем контроллере.Запрос будет выглядеть примерно так (не проверено):

[Select Id, Name, (select Id, Name from Opportunities where StageName in : liStageNames) from Account]

Конечно, проблема в том, что он вернет ВСЕ учетные записи, поэтому я думаю, что вам лучше будет поискать по Opportunityгде StageName равно значению oppty1, возвращающему соответствующие данные, а также идентификатор связанной учетной записи. затем выполните второй запрос, чтобы найти возможности, в которых StageName равен значению oppty1, а идентификатор учетной записи находится в наборе идентификаторов учетных записей, расположенных в первом запросе.Вы все еще можете столкнуться с проблемами при возврате слишком большого количества записей, поэтому вы можете найти способ усовершенствовать этот метод или указать другие параметры (например, закрытие возможностей в этом месяце).

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