Κοινοποίηση μέσω


Xrm.WebApi.online.execute (αναφορά API προγράμματος-πελάτη)

Εκτελέστε μία μόνο ενέργεια, συνάρτηση ή λειτουργία CRUD.

Σημείωμα

Αυτή η μέθοδος υποστηρίζεται μόνο για την κατάσταση λειτουργίας online (Xrm.WebApi.online).

Σύνταξη

Xrm.WebApi.online.execute(request).then(successCallback, errorCallback);

Παραμέτρους

Όνομα Δακτυλογραφώ Απαιτούμενο Περιγραφή
request Αντικείμενο Ναι Αντικείμενο που θα διαβιβαστεί στο τελικό σημείο Web API για την εκτέλεση μιας ενέργειας, συνάρτησης ή αίτησης CRUD. Το αντικείμενο εκθέτει μια getMetadata μέθοδο μέσω του πρωτοτύπου που σας επιτρέπει να ορίσετε τα μετα-δεδομένα για την ενέργεια, τη συνάρτηση ή το αίτημα CRUD που θέλετε να εκτελέσετε. Ανατρέξτε στη μέθοδο request.getMetadata
successCallback Function Όχι Μια συνάρτηση για κλήση όταν η λειτουργία εκτελεστεί με επιτυχία. Ανατρέξτε στο θέμα Τιμή επιστροφής
errorCallback Function Όχι Μια λειτουργία για κλήση όταν αποτύχει η λειτουργία. Διαβιβάζεται ένα αντικείμενο με τις ακόλουθες ιδιότητες:
- errorCode:Αριθμός. Ο κωδικός σφάλματος ως θετικός δεκαδικός αριθμός. Για παράδειγμα, ο κωδικός σφάλματος που τεκμηριώνεται ως 0x80040333 θα επιστραφεί ως 2147746611.
- message:Σειρά. Ένα μήνυμα λάθους που περιγράφει το ζήτημα.

μέθοδος request.getMetadata

Η getMetadata μέθοδος έχει τις ακόλουθες παραμέτρους:

Όνομα Δακτυλογραφώ Απαιτούμενο Περιγραφή
boundParameter Συμβλοσειρά Όχι Το όνομα της δεσμευμένης παραμέτρου για την ενέργεια ή τη συνάρτηση που θα εκτελεστεί.
- Καθορίστε undefined εάν εκτελείτε μια αίτηση CRUD.
- Καθορίστε null εάν η ενέργεια ή η συνάρτηση προς εκτέλεση δεν συνδέεται με κανέναν πίνακα.
- Καθορίστε entity σε περίπτωση που η ενέργεια ή η συνάρτηση που θα εκτελεστεί συνδέεται σε έναν πίνακα.
operationName Συμβλοσειρά Όχι Το όνομα της ενέργειας, συνάρτησης ή μίας από τις ακόλουθες τιμές εάν εκτελείτε μια αίτηση CRUD: Create, Retrieve, Updateή Delete.
operationType Αριθμός Όχι Υποδεικνύει τον τύπο της λειτουργίας που εκτελείτε. Καθορίστε μία από τις ακόλουθες τιμές:
- 0:Ενέργεια
- 1:Λειτουργία
- 2:ΑΚΑΤΈΡΓΑΣΤΟ
parameterTypes Αντικείμενο Ναι Τα μετα-δεδομένα για τους τύπους παραμέτρων. Το αντικείμενο έχει τις ακόλουθες τιμές:
enumProperties : (Προαιρετικό) Αντικείμενο. Τα μετα-δεδομένα για τύπους απαρίθμησης. Το αντικείμενο έχει δύο τιμές συμβολοσειράς: name και value
structuralProperty :Αριθμός. Η κατηγορία του τύπου παραμέτρου. Καθορίστε μία από τις παρακάτω τιμές:
- 0:Άγνωστος
- 1: PrimitiveType
- 2: ComplexType
- 3: Τύπος απαρίθμησης
- 4:Συλλογή
- 5: Τύπος οντότητας
typeName :Σειρά. Το πλήρως προσδιορισμένο όνομα του τύπου παραμέτρου.

Τιμή επιστροφής

Με επιτυχία, επιστρέφει ένα αντικείμενο υπόσχεσης στο successCallback με τις ακόλουθες ιδιότητες:

