Compartir a través de


Solución de problemas comunes con varias tablas

Este artículo le ayuda a solucionar problemas comunes en varias tablas, como oportunidades, cotizaciones, pedidos o facturas en Microsoft Dynamics 365 Sales.

Problema 1: En el formulario de contexto puede aparecer en el selector de formularios

El formulario en contexto se usa para mostrar y personalizar el panel lateral en el administrador de la oferta y en la nueva interfaz para contactos, oportunidades, clientes potenciales y cuentas.

Causa

Si el entorno tiene cualquier personalización que establezca formActivationState en Active para estas tablas, el formulario en contexto aparece en la lista desplegable selector de formularios y permite a los usuarios seleccionar este formulario para ver los detalles del registro.

Lista desplegable selector de formularios que muestra la opción Formulario en contexto.

Solución

Si la apariencia de En el formulario de contexto da lugar a confusión, puede desactivar el formulario en contexto, como se muestra en la captura de pantalla siguiente.

En El formulario Contexto con la opción de desactivar.

Problema 2: error o comportamiento inesperado al trabajar en tablas

Síntomas

Al trabajar en tablas (como oportunidades, oferta, pedido, factura, producto de cotización y producto de pedido), observará un comportamiento inesperado o un error en Dynamics 365 for Sales. A continuación se muestran algunos de los errores que puede encontrar al trabajar con oportunidades y pueden aplicarse a otras tablas:

  • "El importe extendido es incorrecto después de revisar la cotización": este error puede producirse debido a un complemento personalizado.
  • "Error al guardar la oportunidad": este error puede producirse debido a JavaScript personalizado.
  • "Error al cerrar la oportunidad": este error puede producirse debido a un flujo de trabajo personalizado.

Causa

Estos problemas pueden producirse debido a una personalización incorrecta de la aplicación.

Solución

Debe comprobar las personalizaciones incorrectas y resolverlas. Realice los siguientes métodos de comprobación para identificar qué personalización está causando el problema y, a continuación, resuelva:

Desactivar un complemento personalizado

  1. Vaya a Configuración>Personalizaciones>Personalizar el sistema.

  2. Seleccione Sdk Message Processing Steps (Pasos de procesamiento de mensajes del SDK).

    Se muestra una lista de los pasos de procesamiento de mensajes del SDK disponibles.

  3. Seleccione el icono Filtro , seleccione la columna Código de tipo de objeto principal (filtro de mensajes del SDK) y, a continuación, seleccione la tabla para la que se produce el error.

    Vaya a la lista de complementos personalizados para seleccionar la tabla para la que se produce el error.

  4. Seleccione los pasos de procesamiento de mensajes del SDK que proceden de las soluciones que posee.

    Nota:

    Para ver los pasos de procesamiento de mensajes del SDK personalizados:

    1. Vaya a Soluciones de configuración> y abra la solución.

    2. Seleccione SDK Message Processing Steps (Pasos de procesamiento de mensajes del SDK). Compruebe que los valores están seleccionados de la siguiente manera: Tipo de componente para el paso de procesamiento de mensajes del SDK y Ver en todos.

  5. Seleccione Desactivar.

  6. Publique las personalizaciones.

    Elija y desactive complementos personalizados no administrados.

  7. Compruebe el problema y, si no se produce, el problema es con los pasos de procesamiento de mensajes del SDK personalizados. Resuelva el problema.

Nota:

Si se produce el problema, active los pasos de procesamiento de mensajes del SDK que desactivó ahora e intente deshabilitar JavaScript personalizado o desactive un proceso de flujo de trabajo personalizado.

Deshabilitación de JavaScript personalizado

  1. Abra el editor de formularios de la tabla en la que se produce el error. En este ejemplo, se selecciona la tabla como Oportunidades y el formulario de solución predeterminado.

    Abra el editor de formularios.

  2. Seleccione Propiedades del formulario en el editor de formularios.

    Seleccione Propiedades del formulario en el editor de formularios.

    Se abre el cuadro de diálogo Propiedades del formulario.

  3. En la pestaña Eventos , seleccione el control OnLoad en la lista desplegable Eventos .

    Seleccione el control OnLoad en la lista desplegable Eventos.

  4. Elija los archivos de JavaScript personalizados que proceden de la solución propiedad de usted.

    Nota:

    Para ver javaScript personalizado:

    1. Vaya a Soluciones de configuración> y abra la solución.
    2. Seleccione WebResources. Compruebe que los valores están seleccionados como: Tipo de componente en WebResources y Ver en todos.
    3. Seleccione el icono Filtro para habilitar las opciones de filtro para las columnas. Seleccione Tipo y establezca el filtro como Script (JScript).

    Seleccione Tipo y establezca el filtro como Script (JScript).

  5. Seleccione Editar. En este ejemplo, hemos seleccionado el archivo JavaScript personalizado eg_opportunity editar.

    Detalles de entrada en el cuadro de diálogo Propiedades del controlador.

  6. Desactive la opción Habilitado y seleccione Aceptar.

    Desactive la opción Habilitado en el cuadro de diálogo Propiedades del controlador.

  7. Publique las personalizaciones.

  8. Compruebe el problema y, si no se produce, el problema es con javaScript personalizado. Resuelva el problema.

