Как связать две записи с помощью JavaScript и отношения: m - PullRequest
3 голосов
/ 09 сентября 2011

У меня есть отношения многие ко многим между двумя сущностями.Я знаю, Dynamics CRM создает таблицу пересечений для этого в базе данных.И я знаю, как я могу извлечь записи с помощью команды извлечения из этого автоматически созданного объекта.

Но теперь я хочу динамически добавлять новые записи в эту таблицу, используя JavaScript.Это возможно?

Я пытался создать новую запись для этого типа, но затем я получил следующую ошибку:

Метод create не поддерживает объекты типа ["relations_entity_name"].

1 Ответ

9 голосов
/ 09 сентября 2011

JavaScript SDK не самый ясный в этом вопросе, но его основа заключается в том, что SDK не допускает прямой вставки в пересекающиеся таблицы. Он разрешает только вызовы метода Associate. Ниже приведены две ссылки TechNet , которые могут привести вас в правильном направлении.

Кроме того, Avanade проделала замечательную работу по созданию общедоступной библиотеки JavaScript CRM ( обновлена ​​до ссылки на archive.org ) , которая включает вспомогательный метод Associate.

Наконец, пример кода:

function AssociateEntities(moniker1, moniker2, relationshipName) {
    var xml;
    var resultXml;

    xml = "<Execute xmlns='http://schemas.microsoft.com/crm/2007/WebServices'>";
    xml += "<Request xsi:type='AssociateEntitiesRequest'>";
    xml += "<Moniker1><Id xmlns='http://schemas.microsoft.com/crm/2006/CoreTypes'>" + moniker1[0].id + "</Id>";
    xml += "<Name xmlns='http://schemas.microsoft.com/crm/2006/CoreTypes'>" + moniker1[0].entityType + "</Name></Moniker1>";
    xml += "<Moniker2><Id xmlns='http://schemas.microsoft.com/crm/2006/CoreTypes'>" + moniker2[0].id + "</Id>";
    xml += "<Name xmlns='http://schemas.microsoft.com/crm/2006/CoreTypes'>" + moniker2[0].entityType + "</Name></Moniker2>";
    xml += "<RelationshipName>" + relationshipName + "</RelationshipName>";
    xml += "</Request></Execute>";

    resultXml = CallCrmService(xml, "Execute");

    if (resultXml) {
        return "success";
    }
    else {
        return null;
    }
}
...