Όνομα Δακτυλογραφώ Περιγραφή
body(υπό απόσυρση) Αντικείμενο Σώμα απόκρισης.
headers Αντικείμενο Κεφαλίδες απόκρισης.
ok Boolean Υποδεικνύει εάν η αίτηση ολοκληρώθηκε με επιτυχία.
status Αριθμός Αριθμητική τιμή στον κωδικό κατάστασης απόκρισης. Για παράδειγμα: 200
statusText Συμβλοσειρά Περιγραφή του κωδικού κατάστασης απόκρισης. Για παράδειγμα: OK
type(υπό απόσυρση) Συμβλοσειρά Τύπος απόκρισης. Οι τιμές είναι: η κενή συμβολοσειρά (προεπιλογή), arraybuffer, blob, document, jsonκαι text.
url Συμβλοσειρά Αίτηση διεύθυνσης URL για την ενέργεια, συνάρτηση ή αίτηση CRUD που στάλθηκε στο τελικό σημείο Web API.
json Υπόσχεση Η παράμετρος για την παραπομπή επιστροφής κλήσης είναι τύπου any (αντικείμενο JSON).
text Υπόσχεση Η παράμετρος για την παραπομπή επιστροφής κλήσης είναι μια Συμβολοσειρά.

Παραδείγματα

Βρείτε αυτά τα παραδείγματα παρακάτω:

Φιλοδώρημα

Μπορείτε να χρησιμοποιήσετε το Dataverse REST Builder για να δημιουργήσετε κώδικα JavaScript που χρησιμοποιεί τη Xrm.WebApi.online.execute μέθοδο .

Εκτέλεση ενέργειας

Το παρακάτω παράδειγμα δείχνει πώς μπορείτε να εκτελέσετε την WinOpportunity ενέργεια που βρέθηκε στη λύση Dynamics 365 for Sales. Το αντικείμενο αίτησης δημιουργείται με βάση τον ορισμό ενέργειας εδώ: Μη δεσμευμένες ενέργειες

var Sdk = window.Sdk || {};
/**
 * Request to win an opportunity
 * @param {Object} opportunityClose - The opportunity close activity associated with this state change.
 * @param {number} status - Status of the opportunity.
 */
Sdk.WinOpportunityRequest = function(opportunityClose, status) {
    this.OpportunityClose = opportunityClose;
    this.Status = status;
};

// NOTE: The getMetadata property should be attached to the function prototype instead of the
// function object itself.
Sdk.WinOpportunityRequest.prototype.getMetadata = function () {
    return {
        boundParameter: null,
        parameterTypes: {
            "OpportunityClose": {
                "typeName": "mscrm.opportunityclose",
                "structuralProperty": 5 // Entity Type
            },
            "Status": {
                "typeName": "Edm.Int32",
                "structuralProperty": 1 // Primitive Type
            }
        },
        operationType: 0, // This is an action. Use '1' for functions and '2' for CRUD
        operationName: "WinOpportunity",
    };
};

var opportunityClose = {
    "opportunityid@odata.bind": "/opportunities(c60e0283-5bf2-e311-945f-6c3be5a8dd64)",
    "description": "Product and maintenance for 2018",
    "subject": "Contract for 2018"
}

// Construct a request object from the metadata
var winOpportunityRequest = new Sdk.WinOpportunityRequest(opportunityClose, 3);

// Use the request object to execute the function
Xrm.WebApi.online.execute(winOpportunityRequest).then(function (response) {
    if (response.ok) {
        console.log("Status: %s %s", response.status, response.statusText);
        // The WinOpportunityRequest does not return any response body content. So we
        // need not access the response.json() property.

        // Perform other operations as required.
    }
})
.catch(function(error) {
    console.log(error.message);
    // handle error conditions
});

Εκτέλεση συνάρτησης

Το παρακάτω παράδειγμα δείχνει πώς μπορείτε να εκτελέσετε τη συνάρτηση WhoAmI:

var Sdk = window.Sdk || {};
/**
 * Request to execute WhoAmI function
 */
Sdk.WhoAmIRequest = function () { };

// NOTE: The getMetadata property should be attached to the function prototype instead of the
//       function object itself.
Sdk.WhoAmIRequest.prototype.getMetadata = function () {
    return {
        boundParameter: null,
        parameterTypes: {},
        operationType: 1, // This is a function. Use '0' for actions and '2' for CRUD
        operationName: "WhoAmI",
    };
};

// Construct a request object from the metadata
var whoAmIRequest = new Sdk.WhoAmIRequest();