Nota:

Si se produce el problema, habilite el JavaScript que ha deshabilitado ahora e intente Desactivar un complemento personalizado o Desactivar un proceso de flujo de trabajo personalizado.

Desactivar un proceso de flujo de trabajo personalizado

  1. Vaya a Configuración>Personalizaciones>Personalizar el sistema.

  2. Seleccione Procesos. Estos procesos incluyen Flujo de trabajo, Flujo de proceso de negocio y Regla de negocio.

    Se muestra una lista de los procesos disponibles.

  3. Seleccione el icono Filtro , seleccione la columna Entidad principal y, a continuación, seleccione la tabla para la que se produce el error.

    Vaya a la lista de flujo de trabajo de proceso personalizado para seleccionar la tabla para la que se produce el error.

  4. Elija los procesos que proceden de las soluciones que pertenecen a usted.

    Nota:

    Para ver los procesos personalizados:

    1. Vaya a Soluciones de configuración> y abra la solución.
    2. Seleccione Procesos. Compruebe que los valores están seleccionados como: Tipo de componente en Procesos y Ver en todos.
  5. Seleccione Desactivar.

  6. Publique las personalizaciones.

    Elija y desactive flujos de trabajo de procesos no administrados.

  7. Compruebe el problema y, si no se produce, el problema es con los procesos personalizados. Resuelva el problema.

Nota:

Si se produce el problema, active los procesos que desactivó ahora e intente Desactivar un complemento personalizado o Deshabilitar JavaScript personalizado.

Problema 3: Control de complementos personalizado mediante una variable compartida

Síntomas

  • Las operaciones de creación y actualización en las tablas Oportunidad, Cotización, Pedido y Factura desencadenan actualizaciones en sus tablas primarias.
  • La recuperación de detalles sobre las tablas Opportunity, Quote, Order y Invoice desencadena internamente el servicio Cálculo de precios, que posteriormente desencadena complementos personalizados creados por los clientes.

Solución

Los complementos personalizados ejecutan operaciones de creación, actualización y guardado en tablas de oportunidad, oferta, pedido y factura. Las operaciones de creación y actualización de estas tablas desencadenan internamente el servicio Cálculo de precios, que actualiza los campos o atributos asociados relacionados con el precio de sus tablas primarias.

Puede identificar o diferenciar cualquier actualización en las tablas Oportunidad, Oferta, Pedido o Factura o en las tablas Oportunidad, Oferta, Pedido o Factura principales utilizando el servicio interno de cálculo de precios o utilizando su propio complemento personalizado. La variable compartida booleana InternalSystemPriceCalculationEvent, que es accesible a través de IPluginExecutionContext, está disponible en el código del complemento. Cualquier evento de creación o actualización procesado mediante el servicio de cálculo de precios establecerá el valor de la variable InternalSystemPriceCalculationEvent como true. El valor predeterminado de InternalSystemPriceCalculationEvent es false. Puede acceder a esta variable desde su código de complemento personalizado para controlar el flujo de su lógica de negocios existente.

Nota

Para realizar operaciones de complementos personalizados mediante el uso de una variable compartida, asegúrese de que el servicio de cálculo de precios predefinido esté deshabilitado.

Código de ejemplo

public void Execute(IServiceProvider serviceProvider)
{
   // Obtain the tracing service
   ITracingService tracingService = (ITracingService)serviceProvider.GetService(typeof(ITracingService));

   // Obtain the execution context from the service provider.  
    IPluginExecutionContext executionContext = (IPluginExecutionContext)
    serviceProvider.GetService(typeof(IPluginExecutionContext))
    bool isInternalSystemPriceCalculationEvent = false;

    //Check existence of shared variable and fetch the value from executionContext
    if (executionContext.ParentContext != null && executionContext.ParentContext.SharedVariables.ContainsKey("InternalSystemPriceCalculationEvent"))
                    
    {
        isInternalSystemPriceCalculationEvent = (bool)executionContext.ParentContext.SharedVariables["InternalSystemPriceCalculationEvent"];
    }   

    if (isInternalSystemPriceCalculationEvent)
    {
            //TO DO - Add or skip custom business logic
    }

}