Регистрация  |  Вход

Recalculating Formula Fields in Apex Using recalculateFormulas()

Блин, век живи, век учись!

Столько работаю а про эту штуку узнал только что (может кому будет тоже полезно)

Recalculating Formula Fields in Apex Using recalculateFormulas()

Помню костыли приходилось писать с update+SOQL. Что-то и подумать не мог что все уже придумано давно.

Надо по ходу садиться и вычитывать все стандартные классы и их методы.
Блин, век живи, век учись! 

Столько работаю а про эту штуку узнал только что (может кому будет тоже полезно)

[url=https://www.linkedin.com/pulse/recalculating-formula-fields-apex-using-aneequr-rahman-2zpec/]Recalculating Formula Fields in Apex Using [b]recalculateFormulas()[/b][/url]

Помню костыли приходилось писать с update+SOQL. Что-то и подумать не мог что все уже придумано давно.

Надо по ходу садиться и вычитывать все стандартные классы и их методы.


прикольно, те происходит пересчет формулы на записи прямо в коде, до того как ее апдатировать (чего вообще может и не случится)

а если это новая запись в коде, еще или никогда не созданная? а если сделать специальный объект с самыми часто используемыми в коде вычислениями и использовать его как utility class для вычислений? он лучше только тем что апдейт самих формул можно делать не трогая кода
прикольно, те происходит пересчет формулы на записи прямо в коде, до того как ее апдатировать (чего вообще может и не случится)

а если это новая  запись в коде, еще или никогда не созданная? а если сделать специальный объект с самыми часто используемыми в коде вычислениями и использовать его как utility class для вычислений? он лучше только тем что апдейт самих формул можно делать не трогая кода
Dmitry Shnyrev
может кому будет тоже полезно

я как раз искал решение для этого
изменил формулу в Case object, но из за того что данные не поменялись, Data Cloud не видит изменений и не переносит это в Data Cloud objects (DC Stream, DMO).

Спасибо
[quote="Dmitry Shnyrev"] может кому будет тоже полезно[/quote]

я как раз искал решение для этого :surprised:
изменил формулу в Case object, но из за того что данные не поменялись, Data Cloud не видит изменений и не переносит это в Data Cloud objects (DC Stream, DMO).

Спасибо
Eric
изменил формулу в Case object, но из за того что данные не поменялись, Data Cloud не видит изменений и не переносит это в Data Cloud objects
а можно поподробнее, и как именно это связано с описанной ситуацией
[quote="Eric"]изменил формулу в Case object, но из за того что данные не поменялись, Data Cloud не видит изменений и не переносит это в Data Cloud objects[/quote]
а можно поподробнее, и как именно это связано с описанной ситуацией
Den Brown
а можно поподробнее, и как именно это связано с описанной ситуацией

когда это только в самом Salesforce, то select FormulaField__c запускает формулу.
в моём случае Data Cloud берет case records только которые изменились(SystemModStamp changed), так чтоб получить данные которые изменились, обычно надо запустить какой нибудь mass update.

recalculateFormulas() возможно делает это попроще - short apex code in anonymous window.
[quote="Den Brown"]а можно поподробнее, и как именно это связано с описанной ситуацией[/quote]

когда это только в самом Salesforce, то select FormulaField__c запускает формулу.
в моём случае Data Cloud берет case records только которые изменились(SystemModStamp changed), так чтоб получить данные которые изменились, обычно надо запустить какой нибудь mass update. 

recalculateFormulas() возможно делает это попроще - short apex code in anonymous window.

Eric
recalculateFormulas() возможно делает это попроще - short apex code in anonymous window.
Насколько я понял recalculateFormulas не делает ничего с самими записями в базе данных. Этот метод просто пересчитывает значение Formula полей на лету. Тем самым SystemModStamp не обновляется. Это и имел в виду Den - оно тебе не поможет в случае с Data Cloud.

Эта штука полезна когда у темя formula_field__с = field_1__с + field_2__с. Ты изменил в коде field_1 или field_2 и хочешь видеть новый formula_field__с без сохранения записи в базу с последующим запросом.
[quote="Eric"]recalculateFormulas() возможно делает это попроще - short apex code in anonymous window.[/quote]
Насколько я понял recalculateFormulas не делает ничего с самими записями в базе данных. Этот метод просто пересчитывает значение Formula полей на лету. Тем самым SystemModStamp не обновляется. Это и имел в виду Den - оно тебе не поможет в случае с Data Cloud. 

Эта штука полезна когда у темя formula_field__с = field_1__с + field_2__с. Ты изменил в коде field_1 или field_2 и хочешь видеть новый formula_field__с без сохранения записи в базу с последующим запросом.
Dmitry Shnyrev
Это и имел в виду Den - оно тебе не поможет в случае с Data Cloud.

теперь понятно.

я сделал формулу внутри Data Cloud - работает
[quote="Dmitry Shnyrev"]Это и имел в виду Den - оно тебе не поможет в случае с Data Cloud.[/quote]

теперь понятно.

я сделал формулу внутри Data Cloud - работает 
раз пошел разговор про Data Cloud то есть такой сценарий:

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

и Data Cloud кажется подходящим вариантом для этой работенки. Но дело в том, что в конечном итоге эти провайдеры должны стать Эккаунт записями - со всем вытекающий функционалом вроде контакты, которые можно конвертировать к коммунити юзеров.

поэтому вопрос - стоит ли связываться с Data Cloud?
раз пошел разговор про Data Cloud то есть такой сценарий:

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

и Data Cloud кажется подходящим вариантом для этой работенки. Но дело в том, что в конечном итоге эти провайдеры должны стать Эккаунт записями - со всем вытекающий функционалом вроде контакты, которые можно конвертировать к коммунити юзеров.

поэтому вопрос - стоит ли связываться с Data Cloud? 
Или здесь проще использовать какой-то традиционный ETL тул, который создает/апдатирует Эккаунты?
Или здесь проще использовать какой-то традиционный ETL тул, который создает/апдатирует Эккаунты?
Den Brown
поэтому вопрос - стоит ли связываться с Data Cloud?
ответил в отдельной теме:
https://salesforce-developer.ru/data-clo ... 33446752
[quote="Den Brown"]поэтому вопрос - стоит ли связываться с Data Cloud?[/quote]
ответил в отдельной теме:
https://salesforce-developer.ru/data-cloud-1763133446752