// Use the request object to execute the function
Xrm.WebApi.online.execute(whoAmIRequest)
.then(function (response) {
    if (response.ok) {
        console.log("Status: %s %s", response.status, response.statusText);

        // Use response.json() to access the content of the response body.
        return response.json();
    }
}
)
.then(function (responseBody) {
    console.log("User Id: %s", responseBody.UserId);
    // perform other operations as required;
})
.catch(function (error) {
    console.log(error.message);
    // handle error conditions
});

Το παρακάτω παράδειγμα παρουσιάζει τον τρόπο εκτέλεσης της συνάρτησης CalculateRollupField :

var Sdk = window.Sdk || {};

Sdk.CalculateRollupFieldRequest = function(target, fieldName) {
    this.Target = target;
    this.FieldName = fieldName;
};

// NOTE: The getMetadata property should be attached to the function prototype instead of the
//       function object itself.
Sdk.CalculateRollupFieldRequest.prototype.getMetadata = function() {
    return {
        boundParameter: null,
        parameterTypes: {
            "Target": {
                "typeName": "mscrm.crmbaseentity",
                "structuralProperty": 5
            },
            "FieldName": {
                "typeName": "Edm.String",
                "structuralProperty": 1
            }
        },
        operationType: 1, // This is a function. Use '0' for actions and '2' for CRUD
        operationName: "CalculateRollupField"
    };
};

// Create variables to point to a quote record and to a specific column
var quoteId = {
    "@odata.type": "Microsoft.Dynamics.CRM.quote",
    "quoteid": "7bb01e55-2394-ea11-a811-000d3ad97943"
};

// The roll-up column for which we want to force a re-calculation
var fieldName = "new_test_rollup";

// Create variable calculateRollupFieldRequest and pass those variables created above
var calculateRollupFieldRequest = new Sdk.CalculateRollupFieldRequest(quoteId, fieldName);

// Use the request object to execute the function
Xrm.WebApi.online.execute(calculateRollupFieldRequest)
.then(function(response) {
    if (response.ok) { // If a response was received.
        console.log("Status: %s %s", response.status, response.statusText);

        // Use response.json() to access the content of the response body.
        return response.json();
    }
})
.then(function(responseBody) { 
    //Do something with the response
    console.log("The response is: %s", responseBody);
})
.catch(function(error) {
    console.log(error.message);
    // handle error conditions
});

Το παρακάτω παράδειγμα παρουσιάζει τον τρόπο εκτέλεσης της συνάρτησης RetrieveDuplicates :

var Sdk = window.Sdk || {};

Sdk.RetrieveDuplicatesRequest = function(businessEntity, matchingEntityName, pagingInfo) {
    this.BusinessEntity = businessEntity;
    this.MatchingEntityName = matchingEntityName;
    this.PagingInfo = pagingInfo;

};

// NOTE: The getMetadata property should be attached to the function prototype instead of the
// function object itself.
Sdk.RetrieveDuplicatesRequest.prototype.getMetadata = function() {
    return {
        boundParameter: null,
        parameterTypes: {
            "BusinessEntity": {
                "typeName": "mscrm.crmbaseentity",
                "structuralProperty": 5 // Entity Type
            },
            "MatchingEntityName": {
                "typeName": "Edm.String",
                "structuralProperty": 1 // Primitive Type
            },
            "PagingInfo": {
                "typeName:": "mscrm.PagingInfo", // Complex Type
                "structuralProperty": 5
            }
        },
        operationType: 1, // This is a function. Use '0' for actions and '2' for CRUD
        operationName: "RetrieveDuplicates",
    };
};

// Create a variable to point to a contact record and with specific data in the needed columns
var contactRecord = {
    "@odata.type": "Microsoft.Dynamics.CRM.contact",
    "firstname": "Test",
    "lastname": "Account"
};

// Create a paging object to keep track of the current page and how many records we get per page
var pagingInfo = {
    "PageNumber": 1,
    "Count": 10
};

// Create the variable retrieveDuplicatesRequest to build the request
var retrieveDuplicatesRequest = new Sdk.RetrieveDuplicatesRequest(contactRecord, "contact", pagingInfo);

// Use the request object to execute the function
Xrm.WebApi.online.execute(retrieveDuplicatesRequest)
.then(function (response) {
    if (response.ok) {
        console.log("Status: %s %s", response.status, response.statusText);

        // Use response.json() to access the content of the response body.
        return response.json();
    }
})
.then(function(responseBody) { 
    // Do something with the response
    console.log("The response is: %s", responseBody);
})
.catch(function(error) {
    console.log(error.message);
    // handle error conditions
});

