Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Tek bir eylem, işlev veya CRUD işlemi yürütün.
Uyarı
Bu yöntem yalnızca çevrimiçi mod (Xrm.WebApi.online) için desteklenir.
Sözdizimi
Xrm.WebApi.online.execute(request).then(successCallback, errorCallback);
Parametreler
| İsim | Türü | Gerekli | Description |
|---|---|---|---|
request |
Nesne | Yes | Eylem, işlev veya CRUD isteği yürütmek için Web API uç noktasına geçirilecek nesne. nesnesi, yürütmek istediğiniz eylem, işlev veya CRUD isteği için meta verileri tanımlamanızı sağlayan prototipi aracılığıyla bir getMetadata yöntemi kullanıma sunar. Bkz . request.getMetadata yöntemi |
successCallback |
İşlev | Hayı | İşlem başarıyla yürütülürken çağrılacak bir işlev. Bkz . Dönüş Değeri |
errorCallback |
İşlev | Hayı | İşlem başarısız olduğunda çağrılacak bir işlev. Aşağıdaki özelliklere sahip bir nesne geçirilir: - errorCode:Sayı. Pozitif ondalık sayı olarak hata kodu. Örneğin, olarak 0x80040333 belgelenen hata kodu olarak 2147746611döndürülür.- message:Dizgi. Sorunu açıklayan bir hata mesajı. |
request.getMetadata yöntemi
getMetadata yöntemi aşağıdaki parametrelere sahiptir:
| İsim | Türü | Gerekli | Description |
|---|---|---|---|
boundParameter |
String | Hayı | Yürütülecek eylem veya işlevin ilişkili parametresinin adı. - CRUD isteği yürütüyorsanız belirtin undefined .- Yürütülecek eylemin veya işlevin herhangi bir tabloya bağlı olup olmadığını belirtin null .- Yürütülecek eylemin veya işlevin bir tabloya bağlı olması durumunda belirtin entity . |
operationName |
String | Hayı | CRUD isteği yürütüyorsanız eylemin, işlevin veya aşağıdaki değerlerden birinin adı: Create, Retrieve, Updateveya Delete. |
operationType |
Sayı | Hayı | Yürütmekte olduğunuz işlemin türünü gösterir; aşağıdaki değerlerden birini belirtin: - 0:Eylem- 1:Fonksiyon- 2:CRUD |
parameterTypes |
Nesne | Yes | Parametre türleri için meta veriler. nesnesi aşağıdaki değerlere sahiptir:enumProperties : (İsteğe bağlı) Nesnesi. Sabit listesi türleri için meta veriler. Nesnenin iki dize değeri vardır: name ve valuestructuralProperty :Sayı. Parametre türünün kategorisi. Aşağıdaki değerlerden birini belirtin:- 0:Bilinmeyen- 1: PrimitiveType- 2: ComplexType- 3: EnumerationType- 4:Koleksiyon- 5: EntityTypetypeName :Dizgi. Parametre türünün tam adı. |
Dönüş Değeri
Başarılı olduğunda, aşağıdaki özelliklere sahip öğesine successCallback bir promise nesnesi döndürür:
| İsim | Türü | Description |
|---|---|---|
body(Kullanım dışı) |
Nesne | Yanıt gövdesi. |
headers |
Nesne | Yanıt üst bilgileri. |
ok |
Boolean | İsteğin başarılı olup olmadığını gösterir. |
status |
Sayı | Yanıt durum kodundaki sayısal değer. Örneğin: 200 |
statusText |
String | Yanıt durum kodunun açıklaması. Örneğin: OK |
type(Kullanım dışı) |
String | Yanıt türü. Değerler şunlardır: boş dize (varsayılan), arraybuffer, blob, document, jsonve text. |
url |
String | Web API uç noktasına gönderilen eylem, işlev veya CRUD isteğinin URL'sini isteme. |
json |
Söz | Geri çağırma temsilcisinin parametresi herhangi bir türdedir (JSON nesnesi). |
text |
Söz | Geri çağırma temsilcisinin parametresi bir Dize'dir. |
Örnekler
Aşağıdaki örnekleri bulabilirsiniz:
- Eylem yürütme
- İşlev yürütme
- Kayıt oluşturma
- Kayıt alma
- Kaydı güncelleştirme
- Kaydı silme
- Kaydı ilişkilendirme
- Kaydın ilişkilendirmesini kaldır
Tavsiye
Yöntemini kullanan JavaScript kodu oluşturmak için Dataverse REST Builder'ıXrm.WebApi.online.execute kullanabilirsiniz.
Eylem yürütme
Aşağıdaki örnekte, Dynamics 365 for Sales çözümünde bulunan eylemin nasıl yürütülecekleri WinOpportunity gösterilmektedir. İstek nesnesi buradaki eylem tanımına göre oluşturulur: İlişkisiz eylemler
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
});
İşlev yürütme
Aşağıdaki örnekte WhoAmI işlevinin nasıl yürütülecekleri gösterilmektedir:
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
});
Aşağıdaki örnekte işlevin nasıl yürütülecekleri gösterilmektedir 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
});
Aşağıdaki örnekte işlevin nasıl yürütülecekleri gösterilmektedir 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
});
Aşağıdaki örnekte işlevin nasıl yürütülecekleri gösterilmektedir 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 işlemleri gerçekleştirme
Kayıt oluşturma
Aşağıdaki örnek, oluşturma işleminin nasıl gerçekleştirilacağını gösterir.
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
});
Kayıt alma
Aşağıdaki örnekte bir alma işleminin nasıl gerçekleştirebileceğiniz gösterilmektedir.
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
});
Kaydı güncelleştirme
Aşağıdaki örnekte bir güncelleştirme işleminin nasıl gerçekleştirebileceğiniz gösterilmektedir.
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
});
Kaydı silme
Aşağıdaki örnekte silme işleminin nasıl gerçekleştireceği gösterilmektedir.
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
});
Kaydı ilişkilendirme
Aşağıdaki kod örneğinde, koleksiyon değerli gezinti özelliklerinde (One-To-Many ve Çok-To-Many ilişkileri) bir associate işleminin nasıl gerçekleştirilebileceği gösterilmektedir. Tek değerli gezinti özellikleri için (Çok-To-One ilişkiler(Arama sütunları) için yukarıda gösterildiği gibi bir Güncelleştirme işlemi gerçekleştirebilir veya Xrm.WebApi.updateRecord kullanabilirsiniz.
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
});
Kaydın ilişkilendirmesini kaldır
Aşağıdaki kod örneğinde, koleksiyon değerli gezinti özelliklerinde (One-To-Many ve Çok-To-Many ilişkileri) İlişki kaldırma işleminin nasıl gerçekleştirilebileceği gösterilmektedir. Tek değerli gezinti özellikleri için (Çok-To-One ilişkiler(Arama sütunları) için yukarıda gösterildiği gibi bir Güncelleştirme işlemi gerçekleştirebilir veya Xrm.WebApi.updateRecord kullanabilirsiniz.
Uyarı
Hedef varlık kaydını tek bir işlemde birden çok ilişkili varlık kaydıyla ilişkilendirmeye olanak tanıyan İlişkilendirme işleminin aksine, İlişkiyi Kaldırma işlemi her işlem için hedef varlık kaydından yalnızca bir varlık kaydının ilişkilendirilmesiyle sınırlıdır.
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
});