Получение формул из полей формулы Salesforce
Я ищу способ получить формулы из полей формул Salesforce. Мы используем драйверы CDATA для подключения к Salesforce. Но я не вижу возможности получить формулы Salesforce.
2 ответа
Понятия не имею, что такое "драйверы 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 & BR() & BillingCity & BR() & BillingPostalCode & BR() & BillingCountry & BR() & Street2__c & BR() & 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'
Драйвер CData Salesforce предоставляет представление под названием «Формулы», к которому вы можете запросить, чтобы получить доступное определение формулы. Документация: https://cdn.cdata.com/help/RFJ/jdbc/pg_table-formulas.htm .