Το παρακάτω παράδειγμα παρουσιάζει τον τρόπο εκτέλεσης της συνάρτησης InitializeFrom :

var Sdk = window.Sdk || {};

Sdk.InitializeFromRequest = function (
  entityMoniker,
  targetEntityName,
  targetFieldType
) {
  this.EntityMoniker = entityMoniker;
  this.TargetEntityName = targetEntityName;
  this.TargetFieldType = targetFieldType;
};

// NOTE: The getMetadata property should be attached to the function prototype instead of the
// function object itself.
Sdk.InitializeFromRequest.prototype.getMetadata = function () {
  return {
    boundParameter: null,
    parameterTypes: {
      EntityMoniker: {
        typeName: "mscrm.crmbaseentity",
        structuralProperty: 5, //Entity Type
      },
      TargetEntityName: {
        typeName: "Edm.String",
        structuralProperty: 1, // PrimitiveType
      },
      TargetFieldType: {
        typeName: "Microsoft.Dynamics.CRM.TargetFieldType",
        structuralProperty: 3, // Enum Type
        enumProperties: [
          {
            name: "All",
            value: 0,
          },
          {
            name: "ValidForCreate",
            value: 1,
          },
          {
            name: "ValidForUpdate",
            value: 2,
          },
          {
            name: "ValidForRead",
            value: 3,
          },
        ],
      },
    },
    operationType: 1, // This is a function. Use '0' for actions and '2' for CRUD
    operationName: "InitializeFrom",
  };
};

// Create a variable to point to tje parent account record
var parentAccountRecord = {
  "@odata.type": "Microsoft.Dynamics.CRM.account",
  accountid: "141da047-eaad-eb11-b1b4-000d3ac581a0",
};

// Create a variable for the target entity name
var targetEntityName = "account";

// Create a variable for the target field type
var targetFieldType = 0;

// Build the request
var initializeFromRequest = new Sdk.InitializeFromRequest(
  parentAccountRecord,
  targetEntityName,
  targetFieldType
);

// Execute the request
Xrm.WebApi.online.execute(initializeFromRequest)
.then(function (response) {
    if (response.ok) {
        console.log("Status: %s %s", response.status, response.statusText);

        // Use response.json() to access the content of the response body.
        return response.json();
    }
})
.then(function(responseBody) { 
    // Do something with the response
    console.log("The response is: %s", responseBody);
})
.catch(function(error) {
    console.log(error.message);
    // handle error conditions
});

Εκτέλεση λειτουργιών CRUD

Δημιουργία καρτέλας

Το παρακάτω παράδειγμα παρουσιάζει τον τρόπο εκτέλεσης μιας λειτουργίας δημιουργίας.

var Sdk = window.Sdk || {};

/**
 * Request to execute a create operation
 */
Sdk.CreateRequest = function(entityName, payload) {
    this.etn = entityName;
    this.payload = payload;
};

// NOTE: The getMetadata property should be attached to the function prototype instead of the
// function object itself.
Sdk.CreateRequest.prototype.getMetadata = function () {
    return {
        boundParameter: null,
        parameterTypes: {},
        operationType: 2, // This is a CRUD operation. Use '0' for actions and '1' for functions
        operationName: "Create",
    };
};
// Construct a request object from the metadata
var payload = {
    name: "Fabrikam Inc."
};
var createRequest = new Sdk.CreateRequest("account", payload);

// Use the request object to execute the function
Xrm.WebApi.online.execute(createRequest)
.then(function (response) {
    if (response.ok) {
        console.log("Status: %s %s", response.status, response.statusText);
        
        // The Create request does not return any response body content. So we
        // need not access the response.json() property.

        // Perform other operations as required.
    }
})
.catch(function(error) {
    console.log(error.message);
    // handle error conditions
});

Ανάκτηση εγγραφής

Το παρακάτω παράδειγμα δείχνει πώς μπορείτε να εκτελέσετε μια λειτουργία ανάκτησης.

var Sdk = window.Sdk || {};

/**
 * Request to execute a retrieve operation
 */
