Xrm.WebApi.online.execute (asiakas-ohjelmointirajapinnan viittaus)

Suorita yksittäinen toiminto, funktio tai CRUD-toiminto.

Note

Tätä menetelmää tuetaan vain online-tilassa (Xrm.WebApi.online).

Syntaksi

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

Parametrit

Nimi Tyyppi Pakollinen Kuvaus
request Objekti Kyllä Objekti, jonka välität WWW-ohjelmointirajapinnan päätepisteeseen, suorittaaksesi toiminnon, funktion tai CRUD-pyynnön. Objekti näyttää prototyyppinsä avulla menetelmängetMetadata, jonka avulla voit määrittää metatiedot niille toiminnoille, funktioille tai CRUD-pyynnöille, jotka haluat suorittaa. Katso request.getMetadata-menetelmä
successCallback Function Ei Funktio, jota kutsutaan, kun toiminto onnistuu. Katso Palautusarvo
errorCallback Function Ei Funktio, jota kutsutaan, kun toiminto epäonnistuu. Objekti, jolla on seuraavat ominaisuudet, välitetään:
- errorCode:Numero. Virhekoodi positiivisena desimaalilukuna. Esimerkiksi virhekoodi, joka on dokumentoitu muodossa 0x80040333 , palautetaan muodossa 2147746611.
- message:Merkkijono. Ongelmaa kuvaava virheilmoitus.

request.getMetadata-menetelmä

- getMetadata menetelmässä on seuraavat parametrit:

Nimi Tyyppi Pakollinen Kuvaus
boundParameter String Ei Suoritettavan toiminnon tai funktion sidotun parametrin nimi.
- Määritä undefined , suoritatko CRUD-pyyntöä.
– Määritä null , onko suoritettava toiminto tai funktio sidottu mihinkään taulukkoon.
- Määritä entity , onko suoritettava toiminto tai funktio sidottu taulukkoon.
operationName String Ei Toiminnon, funktion tai jonkin seuraavista arvoista nimi, jos suoritat CRUD-pyyntöä: Create, Retrieve, Updatetai Delete.
operationType Numero Ei Ilmaisee suoritettavan toiminnon tyypin. Määritä jokin seuraavista arvoista:
- 0:Toiminta
- 1:Funktio
- 2:MOSKA
parameterTypes Objekti Kyllä Parametrityyppien metatiedot. Objektilla on seuraavat arvot:
enumProperties : (Valinnainen) -objekti. Luettelointityyppien metatiedot. -objektilla on kaksi merkkijonoarvoa: name ja value.
structuralProperty :Numero. Parametrityypin luokka. Määritä jokin seuraavista arvoista:
- 0:Tuntematon
- 1: PrimitiveType
- 2: ComplexType
- 3: EnumerationType
- 4:Kokoelma
- 5: EntityType
typeName :Merkkijono. Parametrityypin täydellinen nimi.

Palautusarvo

Kun onnistuminen onnistuu, palauttaa lupausobjektin kohteeseen successCallback seuraavilla ominaisuuksilla:

Nimi Tyyppi Kuvaus
body(Vanhentunut) Objekti Vastauksen leipäteksti.
headers Objekti Vastausotsikot.
ok totuusarvo Ilmaisee, onnistuiko pyyntö.
status Numero Numeerinen arvo vastauksen tilakoodissa. Esimerkiksi: 200
statusText String Vastauksen tilakoodin kuvaus. Esimerkiksi: OK
type(Vanhentunut) String Vastauksen tyyppi. Arvot ovat: tyhjä merkkijono (oletus), arraybuffer, , blobdocument, jsonja text.
url String Pyydä URL-osoitetta web-ohjelmointirajapinnan päätepisteeseen lähettämästäsi toiminnosta, funktiosta tai CRUD-pyynnöstä.
json Luvata Takaisinkutsun delegointikohteen parametri on tyyppiä mikä tahansa (JSON-objekti).
text Luvata Takaisinkutsun delegointijoukon parametri on merkkijono.

Esimerkit

