Мы моделируем объекты саморегуляции в MS Dynamics CRM 2015. Один из примеров - здания и часть зданий (Строительный комплекс ==> Индивидуальное здание ==> Вход ==> Этаж ==> Плоский).Моделирование наследования в Dynamics CRM
Есть некоторые поля, такие как калькулятор стоимости или владелец здания. Если у вас есть здание с 300 квартирами, все здание может принадлежать одной компании или каждой квартире принадлежит отдельным лицам.
То, что мы ищем, - это какое-то наследование значений поля. Итак, для поля «Владелец» пользователь должен иметь возможность отмечать флажок, который «владелец» наследуется от его родительской записи.
У нас есть 20 или 30 полей, которые могут быть наследуемыми.
Мы хотим скопировать значение из родителя, потому что оно упрощает определение представлений и отчетов.
Вопросы: Было ли это сделано раньше, есть ли лучшие практики или готовый плагин где-нибудь?
Если я это делаю сам решение будет выглядеть так:
- Для каждого наследуемого поля, создать логическое поле xx_myfield_inherit
- Установите флажок и поле всегда вместе на форме.
- Создания некоторых Java-магия и плагин:
- Если помечено, поместите поле в режиме только для чтения и копирование значения из родительского
- Если значение изменяется, проверьте, есть ли дети с набором наследования (если сделано с OnChange триггером, что вероятно, будет работать рекурсивно, из коробки)
- ...
Есть немало особых ситуаций в catch (не разрешать наследование, когда родительский элемент не установлен, обновлять наследование при изменении родительского объекта, отменить выбор наследования, когда родитель удален).
Я предполагаю, что это совершенно выполнимо, но сначала я хочу получить совет, есть ли лучшие решения.
Отличный ответ. Javascript должен быть простым. Однако мы только начинаем с плагинов. Можете ли вы представить, чтобы поделиться некоторыми из вашего кода плагина, чтобы мы начали работать в правильном направлении? Я уверен, что ваш намек с максимальным уровнем распространения = 8 спас меня от будущих головных болей. Хотя я надеюсь, что мы не превысим 8 уровней, было бы прекрасно знать обходное решение, на всякий случай. – Sparhawk
В CRM Online будет непросто обойти это ограничение. В развертываниях OnPremise вы можете изменить параметр MaxDepth с помощью PowerShell или службы развертывания Dynamics CRM. См. Https://technet.microsoft.ком/EN-US/библиотека/dn531194.aspx # рабочих. –