Sdk.RetrieveRequest = function(entityReference, columns) {
    this.entityReference = entityReference;
    this.columns = columns;
};
// NOTE: The getMetadata property should be attached to the function prototype instead of the
// function object itself.
Sdk.RetrieveRequest.prototype.getMetadata = function () {
    return {
        boundParameter: null,
        parameterTypes: {},
        operationType: 2, // This is a CRUD operation. Use '0' for actions and '1' for functions
        operationName: "Retrieve",
    };
};

// Construct request object from the metadata
var entityReference = {
    entityType: "account",
    id: "d2b6c3f8-b0fa-e911-a812-000d3a59fa22"
};
var retrieveRequest = new Sdk.RetrieveRequest(entityReference, ["name"]);

// Use the request object to execute the function
Xrm.WebApi.online.execute(retrieveRequest)
.then(function (response) {
    if (response.ok) {
        console.log("Status: %s %s", response.status, response.statusText);

        // Use response.json() to access the content of the response body.
        return response.json();
    }
})
.then(function(responseBody) {
    console.log("Name: %s", responseBody.name);
    
    // perform other operations as required;
})
.catch(function(error) {
    console.log(error.message);
    // handle error conditions
});

Ενημέρωση εγγραφής

Το παρακάτω παράδειγμα παρουσιάζει τον τρόπο εκτέλεσης μιας λειτουργίας ενημέρωσης.

var Sdk = window.Sdk || {};


/**
 * Request to execute an update operation
 */
Sdk.UpdateRequest = function(entityName, entityId, payload) {
    this.etn = entityName;
    this.id = entityId;
    this.payload = payload;
};

// NOTE: The getMetadata property should be attached to the function prototype instead of the
// function object itself.
Sdk.UpdateRequest.prototype.getMetadata = function () {
    return {
        boundParameter: null,
        parameterTypes: {},
        operationType: 2, // This is a CRUD operation. Use '0' for actions and '1' for functions
        operationName: "Update",
    };
};

// Construct a request object from the metadata
var payload = {
    name: "Updated Sample Account"
};
var updateRequest = new Sdk.UpdateRequest("account", "d2b6c3f8-b0fa-e911-a812-000d3a59fa22", payload);

// Use the request object to execute the function
Xrm.WebApi.online.execute(updateRequest)
.then(function (response) {
    if (response.ok) {
        console.log("Status: %s %s", response.status, response.statusText);

        // The Update request does not return any response body content. So we
        // need not access the response.json() property.
        
        // perform other operations as required;
    }
})
.catch(function(error) {
    console.log(error.message);
    // handle error conditions
});

Διαγραφή εγγραφής

Το παρακάτω παράδειγμα παρουσιάζει τον τρόπο εκτέλεσης μιας λειτουργίας διαγραφής.

var Sdk = window.Sdk || {};

/**
 * Request to execute a delete operation
 */
Sdk.DeleteRequest = function(entityReference) {
    this.entityReference = entityReference;
};

// NOTE: The getMetadata property should be attached to the function prototype instead of the
// function object itself.
Sdk.DeleteRequest.prototype.getMetadata = function () {
        return {
            boundParameter: null,
            parameterTypes: {},
            operationType: 2, // This is a CRUD operation. Use '0' for actions and '1' for functions
            operationName: "Delete",
        };
    };
};
};

// Construct request object from the metadata
var entityReference = {
    entityType: "account",
    id: "d2b6c3f8-b0fa-e911-a812-000d3a59fa22"
};
var deleteRequest = new Sdk.DeleteRequest(entityReference);

// Use the request object to execute the function
Xrm.WebApi.online.execute(deleteRequest)
.then(function(response) {
    if (response.ok) {
        console.log("Status: %s %s", response.status, response.statusText);
        
        // The Delete request does not return any response body content. So we
        // need not access the response.json() property.

        // perform other operations as required;
    }
})
.catch(function(error) {
    console.log(error.message);
    // handle error conditions
});

Συσχέτιση εγγραφής

Το ακόλουθο δείγμα κώδικα παρουσιάζει τον τρόπο εκτέλεσης μιας λειτουργίας Συνεργάτης σε ιδιότητες περιήγησης με τιμή συλλογής (Σχέσεις One-To-Many και Πολλά-To-Many). Για ιδιότητες περιήγησης μίας τιμής (Πολλές-To-One σχέσεις στήλες a.k.a Lookup), μπορείτε να εκτελέσετε μια λειτουργία Ενημέρωση όπως φαίνεται παραπάνω ή να χρησιμοποιήσετε το Xrm.WebApi.updateRecord.

