Получение формул из полей формулы Salesforce - PullRequest
0 голосов
/ 28 мая 2020

Я ищу способ получить формулы из полей формул Salesforce. Мы используем драйверы CDATA для подключения к Salesforce. Но я не вижу возможности получить формулы Salesforce.

1 Ответ

2 голосов
/ 28 мая 2020

Не знаю, что такое «драйверы cdata», так что, надеюсь, некоторые из них укажут вам правильное направление.

В Apex вы можете использовать вызовы « описать ». Если все другие параметры не работают - вы можете создать собственный сервис, который возвращает вам эти данные.

Schema.DescribeFieldResult dfr = Account.Address__c.getDescribe();
System.debug(dfr.getCalculatedFormula());
// BillingStreet & BR() & BillingCity & BR() &  BillingPostalCode & BR() &  BillingCountry & BR() &  Street2__c & BR() & Street3__c

Вы пометили API метаданных , поэтому, если вы действительно его используете - аналогичная информация должна быть доступным в нем.

<CustomField>
    <fullName>Address__c</fullName>
    <externalId>false</externalId>
    <formula>BillingStreet &amp; BR() &amp; BillingCity &amp; BR() &amp;  BillingPostalCode &amp; BR() &amp;  BillingCountry &amp; BR() &amp;  Street2__c &amp; BR() &amp; Street3__c</formula>
    <formulaTreatBlanksAs>BlankAsZero</formulaTreatBlanksAs>
    <label>Address</label>
    <required>false</required>
    <trackHistory>false</trackHistory>
    <type>Text</type>
    <unique>false</unique>
</CustomField>

В REST API это похоже, вызов /services/data/v48.0/sobjects/Account/describe вернет (среди прочего)

{
    "aggregatable" : true,
    "aiPredictionField" : false,
    "autoNumber" : false,
    "byteLength" : 3900,
    "calculated" : true,
    "calculatedFormula" : "BillingStreet & BR() & BillingCity & BR() &  BillingPostalCode & BR() &  BillingCountry & BR() &  Street2__c & BR() & Street3__c",
    "cascadeDelete" : false,
    (...)
    "formulaTreatNullNumberAsZero" : true,
    "groupable" : false,
    "highScaleNumber" : false,
    "htmlFormatted" : true,
    "idLookup" : false,
    "inlineHelpText" : null,
    "label" : "Address",
    "length" : 1300,
    "mask" : null,
    "maskType" : null,
    "name" : "Address__c",
    (...)
    "type" : "string",
    "unique" : false,
    "updateable" : false,
    "writeRequiresMasterRead" : false
  }

И, наконец, Tooling API где вы можете запрашивать метаданные, как если бы вы запрашивали обычные таблицы базы данных. Но суть того, что вам нужно, будет скрыто в поле JSON, которое вам нужно будет проанализировать. Если ваш инструмент - это какой-то ETL - проверьте, может ли он запрашивать FieldDefinition таблицу.

/services/data/v48.0/tooling/query?q=SELECT+Metadata+FROM+FieldDefinition+WHERE+EntityDefinitionId+=+'Account'+AND+QualifiedApiName+=+'Address__c'

...