Можно ли остановить вставку записи в триггер объекта, не сообщая об этом пользователю в Salesforce? - PullRequest
0 голосов
/ 26 апреля 2019

Для обеспечения обратной совместимости с существующими клиентами я должен иметь возможность обрабатывать вложения и файлы в Salesforce. По сути, некоторые клиенты должны иметь возможность вставлять файлы и другие вложения в портал нашего сообщества. Я хотел бы сделать это, не зная, какой пользователь вставляет

Самый простой способ сделать это - оставить текущие страницы Apex для загрузки в одиночку. Затем в триггере вложения я могу определить (используя где-нибудь флаг), должно ли вложение остаться или быть изменено на файл (ContentVersion). Если это должен быть файл; Затем я создал бы все необходимые записи ContentVersion, ContentDocumentLink и затем пропустил вложение. Тем не менее, я не могу найти способ остановить вставку вложений без выдачи пользователю ошибки. Я действительно не хочу разрешать вложение вставлять, а затем удалять его в триггере вставки после, потому что это кажется большой нагрузкой

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

Итак, после всего этого главный вопрос - есть ли способ прекратить вставку записей без метода addError?

1 Ответ

0 голосов
/ 01 июня 2019

Нет, нет.Вы не можете остановить вставку записи Attachment в триггер без принудительного отката всей транзакции или области точки сохранения, который будет включать в себя любой DML, который ваш триггер вложений выполнил для добавления объектов содержимого.

Единственные параметрычто я вижу, чтобы выполнить удаление, как вы описываете, или изменить интерфейсный код для прямой вставки записей содержимого вместо вложений.

...