Если вы попробовали такой встроенный инструмент MS CRM 4.0 как сопоставление (mapping) то знаете, что в системных сущностях, таких как: opportunityproduct (продукты для возможной сделки), quotedetail (продукты для предложений), salesorderdetail (продукты для заказов), invoicedetail (продукты для счетов) нельзя сделать сопоставление (т.е. передавать значения) между созданными атрибутами, а ведь так хочется :)

Вот как можно сделать, например, сопоставление атрибутов продуктов между quotedetail и salesorderdetail


Для начала, вы должны определиться какие из атрибутов вы хотите сопоставить. Главное, чтобы типы атрибутов совпадали полностью, даже если вы попытаетесь сопоставить поле типа navchar(100) с полем типа navchar(300) у вас не получится этого сделать. Итак, с полями определились, идем дальше:

  1. Ищем в базе ИМЯ_ОРГАНИЗАЦИИ_MSCRM таблицу EntityMapBase и делаем к ней следующий запрос
  2. SELECT     *
    FROM         EntityMapBase
    WHERE     (TargetEntityName = ‘salesorderdetail‘)

    Где ‘salesorderdetail‘ – это имя сущность с которой мы будем сопоставлять наши новые атрибуты

    Запрос Guid связи сущностей MS CRM 4.0 на сопостовление

    Запрос Guid связи сущностей MS CRM 4.0 на сопостовление

  3. Копируем содержимое EntityMapId
  4. Теперь открываем IE и в адресной строке вставляем следующее:
  5. http://crmserver:5555/ORGANIZATIONNAME/Tools/SystemCustomization/Relationships/Mappings/mappingList.aspx?mappingId=746e46de-c8fb-db11-b59d-000423af733e  Примечание: вместо ORGANIZATIONNAME вставьте название вашей организации и тот GUID связи, что вы получили.
  6. Жмем создать и сопоставляем левую часть с правой  
    mapping21

    Связывание атрибутов в Microsoft Dynamics CRM 4.0

    Вот и все  :)