Limitaciones de la API web de Microsoft Dynamics 365
Publicado: enero de 2017
Se aplica a: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online
La API web de Microsoft Dynamics 365 proporcionará paridad completa con las capacidades de servicio de la organización. Para Microsoft Dynamics 365 (en línea y local), este tema describe algunas de las limitaciones.
En este tema
Limitaciones de Actualización de diciembre de 2016 para Microsoft Dynamics 365 (online) y Service Pack de diciembre de 2016 para Microsoft Dynamics 365 (local)
Limitaciones abordadas en Actualización de diciembre de 2016 para Microsoft Dynamics 365 (online) y Service Pack de diciembre de 2016 para Microsoft Dynamics 365 (local)
Limitaciones abordadas en Actualización 1 de Microsoft Dynamics CRM Online 2016 y Microsoft Dynamics CRM 2016 Service Pack 1
Limitaciones abordadas en Actualización 0.1 de Microsoft Dynamics CRM Online 2016 y Actualización 0.1 de Microsoft Dynamics CRM 2016
Limitaciones de Actualización de diciembre de 2016 para Microsoft Dynamics 365 (online) y Service Pack de diciembre de 2016 para Microsoft Dynamics 365 (local)
En esta sección se proporciona información sobre las limitaciones en Actualización de diciembre de 2016 para Microsoft Dynamics 365 (online) y Service Pack de diciembre de 2016 para Microsoft Dynamics 365 (local).
Algunas acciones personalizadas no disponibles en la API web
Funciones y acciones que faltan para algunos mensajes de servicio de la organización
Algunas acciones personalizadas no disponibles en la API web
Si define una acción personalizada que incluya un valor de devolución complejo y un valor de devolución simple, una acción correspondiente no está disponible en la API web pero está disponible mediante el extremo de 2011 SOAP. Un valor de devolución complejo es una EntityReference, Entity, o EntityCollection. Puede tener cualquier combinación de valores de devolución simples o un solo valor de devolución complejo.Más información:Crear acciones propias
Funciones y acciones que faltan para algunos mensajes de servicio de la organización
La siguiente tabla enumera los mensajes que no tienen una función o una acción correspondiente después de que se apliquen Actualización de diciembre de 2016 para Microsoft Dynamics 365 (online) y Service Pack de diciembre de 2016 para Microsoft Dynamics 365 (local).
Para obtener una lista de las funciones y acciones que faltan de la versión inicial, combine esta lista con la lista de Las funcionalidades y acciones agregadas en Actualización 0.1 de Microsoft Dynamics CRM Online 2016 y Actualización 0.1 de Microsoft Dynamics CRM 2016 y Las funcionalidades y acciones agregadas en Actualización 1 de Microsoft Dynamics CRM Online 2016 y Microsoft Dynamics CRM 2016 Service Pack 1.
Limitaciones abordadas en Actualización de diciembre de 2016 para Microsoft Dynamics 365 (online) y Service Pack de diciembre de 2016 para Microsoft Dynamics 365 (local)
En esta sección se proporciona información sobre las limitaciones abordadas en Actualización de diciembre de 2016 para Microsoft Dynamics 365 (online) y Service Pack de diciembre de 2016 para Microsoft Dynamics 365 (local).
API web no habilitada para Microsoft Dynamics 365 para Outlook con acceso sin conexión mientras el usuario está sin conexión
No se pueden consultar valores de fecha
Cuando se llama a acciones con parámetros de la colección de entidades, así como otros parámetros, se debe pasar un parámetro de colección como último parámetro en el cuerpo
No puede crear un atributo de búsqueda de clientes
No se pueden recuperar metadatos sin publicar
Nuevas operaciones agregadas
Las operaciones siguientes se han agregado a la API web para Actualización de diciembre de 2016 para Microsoft Dynamics 365 (online) y Service Pack de diciembre de 2016 para Microsoft Dynamics 365 (local).
API web no habilitada para Microsoft Dynamics 365 para Outlook con acceso sin conexión mientras el usuario está sin conexión
Nota
Este problema se aborda en Actualización de diciembre de 2016 para Microsoft Dynamics 365 (online) y Service Pack de diciembre de 2016 para Microsoft Dynamics 365 (local).
El código JavaScript que ese ejecuta en scripts de formularios, comandos de la cinta de opciones, o los recursos web HTML no puede usar la API web. Ahora está habilitado en el servidor local usado cuando el usuario se desconecta.
No se pueden consultar valores de fecha
Este problema no era realmente una limitación, solo un problema de sintaxis. No use comillas simples al especificar una fecha como valor para un filtro.
Cuando consulte una propiedad de fecha, como la fecha de nacimiento de un contacto, la siguiente sintaxis de consulta funciona.
/contacts?$select=fullname,birthdate&$filter=birthdate eq 1990-01-01
La siguiente sintaxis no funcionará:
/contacts?$select=fullname,birthdate&$filter=birthdate eq '1990-01-01'
Cuando se llama a acciones con parámetros de la colección de entidades, así como otros parámetros, se debe pasar un parámetro de colección como último parámetro en el cuerpo
Nota
Este problema se aborda en Actualización de diciembre de 2016 para Microsoft Dynamics 365 (online) y Service Pack de diciembre de 2016 para Microsoft Dynamics 365 (local).
Las acciones siguientes contienen un parámetro de colección de entidades, además de otros parámetros.
Antes de Actualización de diciembre de 2016 para Microsoft Dynamics 365 (online) y Service Pack de diciembre de 2016 para Microsoft Dynamics 365 (local), cuando use estas acciones, el parámetro que incluye la colección de entidades se debe pasar como último parámetro en JSON o el sistema devolverá un error. Por ejemplo, recibirá un error al usar QualifyMemberList Action y pasar los valores de parámetro de la siguiente manera.
{
"ListMember": [
{
"@odata.type": "Microsoft.Dynamics.CRM.account",
"accountid": "483F8080-6976-E511-9172-0024E8436263"
},
{
"@odata.type": "Microsoft.Dynamics.CRM.account",
"accountid": "4D3F8080-6976-E511-9172-0024E8436263"
}
],
"OverrideorRemove": true
}
Pero lo siguiente deberá tener éxito.
{
"OverrideorRemove": true,
"ListMember": [
{
"@odata.type": "Microsoft.Dynamics.CRM.account",
"accountid": "483F8080-6976-E511-9172-0024E8436263"
},
{
"@odata.type": "Microsoft.Dynamics.CRM.account",
"accountid": "4D3F8080-6976-E511-9172-0024E8436263"
}
]
}
No puede crear un atributo de búsqueda de clientes
Nota
Este problema se aborda en Actualización de diciembre de 2016 para Microsoft Dynamics 365 (online) y Service Pack de diciembre de 2016 para Microsoft Dynamics 365 (local).
Crear atributo de búsqueda de clientes mediante la API web no es compatible con Actualización 1 de Microsoft Dynamics CRM Online 2016 y Microsoft Dynamics CRM 2016 Service Pack 1.
Para crear un atributo de búsqueda de clientes con la API web mediante Actualización de diciembre de 2016 para Microsoft Dynamics 365 (online) y Service Pack de diciembre de 2016 para Microsoft Dynamics 365 (local), vea Crear un atributo de búsqueda de clientes.
No se pueden recuperar metadatos sin publicar
Nota
Este problema se aborda en Actualización de diciembre de 2016 para Microsoft Dynamics 365 (online) y Service Pack de diciembre de 2016 para Microsoft Dynamics 365 (local).
Los mensajes de servicios de la organización que recuperan metadatos incluyen un parámetro RetrieveAsIfPublished que proporciona la opción de devolver definiciones de metadatos que aún no se han confirmado mediante publicación. Esta característica es útil cuando se está creando una aplicación que usaría para editar metadatos y necesitaría para permitir guardar cambios no confirmados. En Actualización 1 de Microsoft Dynamics CRM Online 2016 y Microsoft Dynamics CRM 2016 Service Pack 1, todas las operaciones de recuperación con metadatos sólo devuelven los metadatos publicados.Más información:Usar la API web con metadatos de Dynamics 365 y Publicación de personalizaciones.
Limitaciones abordadas en Actualización 1 de Microsoft Dynamics CRM Online 2016 y Microsoft Dynamics CRM 2016 Service Pack 1
Actualización 1 de Microsoft Dynamics CRM Online 2016 y Microsoft Dynamics CRM 2016 Service Pack 1 han agregado funciones y acciones, y abordan los problemas siguientes con la API web:
Las funcionalidades y acciones agregadas en Actualización 1 de Microsoft Dynamics CRM Online 2016 y Microsoft Dynamics CRM 2016 Service Pack 1
No se pueden filtrar consultas en función del valor de una propiedad de navegación de un solo valor
Las funcionalidades y acciones agregadas en Actualización 1 de Microsoft Dynamics CRM Online 2016 y Microsoft Dynamics CRM 2016 Service Pack 1
En la tabla siguiente se muestran las funciones y las acciones agregadas para Actualización 1 de Microsoft Dynamics CRM Online 2016 y Microsoft Dynamics CRM 2016 Service Pack 1.
No se pueden filtrar consultas en función del valor de una propiedad de navegación de un solo valor
Nota
Este problema se soluciona parcialmente en Actualización 1 de Microsoft Dynamics CRM Online 2016 y Microsoft Dynamics CRM 2016 Service Pack 1. Ahora puede filtrar consultas en la propiedad de navegación de un solo valor si la propiedad de navegación hace referencia al valor de atributo principal de la entidad a la que se hace referencia.Más información:Filtrar registros en función de propiedad de navegación de un solo valor
Si usa la propiedad de una propiedad de navegación de un solo valor como filtro en una consulta, verá un error 501. Por ejemplo, la siguiente consulta intenta recuperar todas las cuentas donde el valor de la propiedad firstname del contacto principal sea "Renee".
Solicitud
GET [Organization URI]/api/data/v8.0/accounts?$select=name&$filter=primarycontactid/firstname eq 'Renee' HTTP/1.1 Accept: application/json OData-MaxVersion: 4.0 OData-Version: 4.0
Respuesta
HTTP/1.1 501 Not Implemented Content-Type: application/json; odata.metadata=minimal OData-Version: 4.0 { "error": { "code": "", "message": "The query node (0) is not supported", "innererror": { "message": "The query node (0) is not supported", "type": "Microsoft.Crm.CrmHttpException", "stacktrace": <stacktrace value removed for brevity> } } }
Limitaciones abordadas en Actualización 0.1 de Microsoft Dynamics CRM Online 2016 y Actualización 0.1 de Microsoft Dynamics CRM 2016
Actualización 0.1 de Microsoft Dynamics CRM Online 2016 y Actualización 0.1 de Microsoft Dynamics CRM Online 2016 tienen capacidades y acciones agregadas, y han abordado los problemas siguientes con la API web.
Las funcionalidades y acciones agregadas en Actualización 0.1 de Microsoft Dynamics CRM Online 2016 y Actualización 0.1 de Microsoft Dynamics CRM 2016
Error al consultar relaciones de varios a varios que hacen referencia a sí mismas
$select puede ignorarse en algunas expresiones $expand
Las propiedades de navegación de un solo valor no se pueden devolver desde una consulta $expand si tienen un valor nulo
Las consultas FetchXML vinculadas a activitypointer no pueden incluir campos vinculados
Las propiedades de valor nulo pueden no devolverse en resultados de propiedad de navegación expandidas
Las funcionalidades y acciones agregadas en Actualización 0.1 de Microsoft Dynamics CRM Online 2016 y Actualización 0.1 de Microsoft Dynamics CRM 2016
En la tabla siguiente se muestran las funciones y las acciones agregadas para Actualización 0.1 de Microsoft Dynamics CRM Online 2016 y Actualización 0.1 de Microsoft Dynamics CRM 2016.
Error al consultar relaciones de varios a varios que hacen referencia a sí mismas
Nota
Este problema se aborda en Actualización 0.1 de Microsoft Dynamics CRM Online 2016 y Actualización 0.1 de Microsoft Dynamics CRM 2016.
Hay dos entidades del sistema con relaciones de varios a varios que hacen referencia a sí mismas: connectionrole EntityType tiene connectionroleassociation_association y campaign EntityType tiene campaigncampaign_association. Si intenta una consulta que usa estas propiedades de navegación valoradas como colección, se espera el siguiente error HTTP Status 400: Reflexive relationship must specify direction using ReflexiveManyToManyRelationship.
Si necesita consultar datos utilizando estas relaciones de varios a varios, puede usar las entidades que se cruzan en su lugar. Para la propiedad de navegación valorada como colección campaigncampaign_association, la entidad campaignitem EntityType es la entidad de intersección especial que define las relaciones. Para connectionroleassociation_association, connectionroleassociation es la entidad de intersección ordinaria que contiene los datos que definen esta relación de varios a varios. Las entidades de intersección ordinarias no se incluyen en la documentación de referencia pero están disponibles en la API web. Puede obtener acceso a la entidad connectionroleassociation mediante este URI: /api/data/v8.0/connectionroleassociations.Más información:Propiedades de navegación valoradas como colección
$select puede ignorarse en algunas expresiones $expand
Nota
Este problema se aborda en Actualización 0.1 de Microsoft Dynamics CRM Online 2016 y Actualización 0.1 de Microsoft Dynamics CRM 2016.
Al recuperar dos propiedades de navegación, si la última propiedad de navegación no tiene opción de consulta $select, todas las propiedades de la primera propiedad de navegación se devuelven. Por ejemplo, si crea la siguiente consulta:
GET
[Organization URI]/api/data/v8.0/accounts(0495779B-F67F-E511-80C2-00155DB09B03)$select=name&$expand=contact_customer_accounts($select=lastname),opportunity_customer_accounts
Usted espera la propiedad name de la cuenta, lastname de los contactos asociados utilizando contact_customer_accounts y todas las propiedades de las oportunidades asociadas utilizando opportunity_customer_accounts.
Sin embargo, obtendrá todas las propiedades de los contactos así como todas las propiedades de oportunidades relacionadas. Se recomienda usar siempre $select para limitar las propiedades en cualquier operación de recuperación, por lo que seguir esta recomendación le garantizará obtener el máximo rendimiento y no recuperar más datos de los que necesita.
Las propiedades de navegación de un solo valor no se pueden devolver desde una consulta $expand si tienen un valor nulo
Nota
Este problema se aborda en Actualización 0.1 de Microsoft Dynamics CRM Online 2016 y Actualización 0.1 de Microsoft Dynamics CRM 2016.
De acuerdo con la especificación de OData, cuando expande una sola propiedad de navegación y no contiene ningún valor, la propiedad se debe incluir con conjunto nulo. El comportamiento actual es que la propiedad no se incluirá en la respuesta de JSON. En el ejemplo siguiente, se solicita la propiedad de navegación de un solo valor primarycontactid de la cuenta, pero dado que no ningún contacto asociado con esa propiedad de navegación, el valor es nulo.
Solicitud
GET [Organization URI]/api/data/v8.0/accounts(25DD0B31-ED8B-E511-80D2-00155D2A68D4)?$select=name&$expand=primarycontactid($select=fullname) HTTP/1.1 Accept: application/json Content-Type: application/json; charset=utf-8 OData-MaxVersion: 4.0 OData-Version: 4.0
Respuesta esperada
HTTP/1.1 200 OK OData-Version: 4.0 { "@odata.context": " [Organization URI]/api/data/v8.0/$metadata#accounts(name,primarycontactid,primarycontactid(fullname))/$entity", "@odata.etag": "W/\"504724\"", "name": "A. Datum Corporation (sample)", "accountid": "25dd0b31-ed8b-e511-80d2-00155d2a68d4", "primarycontactid": null }
Respuesta real
HTTP/1.1 200 OK OData-Version: 4.0 { "@odata.context": " [Organization URI]/api/data/v8.0/$metadata#accounts(name,primarycontactid,primarycontactid(fullname))/$entity", "@odata.etag": "W/\"504724\"", "name": "A. Datum Corporation (sample)", "accountid": "25dd0b31-ed8b-e511-80d2-00155d2a68d4" }
Las consultas FetchXML vinculadas a activitypointer no pueden incluir campos vinculados
Nota
Este problema se aborda en Actualización 0.1 de Microsoft Dynamics CRM Online 2016 y Actualización 0.1 de Microsoft Dynamics CRM 2016.
Al crear una consulta con FetchXML que incluya activitypointer como entidad vinculada, los valores de propiedad serán nulos. Por ejemplo, si usa el siguiente fetchXML:
<fetch version="1.0"
output-format="xml-platform"
mapping="logical"
distinct="true">
<entity name="account">
<attribute name="name" />
<link-entity name="activitypointer"
from="regardingobjectid"
to="accountid"
link-type="inner">
<attribute name="subject" />
</link-entity>
</entity>
</fetch>
Está solicitando el activitypointer relacionado. Valor de subject que se devolverá. Se devuelve con un valor nulo cuando existe un valor real.
Solicitud
GET [Organization URI]/api/data/v8.0/accounts?fetchXml=%3Cfetch%20version=%221.0%22%20output-format=%22xml-platform%22%20mapping=%22logical%22%20distinct=%22true%22%3E%3Centity%20name=%22account%22%3E%3Cattribute%20name=%22name%22%20/%3E%3Clink-entity%20name=%22activitypointer%22%20from=%22regardingobjectid%22%20to=%22accountid%22%20link-type=%22inner%22%3E%3Cattribute%20name=%22subject%22%20/%3E%3C/link-entity%3E%3C/entity%3E%3C/fetch%3E HTTP/1.1 Accept: application/json OData-MaxVersion: 4.0 OData-Version: 4.0
Respuesta esperada
HTTP/1.1 200 OK Content-Type: application/json; odata.metadata=minimal OData-Version: 4.0 { "@odata.context": " [Organization URI]/api/data/v8.0/$metadata#accounts(name)", "value": [ { "name": "A. Datum Corporation (sample)", "activitypointer1.subject": "Task Subject Value" } ] }
Respuesta real
HTTP/1.1 200 OK Content-Type: application/json; odata.metadata=minimal OData-Version: 4.0 { "@odata.context": " [Organization URI]/api/data/v8.0/$metadata#accounts(name)", "value": [ { "name": "A. Datum Corporation (sample)", "activitypointer1.subject": null } ] }
Más información:Usar FetchXML personalizado
Las propiedades de valor nulo pueden no devolverse en resultados de propiedad de navegación expandidas
Nota
Este problema se aborda en Actualización 0.1 de Microsoft Dynamics CRM Online 2016 y Actualización 0.1 de Microsoft Dynamics CRM 2016.
Cuando una de las propiedades expandidas de una propiedad de navegación valorada como colección es nula, la propiedad ampliada no se incluirá en los resultados. El primer ejemplo muestra los datos cuando uno de los contactos relacionados con una cuenta tiene un valor nulo para la propiedad emailaddress1 expandida. La propiedad emailaddress1 no se devuelve incluso para el contacto donde tiene un valor.
Solicitud
GET [Organization URI]/api/data/v8.0/accounts(25DD0B31-ED8B-E511-80D2-00155D2A68D4)?$select=name&$expand=contact_customer_accounts($select=emailaddress1,lastname,firstname) HTTP/1.1 Accept: application/json Content-Type: application/json; charset=utf-8 OData-MaxVersion: 4.0 OData-Version: 4.0
Respuesta esperada
HTTP/1.1 200 OK Content-Type: application/json; odata.metadata=minimal OData-Version: 4.0 { "@odata.context": " [Organization URI]/api/data/v8.0/$metadata#accounts(name,contact_customer_accounts,contact_customer_accounts(emailaddress1,lastname,firstname))/$entity", "@odata.etag": "W/\"504724\"", "name": "A. Datum Corporation (sample)", "accountid": "25dd0b31-ed8b-e511-80d2-00155d2a68d4", "contact_customer_accounts": [ { "@odata.etag": "W/\"504749\"", "emailaddress1": null, "lastname": "Valdes (sample)", "firstname": "Rene", "contactid": "8bdd0b31-ed8b-e511-80d2-00155d2a68d4" }, { "@odata.etag": "W/\"503647\"", "emailaddress1": someone_l@example.com, "lastname": "Burk (sample)", "firstname": "Susan", "contactid": "91dd0b31-ed8b-e511-80d2-00155d2a68d4" } ] }
Respuesta real
HTTP/1.1 200 OK Content-Type: application/json; odata.metadata=minimal OData-Version: 4.0 { "@odata.context": " [Organization URI]/api/data/v8.0/$metadata#accounts(name,contact_customer_accounts,contact_customer_accounts(emailaddress1,lastname,firstname))/$entity", "@odata.etag": "W/\"504724\"", "name": "A. Datum Corporation (sample)", "accountid": "25dd0b31-ed8b-e511-80d2-00155d2a68d4", "contact_customer_accounts": [ { "@odata.etag": "W/\"504749\"", "lastname": "Valdes (sample)", "firstname": "Rene", "contactid": "8bdd0b31-ed8b-e511-80d2-00155d2a68d4" }, { "@odata.etag": "W/\"503647\"", "lastname": "Burk (sample)", "firstname": "Susan", "contactid": "91dd0b31-ed8b-e511-80d2-00155d2a68d4" } ] }
La siguiente consulta que utiliza directamente la propiedad de navegación valorada como colección contact_customer_accounts sin expandir devuelve los datos esperados.
Solicitud
GET [Organization URI]/api/data/v8.0/accounts(25DD0B31-ED8B-E511-80D2-00155D2A68D4)/contact_customer_accounts?$select=emailaddress1,lastname,firstname HTTP/1.1 Accept: application/json Content-Type: application/json; charset=utf-8 OData-MaxVersion: 4.0 OData-Version: 4.0
Respuesta
HTTP/1.1 200 OK Content-Type: application/json; odata.metadata=minimal OData-Version: 4.0 { "@odata.context": " [Organization URI]/api/data/v8.0/$metadata#contacts(emailaddress1,lastname,firstname)", "value": [ { "@odata.etag": "W/\"504749\"", "emailaddress1": null, "lastname": "Valdes (sample)", "firstname": "Rene", "contactid": "8bdd0b31-ed8b-e511-80d2-00155d2a68d4" }, { "@odata.etag": "W/\"503647\"", "emailaddress1": "someone_l@example.com", "lastname": "Burk (sample)", "firstname": "Susan", "contactid": "91dd0b31-ed8b-e511-80d2-00155d2a68d4" } ] }
Ver también
Use la API web de Microsoft Dynamics 365
Autenticarse en Microsoft Dynamics 365 con la API web
Tipos y operaciones de API web
Realizar operaciones mediante la API web
Microsoft Dynamics 365
© 2017 Microsoft. Todos los derechos reservados. Copyright