Buenas tardes,
hoy vamos a ver un pequeño "truco" que nos va a permitir ahorrarnos muchos quebraderos de cabeza y mucho código.
En muchas ocasiones vamos a necesitar acceder desde el formulario de una entidad a los campos de una entidad relacionada a esta (lookup). Esto podemos afrontarlo mediante la utilización de javascript, lanzando una consulta SOAP para recuperar los atributos deseados, si bien esta labor en ocasiones puede hacerse muy pesada.
Si los atributos que deseamos conseguir son de la entidad desde la que hemos abierto el formulario actual podemos utilizar la función window.opener desde el onload del formulario en que nos encontamos. De este modo podemos acceder a los datos de la entidad padre de esta.
Con la siguiente linea de código accedemos al formulario de la entidad padre:
window.opener.parent.document.all.crmForm
En ese momento accedemos al formulario de la entidad padre (opener), y a todos los efectos el comportamiento es el mismo que si estuvieramos desde el formulario del elemento actual. Por ejemplo, si escribimos:
window.opener.parent.document.all.crmForm.new_atributo.DataValue
obtendemos el valor de un atributo llamado "new_atributo" que pertenece a la entidad padre de la actual.
Si escribimos:
window.opener.parent.document.all.crmForm.ObjectTypeCode
obtenemos el código del objeto padre de la entidad actual.
Cómo podemos apreciar, con una solo linea de codigo podemos sustituir un codigo mucho más pesado, como puede ser un SOAP, no solo por el número de líneas de código sino también por evitarnos tener una llamada a un servicio web, ya que el valor le obtenemos directamente en el cliente.
Espero os sirva de ayuda.
Un saludo,
Álvaro.
Etiquetas: 4.0, atributos, attributes, deployment, Dynamics, form, formulario, javascript, Microsoft, opener, window