Xrm.WebApi en una chuleta: crear, leer, actualizar y borrar
Esta es la chuleta que tengo a mano para las cuatro operaciones básicas con Xrm.WebApi desde un formulario, usando async/await:
// Crear: devuelve { entityType, id }
const { id } = await Xrm.WebApi.createRecord("account", {
name: "Axazure",
revenue: 5000000,
"primarycontactid@odata.bind": "/contacts(00000000-0000-0000-0000-000000000000)",
});
// Leer un registro
const account = await Xrm.WebApi.retrieveRecord("account", id, "?$select=name,revenue");
// Actualizar (ojo: el id va como segundo parámetro)
await Xrm.WebApi.updateRecord("account", id, { revenue: 6000000 });
// Borrar
await Xrm.WebApi.deleteRecord("account", id);Los lookups se rellenan con campo@odata.bind y la ruta /<nombre-del-conjunto>(<guid>), en plural (/contacts(...)). Ese nombre de campo es la propiedad de navegación, que en los campos personalizados suele coincidir con el nombre de esquema, con sus mayúsculas.
Pon siempre $select al leer, porque si no te traes todas las columnas y la llamada va bastante más lenta.
El fallo que más veo es en updateRecord, cuando alguien se olvida del id y pasa los datos como segundo parámetro. Falla, y el mensaje de error no ayuda mucho a darse cuenta.