Quiero pasar datos de mi tabla html dinámica en el evento de clic de botón al formulario de cuenta de la aplicación basada en modelo en Dynamic 365 CRM. Pero no soy capaz de pasar los datos. Consulte la siguiente función de script java que utilicé para pasar datos.
function addAddress(event) { var row = $(event); var parent = row.parent(); parent = parent.parent(); window.parent.Xrm.Page.getAttribute("address1_line1").setValue(parent.closest("tr").find('td:eq(0)').text()); window.parent.Xrm.Page.getAttribute("address1_line2").setValue(parent.closest("tr").find('td:eq(1)').text()); window.parent.Xrm.Page.getAttribute("address1_line3").setValue(parent.closest("tr").find('td:eq(2)').text()); window.parent.Xrm.Page.getAttribute("address1_city").setValue(parent.closest("tr").find('td:eq(3)').text()); window.parent.Xrm.Page.getAttribute("address1_stateorprovince").setValue(parent.closest("tr").find('td:eq(4)').text()); window.parent.Xrm.Page.getAttribute("address1_country").setValue(parent.closest("tr").find('td:eq(6)').text()); }Una opción simple es refactorizar su código para usar la función postMessage() . Una vez que se hace clic en ese botón en su HTML WebResource, puede publicar un mensaje que puede ser manejado por el formulario que puede tomar medidas en función de eso.
Como ejemplo, cuando se activa un evento X en su HTML WebResource, el siguiente código envía un mensaje (puede formatear su objeto como desee) a la ventana principal (formulario de cuenta):
// Please change the targetOrigin parameter window.parent.postMessage({ "line1": "value1", "line2": "value2"}, "*"); En su formulario de cuenta JS WebResource, el siguiente código registra un controlador de eventos que escuchará su mensaje y tomará medidas utilizando el objeto _formContext que se puede guardar en el evento onLoad (como reemplazo de Xrm.Page que ha quedado obsoleto):
window.addEventListener('message', function (event) { // Important. Only accept messages from trusted origins if (event.origin === "XXX") { var messageData = event.data; _formContext.getAttribute("address1_line1").setValue(messageData.line1); _formContext.getAttribute("address1_line2").setValue(messageData.line2); } }); Es importante que utilice los métodos postMessage y addEventListener en el objeto de ventana correcto, de modo que si el código anterior no funciona como está (acabo de tomar el código de documentación de Mozilla y lo cambié para adaptarlo a su escenario), revise esto, ya que es posible que deba cambiar window.addEventListener a window.parent.addEventListener .