Могу ли я создать таблицу sql, заполненную объектами Salesforce? - PullRequest
0 голосов
/ 14 октября 2019

предлагает ли Salesforce способ получить все объекты, такие как учетная запись, контакт и т. Д., И заполнить их в таблице SQL определенными столбцами, такими как ObjectEntity, FieldName, FieldType?

1 Ответ

0 голосов
/ 14 октября 2019

Я уверен, что единственный способ добиться этого - использовать Schema.sObjectType и Schema.sObjectField. Вот ссылка на документацию для получения всех sObjects . В основном вы вызовете метод Schema.getGlobalDescribe(), который вернет вам карту sObjectTypes с именем sObject в качестве ключа. Затем вам нужно будет вызывать getDesribe() для каждого sObjectType, чтобы получить поля объекта из этого результата Describe. Вам снова нужно будет вызывать getDescribe() для каждого sObjectField, чтобы получить доступ к нужным столбцам (например, FieldType). Вот документация по этому вопросу Вы можете сохранить каждый DescribeFieldResult в список, который переходит в Map> с именем sObject в качестве ключа, тогда вы можете делать с ними все, что хотите ... Поместите их встол, если хотите. Имейте в виду, что это все будет очень дорого, когда дело доходит до процессорного времени. Вы можете даже столкнуться с некоторыми ограничениями губернатора. Вот небольшой пример, который вы можете запустить, используя Execute Anonymous в консоли разработчика, где имя sObject и все его имена и типы полей печатаются в журналах отладки

Map<String, sObjectType> objects = Schema.getGlobalDescribe();
for(String objName : objects.keySet()){
    system.debug('=======' + objName + '=========\n Fields: ');
    sObjectType o = objects.get(objName);
    DescribeSobjectResult oDRes = o.getDescribe();
    Map<String, Schema.SObjectField> fields = dResult.fields.getMap();
    for(Schema.SObjectField f : fields.values()){
        DescribeFieldResult fDRes = f.getDescribe();
        system.debug('name: ' + fDRes.getName() + ' | type: ' + fDRes.getType());
    }
}

Надеюсь, это поможет

...