Si alguna vez has creado algún Web Resource, el 90% de las veces seguramente hayas tenido que usar el

<script src="../ClientGlobalContext.js.aspx" type="text/javascript" ></script>

O probablemente y lo más seguro es que tengas miles de parent.Xrm y con ello miles de parent.Xrm.Page que como bien sabrás, Microsoft ha comunicado que van a estar deprecados.

https://docs.microsoft.com/es-es/power-platform/important-changes-coming#some-client-apis-are-deprecated

Incluso en este post de Microsoft pone literalmente lo siguiente debajo del Xrm.Page:

Aunque Xrm.Page esté obsoleto, parent.Xrm.Page seguirá funcionando en el caso de los recursos web HTML integrados en formularios como este, ya que esta es la única manera de acceder al contexto del formulario desde el recurso web HTML.

Pues bien, digamos que esto no es 100% verdad.

En este pequeño post explicaremos rápido y brevemente como obtener el formContext y el Xrm en tu HTML Web Resource sin que tengas que usar esos parent.Xrm tan odiosos que llenarán tu HTML y que puede ser que algún día se queden obsoletos.

¡Empecemos!

Cosas necesarias antes de empezar

Como bien podrás adivinar, necesitaremos un par de cositas aquí.

  1. Un Web Resource HTML que será en el que tengamos todo nuestro HTML. Este deberá estar insertado en el Formulario. (En nuestro ejemplo se llama account.html)
  2. Tu Javascript que saltará en el OnLoad de la entidad en la que tienes tu WebResource incrustado. En nuestro caso hemos creado un account.js que será nuestro webresource en el que añadiremos nuestro OnLoad.

Parte principal

En el formulario de nuestra entidad account hemos añadido un WebResource HTML tal y como ves ahora mismo en el formulario.

Cómo obtener el formContext y el Xrm en tu HTML Web Resource sin el parent.Xrm (deprecated)

Dentro de nuestro HTML, el código que vamos a tener va a ser el siguiente:

Cómo obtener el formContext y el Xrm en tu HTML Web Resource sin el parent.Xrm (deprecated)

Como bien veis, al principio tenemos un onLoadWebResource() que será el método principal de nuestro HTML. En él pasaremos los Xrm y el formContext que vengan de nuestro recurso principal en la entidad, vamos a verlo.

Cómo obtener el formContext y el Xrm en tu HTML Web Resource sin el parent.Xrm (deprecated)

Vamos a ver que sucede cuando ejecutamos nuestro OnLoad.

¡Boom!

Cómo obtener el formContext y el Xrm en tu HTML Web Resource sin el parent.Xrm (deprecated)

¡Genial! Funciona, pero… ¿Cómo?

https://docs.microsoft.com/es-es/powerapps/developer/model-driven-apps/clientapi/reference/controls/getcontentwindow

Aún no está la versión en español de esta página.

Vamos a desgranar un poco lo que ha sucedido.

Cuando ejecutamos nuestro OnLoad en el recurso principal, en nuestro caso el account.js, estamos usando la funcionalidad de .getContentWindow(). En esta le pasaremos por parámetros las variables de Xrm y formContext. Si tuvieras más variables que quisieras pasar a tu WebResource, este el método más rápido.

En nuestra función GetAttributes le estamos pasando como parámetro formContext que será el formContext de la cuenta Axazure.

Y así es como podremos cambiar nuestro parent.Xrm que serán obsoletos en algún momento de futuro por el formContext.

Espero que os haya podido ayudar y que tengáis una nueva forma de obtener el formContext desde un WebResource HTML.