0

Я пытаюсь создать javascript, чтобы открыть диалог.Динамика CRM: Javascript триггеры открыть диалог

Как только значение поля, называемого «new_mstatus» в текущей записи, равно «Неактивно», и пользователь намеревается открыть эту запись, откроется диалоговое окно.

function opendialog() { 
    if(Xrm.Page.ui.getFormType() == 1) 
    { 
     Xrm.Page.data.entity.save(null); 
     return; 
    } 

    // If inactive then trigger dialog 
    if (Xrm.Page.getAttribute("new_mstatus").getValue() == 'Inactive') { 

     window.open("/" + Xrm.Page.context.getOrgUniqueName() + "/cs/dialog/rundialog.aspx?DialogId=%7b840D55C6-8307-450B-977F-6A9C9844CCE7%7d&EntityName=appointment&ObjectId=" + Xrm.Page.data.entity.getId()); 

     // Set as being displayed so it doesn't trigger again on load 
     Xrm.Page.getAttribute("new_displayeddialog").setValue(true); 

    } 
} 

но он не работает. даже всплывающее окно с ошибкой.

Может кто-нибудь дать мне руку с этим?

Большое спасибо.

+1

Какой тип поля "new_mstatus"? –

+1

Вы пробовали отладку в IE? Затем вы можете последовательно следовать коду. –

+0

Что вы называете своей функцией opendialog? – Daryl

ответ

0

проблема в том, что вы проверяете числовое значение параметра (принятое функцией getValue) против строки (Inactive в вашем случае).

Так у вас есть 2 возможности:

  • Найдите значение OptionSet для Inactive (это правильный путь)
// assuming 900000000 is the value for Inactive 
if (Xrm.Page.getAttribute("new_mstatus").getValue() == 900000000) { 
  • Получить метку OptionSet вместо значения с помощью функция getText (не предлагается, потому что не будет работать, если смена метки, например, в многоязычных средах)
if (Xrm.Page.getAttribute("new_mstatus").getText() =='Inactive') {