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

System.DmlException: Operation failed due to fields being inaccessible on Sobject XXXXX, check errors on Exception or Result!

System.DmlException: Operation failed due to fields being inaccessible on Sobject XXXXX, check errors on Exception or Result!

Что-то последнее время с тестами не ладится. То валятся на сандбоксе тесты, копипаст со старых, то падают на проде, хотя на сандбоксе работаеют. Ошибка какая то странная. Тесты запускаются от админа, поля имеются (на орге или в составе ченжсета).

С новыми тестами решается понижением версии API, с ченжсетом пока не разобрался. Приходится вручную поля/объекты создавать на проде и только потом заливать все остальное ченжсетом.

Кто сталкивался? Это я так понимаю связано изменениями в последних apiVersion? Раньше никогда с такими ошибками не сталкивался хотя тестов тонна и создаются они в основном как копипаст - ничего нового чтобы такую ошибку словить не было.
System.DmlException: Operation failed due to fields being inaccessible on Sobject XXXXX, check errors on Exception or Result!

Что-то последнее время с тестами не ладится. То валятся на сандбоксе тесты, копипаст со старых, то падают на проде, хотя на сандбоксе работаеют. Ошибка какая то странная. Тесты запускаются от админа, поля имеются (на орге или в составе ченжсета).

С новыми тестами решается понижением версии API, с ченжсетом пока не разобрался. Приходится вручную поля/объекты создавать на проде и только потом заливать все остальное ченжсетом. 

Кто сталкивался? Это я так понимаю связано изменениями в последних apiVersion? Раньше никогда с такими ошибками не сталкивался хотя тестов тонна и создаются они в основном как копипаст - ничего нового чтобы такую ошибку словить не было.
это однозначно FLS/CRUD - Field Level Security. важно также с каким юзером запускается (System.runAs)
с какой версией бежит тест и на какую ты меняешь?

скорей всего это связано с enforcement FLS в Apex-тестах
(тестовый код исполняется с реальными правами пользователя вместо полного доступа, если явно не обёрнут в System.runAs с системным контекстом, либо если класс/триггер не помечен without sharing/использует Security.stripInaccessible проверки).


Начиная с API v67.0, обычные update/insert/Database.*, статические SOQL/SOSL и Search по умолчанию выполняются в User Mode вместо System Mode.

При v66 и ниже DML остаётся в System Mode (FLS/CRUD игнорируются), при v67+ включается User Mode.

https://developer.salesforce.com/docs/at ... nges.htm
это однозначно FLS/CRUD - Field Level Security. важно также с каким юзером запускается (System.runAs)
с какой версией бежит тест и на какую ты меняешь?

скорей всего это связано с enforcement FLS в Apex-тестах 
(тестовый код исполняется с реальными правами пользователя вместо полного доступа, если явно не обёрнут в System.runAs с системным контекстом, либо если класс/триггер не помечен without sharing/использует Security.stripInaccessible проверки).


Начиная с API v67.0, обычные update/insert/Database.*, статические SOQL/SOSL и Search по умолчанию выполняются в User Mode вместо System Mode. 

При v66 и ниже DML остаётся в System Mode (FLS/CRUD игнорируются), при v67+ включается User Mode.

https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/versioned_behavior_changes.htm