var Sdk = window.Sdk || {};

/*
 * Request to execute an Associate operation.
 */
Sdk.AssociateRequest = function(target, relatedEntities, relationship) {
    this.target = target;
    this.relatedEntities = relatedEntities;
    this.relationship = relationship;
};

// NOTE: The getMetadata property should be attached to the function prototype instead of the
// function object itself.
Sdk.AssociateRequest.prototype.getMetadata = function() {
    return {
        boundParameter: null,
        parameterTypes: {},
        operationType: 2, // Associate and Disassociate fall under the CRUD umbrella
        operationName: "Associate"
    }
};

// Construct the target EntityReference object
var target = {
    entityType: "account",
    id: "0b4abc7d-7619-eb11-8dff-000d3ac5c7f9"
};

// Construct the related EntityReferences that the Target will be associated with.
var relatedEntities = [
    {
        entityType: "contact",
        id: "180a9aad-7619-eb11-8dff-000d3ac5c7f9"
    },
    {
        entityType: "contact",
        id: "753c58b4-7619-eb11-8dff-000d3ac5c7f9"
    }
];

// The name of the existing relationship to associate on.
var relationship = "new_account_contact";

var manyToManyAssociateRequest = new Sdk.AssociateRequest(target, relatedEntities, relationship)

Xrm.WebApi.online.execute(manyToManyAssociateRequest)
.then(function(response) {
    if (response.ok) {
        console.log("Status: %s %s", response.status, response.statusText);

        // The Associate request does not return any response body content. So we
        // need not access the response.json() property.

        // perform other operations as required;
    }
})
.catch(function(error) {
    console.log(error.message);
    // handle error conditions
});

Κατάργηση συσχέτισης μιας εγγραφής

Το ακόλουθο δείγμα κώδικα παρουσιάζει τον τρόπο εκτέλεσης μιας λειτουργίας κατάργησης συσχέτισης στις ιδιότητες περιήγησης με τιμή συλλογής (Σχέσεις One-To-Many και Πολλά-To-Many). Για ιδιότητες περιήγησης μίας τιμής (Πολλές-To-One σχέσεις στήλες a.k.a Lookup), μπορείτε να εκτελέσετε μια λειτουργία Ενημέρωση όπως φαίνεται παραπάνω ή να χρησιμοποιήσετε το Xrm.WebApi.updateRecord.

Σημείωμα

Σε αντίθεση με τη λειτουργία Συσχέτιση που επιτρέπει τη συσχέτιση της εγγραφής οντότητας προορισμού με πολλές σχετικές εγγραφές οντότητας σε μία μόνο λειτουργία, η λειτουργία Κατάργηση συσχέτισης περιορίζεται μόνο στην κατάργηση συσχέτισης μίας εγγραφής οντότητας από την εγγραφή οντότητας προορισμού ανά λειτουργία.

var Sdk = window.Sdk || {};

/*
 * Request to execute a Disassociate operation.
 */
Sdk.DisassociateRequest = function(target, relatedEntityId, relationship) {
    this.target = target;
    this.relatedEntityId = relatedEntityId;
    this.relationship = relationship;
};

// NOTE: The getMetadata property should be attached to the function prototype instead of the
// function object itself.
Sdk.DisassociateRequest.prototype.getMetadata = function() {
    return {
        boundParameter: null,
        parameterTypes: {},
        operationType: 2, // Associate and Disassociate fall under the CRUD umbrella
        operationName: "Disassociate"
    }
};

// Construct the target EntityReference object
var target = {
    entityType: "account",
    id: "0b4abc7d-7619-eb11-8dff-000d3ac5c7f9"
};

// The GUID of the related entity record to disassociate.
var relatedEntityId = "180a9aad-7619-eb11-8dff-000d3ac5c7f9";

// The name of the existing relationship to disassociate from.
var relationship = "new_account_contact";

var manyToManyDisassociateRequest = new Sdk.DisassociateRequest(target, relatedEntityId, relationship)

Xrm.WebApi.online.execute(manyToManyDisassociateRequest)
.then(function(response) {
    if (response.ok) {
        console.log("Status: %s %s", response.status, response.statusText);

        // The Disassociate request does not return any response body content. So we
        // need not access the response.json() property.

        // perform other operations as required;
    }
})
.catch(function(error) {
    console.log(error.message);
    // handle error conditions
});

Xrm.WebApi