Показать сообщение отдельно
Старый 06.09.2018, 15:31   #1  
Ion is offline
Ion
Участник
 
332 / 16 (1) ++
Регистрация: 19.12.2012
Run action from javascript
Привет!

Давно не использовать экшены и в новой версии не знаю, как правильно их вызывать.

Вернее надо с кастомной страницы вызвать экшен, который по определенной логике вышлет письма. Изначально был и есть диалог с этой логикой подвязанный под акаунт.

Вопрос вот в чем:
- если буду его вызывать с JS то делать глобальным и прокидывать параметры нужные процессу - акаунт и контакт;
- указать сущность акаунт и тогда при вызове просто прокидывать один лишь контакт, но тут мне не ясно как указать что все будет осуществляться в контексте данного акаунта, там можно как это инициализировать?

Код:
function CallCustomAction() {
    try {

        var reqName = "new_sendfollowupemail";
        var clientUrl = Xrm.Page.context.getClientUrl();
        var parameters = {
           "Account":
                  {
                      "@odata.type": "Microsoft.Dynamics.CRM.account",
                      "accountid": "C4CA0B66-59B9-E611-8106-C4346BDC0E01",
                      "name": "Account Test",
                      "accountnumber": "123"
                  }
		  "Contact":
                  {
                      "@odata.type": "Microsoft.Dynamics.CRM.contact",
                      "contactid": "C4CA0B66-59B9-E611-8106-C4346BDC0E01",
                      "name": "Contact Test",
                      "accountnumber": "321"
                  }	  
        };

        //Create request
        var req = new XMLHttpRequest();
        req.open("POST", clientUrl + "/api/data/v8.2/" + reqName, true);
        req.setRequestHeader("Accept", "application/json");
        req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
        req.setRequestHeader("OData-MaxVersion", "4.0");
        req.setRequestHeader("OData-Version", "4.0");

        req.onreadystatechange = function () {

            if (this.readyState == 4 /* complete */) {
                req.onreadystatechange = null;

                if (this.status == 200 || this.status == 204) {
                    //success callback   
                    console.log("Success");
                } else {
                    //error callback      
                    console.log("Error");
                }
            }
        };
        req.send(JSON.stringify(parameters));

    } catch (e) {
        alert(e.message);
    }
}