Seuraavissa osioissa on seuraavat esimerkit:

Esimerkki Osoittaa
Toiminnon suorittaminen Miten voit suorittaa toiminnon WinOpportunity ja merkitä mahdollisuuden voitetuksi.
Funktion suorittaminen Miten -, CalculateRollupField-, RetrieveDuplicates- ja -WhoAmIfunktiot suoritetaan ja InitializeFrom miten niiden vastaukset luetaan.
Tietueen luominen Tilitietueen luominen pyyntöobjektin avulla.
Tietueen noutaminen Tilitietueen nimen noutaminen määrittämällä sen tunnus ja palautettavat sarakkeet.
Päivitä tietue Tilitietueen nimen päivittäminen pyyntöobjektin avulla.
Tietueen poistaminen Tilitietueen poistaminen määrittämällä sen taulukko ja tunnus.
Liitä tietue Tilin liittämään useisiin yhteystietoihin kokoelma-arvoisen siirtymisominaisuuden kautta.
Tietueen erottaminen Tilin ja yhden yhteyshenkilön välisen yhteyden poistaminen kokoelma-arvoisen siirtymisominaisuuden kautta.

Tippi

Luo Dataverse REST Builderin avulla JavaScript-koodi, joka käyttää -menetelmääXrm.WebApi.online.execute.

Toimintoesimerkin suorittaminen

Seuraavassa esimerkissä näytetään, miten Voit suorittaa WinOpportunity Dynamics 365 for Sales -ratkaisusta löytyneen toiminnon. Pyyntöobjekti luodaan Sitomattomia toimintoja -toiminnon määrityksen perusteella.

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
});

Funktioesimerkin suorittaminen

Seuraavassa esimerkissä esitellään WhoAmI-funktion suorittaminen:

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
});

Seuraavassa esimerkissä näytetään, miten voit suorittaa funktion 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
});

Seuraavassa esimerkissä näytetään, miten voit suorittaa funktion 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
});

Seuraavassa esimerkissä näytetään, miten voit suorittaa funktion 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-toimintojen suorittaminen

Tietueesimerkin luominen

Seuraavassa esimerkissä näytetään, miten luontitoiminto suoritetaan.

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
});

Tietueen esimerkin noutaminen

Seuraavassa esimerkissä näytetään, miten noutotoiminto suoritetaan.

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
});

Päivitä tietueesimerkki

Seuraavassa esimerkissä näytetään, miten päivitystoiminto suoritetaan.

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
});

Tietueesimerkin poistaminen

Seuraavassa esimerkissä näytetään, miten voit suorittaa poistotoiminnon.

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
});

Liitä tietueesimerkki

Seuraava koodiesimerkki esittelee, miten voit suorittaa kumppanitoiminnon kokoelman arvoisilla siirtymisominaisuuksilla (yksi moneen- ja monta moneen -yhteydet). Yksiarvoisille siirtymisominaisuuksille (monta yhteen -yhteydet, joita kutsutaan myös hakusarakkeiksi) voit suorittaa päivitystoiminnon aiemmin näytetyllä tavalla tai käyttää Xrm.WebApi.updateRecord-toimintoa.

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
});

Tietueesimerkin erottaminen

Seuraava koodiesimerkki näyttää, miten voit suorittaa erottamistoiminnon kokoelman arvoisilla siirtymisominaisuuksilla (yksi moneen- ja monta moneen -yhteydet). Yksiarvoisille siirtymisominaisuuksille (monta yhteen -yhteydet, joita kutsutaan myös hakusarakkeiksi) voit suorittaa päivitystoiminnon aiemmin näytetyllä tavalla tai käyttää Xrm.WebApi.updateRecord-toimintoa.

Note

Toisin kuin liität-toiminnon, jonka avulla voit liittää kohde-entiteettitietueen useisiin liittyviin entiteettitietueisiin yhdessä toiminnossa, erottava toiminto voi erottaa vain yhden entiteettitietueen kohde-entiteettitietueesta kussakin toiminnossa.

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