Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Бір әрекетті, функцияны немесе CRUD операциясын орындаңыз.
Ескертпе
Бұл әдіс тек онлайн режимде (Xrm.WebApi.online) қолдау көрсетіледі.
Синтаксис
Xrm.WebApi.online.execute(request).then(successCallback, errorCallback);
Параметрлер
| РаT� | Түр | Талап етіледі | Сипаттама |
|---|---|---|---|
request |
Нысан | Иә | Әрекетті, функцияны немесе CRUD сұрауын орындау үшін веб-API соңғы нүктесіне берілетін нысан. Нысан getMetadata өзінің прототипі арқылы әдісті көрсетеді, бұл орындағыңыз келетін әрекет, функция немесе CRUD сұрауы үшін метадеректерді анықтауға мүмкіндік береді.
request.getMetadata әдісін қараңыз |
successCallback |
Function | Жоқ | Операция сәтті орындалған кезде шақырылатын функция. Қайтаратын мәнді қараңыз |
errorCallback |
Function | Жоқ | Операция істен шыққанда қоңырау шалу функциясы. Келесі қасиеттері бар нысан беріледі: - errorCode: Сан. Қате коды оң ондық сан ретінде. Мысалы, құжатталған 0x80040333 қате коды ретінде 2147746611қайтарылады.- message: Жол. Ақауды сипаттайтын қате туралы хабар. |
request.getMetadata әдісі
Әдіс келесі параметрлерге ие:getMetadata
| РаT� | Түр | Талап етіледі | Сипаттама |
|---|---|---|---|
boundParameter |
Жол | Жоқ | Орындалатын әрекеттің немесе функцияның байланыстырылған параметрінің атауы. - CRUD сұрауын орындап жатқаныңызды көрсетіңіз undefined .- Орындалатын әрекет немесе функция қандай да бір кестеге байланысты емес пе, жоқ па, соны көрсетіңіз null .- Орындалатын әрекет немесе функция кестеге байланысты болған жағдайда көрсетіңіз entity . |
operationName |
Жол | Жоқ | CRUD сұрауын орындасаңыз, әрекеттің, функцияның немесе келесі мәндердің бірінің атауы: Create, Retrieve, Updateнемесе Delete. |
operationType |
Саны | Жоқ | Сіз орындап жатқан операцияның түрін көрсетіңіз; Келесі мәндердің біреуін көрсетіңіз: - 0: Әрекет- 1: Функция- 2: CRUD |
parameterTypes |
Нысан | Иә | Параметрлер түрлеріне арналған метадеректер. Объект келесі құндылықтарға ие:enumProperties : (Қосымша) Нысан. Метафор түрлеріне арналған метадеректер. Объектінің екі жолақ мәні бар: name және valuestructuralProperty : Сан. Параметр түрі санаты. Келесі мәндердің бірін көрсетіңіз:- 0: Белгісіз- 1: PrimitiveType- 2: ComplexType- 3: EnumerationType- 4: Коллекция- 5: EntityTypetypeName : Жол. Зат есімнің толық сипаттамасы. |
Қайтаратын мән
Сәттілік кезінде келесі қасиеттері бар уәде нысанын successCallback қайтарады:
| РаT� | Түр | Сипаттама |
|---|---|---|
body(Ескірген) |
Нысан | Жауап органы. |
headers |
Нысан | Жауап тақырыптары. |
ok |
Логикалық | Өтініштің сәтті орындалғанын көрсетіңіз. |
status |
Саны | Жауаптың күй кодындағы сандық мән. Мысалы: 200 |
statusText |
Жол | Жауап беру жүйесінің сипаттамасы. Мысалы: OK |
type(Ескірген) |
Жол | Жауап түрі. Мәндері: бос жол (әдепкі), , , , және textjson. documentblobarraybuffer |
url |
Жол | Веб-API соңғы нүктесіне жіберілген әрекеттің, функцияның немесе CRUD сұрауының URL мекенжайын сұраңыз. |
json |
Уәде | Кері қоңырау шалу өкіліне параметр кез келген типті (JSON нысаны). |
text |
Уәде | Кері қоңырау шалу өкіліне арналған параметр - String. |
Мысалдар
Төменде мына мысалдарды табыңыз:
- Әрекетті орындау
- Функцияны орындау
- Жазба жасау
- Жазбаны алу
- Жазбаны жаңарту
- Жазбаны жою
- Жазбаны байланыстыру
- Жазбаны ажырату
Шайпұл
Әдісті пайдаланатын Xrm.WebApi.online.execute JavaScript кодын жасау үшін Dataverse REST Builder бағдарламасын пайдалануға болады.
Әрекетті орындау
Келесі мысалда Dynamics 365 for Sales шешімінде табылған әрекетті орындау әдісі WinOpportunity көрсетілген. Өтініш берушінің өтініші мынадай редакцияда жазылсын: Өтініш берушінің өтініші
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 және Many-To-Many қатынастары) бойынша Associated операциясын орындау әдісін көрсетеді. Бір мәнді шарлау сипаттары үшін (Көп-To-One қатынастары, сондай-ақ Іздеу бағандары) жоғарыда көрсетілгендей Жаңарту операциясын орындауға немесе 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
});
Жазбаны ажырату
Келесі код үлгісі коллекциялық мәнді шарлау сипаттарында (Бір-To-Many және Көп-To-Many қатынастары) ажырату әрекетін орындау әдісін көрсетеді. Бір мәнді шарлау сипаттары үшін (Көп-To-One қатынастары, сондай-ақ Іздеу бағандары) жоғарыда көрсетілгендей Жаңарту операциясын орындауға немесе 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
});