Изображения до и после создания объекта в Update-Plugin CRM 2011
Я надеюсь, что Сомоне может помочь мне с проблемой, с которой я пытался справиться уже некоторое время. У меня есть плагин создания и обновления плагина. В целях тестирования мой плагин создания (Pre-Operation) выполняет простой расчет и помещает результат в поле после сохранения.
Мой плагин обновления работает нормально, когда я регистрирую его в предоперационной операции и меняю поля, для которых у меня есть логика. ОДНАКО, если я только изменю одно из этих полей (или испорчу другие поля в форме), я получаю сообщение об ошибке, что ключ отсутствует в словаре. Я провел свое исследование и увидел, что вы делаете проверку между Pre и Post Entity Image, чтобы проверить, какие поля были обновлены, а какие нет. Но что меня смущает, так это то, что когда я делаю это, мне нужно повторно зарегистрировать свой плагин обновлений в постоперации, что приводит к тому, что мое обновление больше не работает, и если я выполняю service.Update(entity) в конце моего кода, это дает мне еще одна ошибка бесконечного цикла. В плагине "Обновление" я зарегистрировал два изображения (до и после). Я был бы признателен, если бы кто-нибудь посоветовал мне, как сделать проверки между изображениями до и после?
1 ответ
Нам нужно увидеть ваш код. Но я могу дать краткое объяснение того, что там происходит.service.Update(entity)
вызовите ваш плагин еще раз, потому что это еще одно обновление сущности, где ваш плагин зарегистрирован. Чтобы избежать этого бесконечного цикла, вы можете следить за свойством Depth. Каждый новый вызов плагина будет увеличивать значение этого свойства.
Если вы хотите узнать, какие свойства были изменены во время обновления, просто посмотрите на InputParameters. Будут только обновленные значения свойств.
Изображения Pre-Entity доступны для сообщения Update, но не для Create (невозможно создать изображение до того, как экземпляр сущности был фактически создан). Но изображение Post-Entity представлено как в случае сообщений Create, так и Update.
Итак, если вам нужно узнать, какие свойства были изменены, проверьте InputParameters. Вы можете сделать это в плагине Pre-Stage. И значение, обновления в InputParameters будут храниться в базе данных, поэтому вам не нужно вызывать service.Update.