Cómo rellenar un lookup desde JavaScript en un formulario de Dynamics 365
Un campo de búsqueda (lookup) no se rellena pasándole un GUID sin más. Lo que espera es un array con un objeto que tenga id, name y entityType, y yo suelo tener una función pequeña para no repetirlo cada vez:
function setLookup(executionContext, fieldName, id, name, entityType) {
const formContext = executionContext.getFormContext();
formContext.getAttribute(fieldName).setValue([
{ id: id, name: name, entityType: entityType },
]);
}
// Ejemplo: poner la cuenta principal
setLookup(executionContext, "parentcustomerid", "00000000-0000-0000-0000-000000000000", "Axazure", "account");En entityType va el nombre lógico de la tabla (account, contact), no el nombre para mostrar. El name es el texto que se ve en el formulario, y si no lo pones el campo parece vacío hasta que guardas.
Con los lookups de cliente, como customerid o parentcustomerid, hay que fijarse más, porque aceptan varias tablas y si el entityType no es el correcto el guardado falla.
Para vaciar el campo, formContext.getAttribute(fieldName).setValue(null).