Контекст формы в Dynamics 365 версии 9

Мне нужно получить доступ к элементу управления веб-ресурсом, чтобы обновить его. По ссылке ниже нам нужно иметь контекст формы.

Но я не могу получить контекст формы и не могу найти его где-нибудь в документации о том, как получить доступ к контексту выполнения в веб-ресурсах HTML. Я попытался зарегистрировать функцию при загрузке формы и передать в нее параметр выполнения, используя свойства формы. Затем в функции я получаю это, как показано ниже, с переменной formContext в качестве глобальной переменной.

var formContext;
function getFormExecutionContext(executionContext) {
    formContext =  executionContext.getFormContext();  
    console.log("Form Context: "); 
    console.dir(formContext); 
}

Однако, когда я попытался получить доступ к этому formContext в другом веб-ресурсе HTML, размещенном в форме CRM, он сказал неопределенный. Может кто-нибудь объяснить, как мы можем получить контекст формы в веб-ресурсе HTML?

1 ответ

Обычно мы включаем приведенный ниже фрагмент в раздел заголовка веб-ресурса HTML, это представит вам контекст CRM и элементы управления вне формы CRM.

<head>
    <title>HTML Web Resource</title>
    <script src="../ClientGlobalContext.js.aspx" type="text/javascript" ></script>
</head>

Затем получите доступ к элементам управления следующим образом:

parent.Xrm.Page.getAttribute("my_control").getValue();

То же самое должно работать в v9 для обратной совместимости, может не упоминаться в документации.

Если ваша кнопка ленты находится на подсетке, и вам необходимо получить доступ к FormContext в версии 9.0 или более поздней, вот подробности.

В части ленты передайте следующий параметр.

<Actions>
    <JavaScriptFunction FunctionName="subgridEvent" Library="$webresource:new_contactformload.js"> 
        <CrmParameter Value="PrimaryControl" /> 
     </JavaScriptFunction>
</Actions>

А вот и функция для доступа к контексту формы.

function ribbonHandler(e) { 
    var formContext = e.getFormContext();
    var recordId = formContext.data.entity.getId(); 
    var fieldValue = formContext.getAttribute("<field_name>").getValue(); 
}

Вот ссылка, которая сэкономила мое время.

Другие вопросы по тегам