Бөлісу құралы:


Устранение распространенных проблем с несколькими таблицами

Эта статья поможет устранить распространенные проблемы в нескольких таблицах, таких как возможность, предложение, заказ или счет в Microsoft Dynamics 365 Sales.

Проблема 1. В селекторе формы может отображаться контекстная форма

Форма In Context используется для отображения и настройки боковой панели в диспетчере сделок, а также в новом интерфейсе для контактов, возможностей, потенциальных клиентов и учетных записей.

Причина

Если в вашей среде есть какая-либо настройка, при которой для этих таблиц для параметра formActivationState задано значение Активно , в раскрывающемся списке селектора формы появится форма In Context Form ( В контексте ) и позволяет пользователям выбрать эту форму для просмотра сведений о записи.

Раскрывающийся список селектора формы с параметром In Context Form (Форма контекста).

Разрешение

Если внешний вид In Context Form приводит к путанице, можно отключить форму in context, как показано на следующем снимке экрана.

В форме контекста с параметром деактивации.

Проблема 2. Ошибка или непредвиденное поведение при работе с таблицами

Симптомы

При работе с таблицами (например, с возможностями, предложением, заказом, счетом, предложением и заказом продукта) вы наблюдаете непредвиденное поведение или ошибку в Dynamics 365 sales. Ниже приведены некоторые ошибки, которые могут возникнуть при работе над возможностями, и они могут применяться к другим таблицам.

  • "Расширенная сумма ошибается после изменения кавычки" — эта ошибка может возникнуть из-за пользовательского подключаемого модуля.
  • "Ошибка при сохранении возможности" — эта ошибка может возникнуть из-за пользовательского JavaScript.
  • "Ошибка при закрытии возможности" — эта ошибка может возникнуть из-за пользовательского рабочего процесса.

Причина

Эти проблемы могут возникать из-за неправильной настройки приложения.

Разрешение

Необходимо проверить неправильные настройки и устранить их. Выполните следующие методы проверки, чтобы определить, какая настройка вызывает проблему, а затем устранить:

Деактивация пользовательского подключаемого модуля

  1. Перейдите > в раздел ПараметрыНастройки>Настройка системы.

  2. Выберите Шаги обработки сообщений пакета SDK.

    Отобразится список доступных этапов обработки сообщений пакета SDK.

  3. Щелкните значок Фильтр , выберите столбец Код основного типа объекта (фильтр сообщений пакета SDK), а затем выберите таблицу, для которой возникает ошибка.

    Перейдите в список настраиваемых подключаемых модулей, чтобы выбрать таблицу, для которой возникает ошибка.

  4. Выберите шаги обработки сообщений пакета SDK, которые поступают из принадлежащих вам решений.

    Примечание.

    Чтобы просмотреть пользовательские действия по обработке сообщений пакета SDK, выполните следующие действия.

    1. Перейдите > в раздел ПараметрыРешения, а затем откройте решение.

    2. Выберите Шаги обработки сообщений пакета SDK. Убедитесь, что значения выбраны следующим образом: Тип компонента для шага обработки сообщений пакета SDK и Просмотр для всех.

  5. Выберите Деактивировать.

  6. Опубликуйте настройки.

    Выберите и отключите неуправляемые пользовательские подключаемые модули.

  7. Проверьте проблему, и если она не возникает, проблема связана с пользовательскими шагами обработки сообщений пакета SDK. Устраните проблему.

Примечание.

В случае возникновения проблемы активируйте отключенные действия по обработке сообщений пакета SDK и попробуйте отключить пользовательский JavaScript или деактивировать пользовательский рабочий процесс.

Отключение пользовательского JavaScript

  1. Откройте редактор форм таблицы, в которой происходит ошибка. В этом примере мы выбираем таблицу как Возможности и форму решения по умолчанию.

    Откройте редактор форм.

  2. Выберите Свойства формы в редакторе форм.

    Выберите Свойства формы в редакторе форм.

    Откроется диалоговое окно Свойства формы .

  3. На вкладке События выберите элемент управления OnLoad в раскрывающемся списке События .

    Выберите элемент управления OnLoad в раскрывающемся списке События.

  4. Выберите пользовательские файлы JavaScript , поступающие из принадлежащего вам решения.

    Примечание.

    Чтобы просмотреть пользовательский JavaScript, выполните следующие действия:

    1. Перейдите > в раздел ПараметрыРешения, а затем откройте решение.
    2. Выберите WebResources. Убедитесь, что выбраны значения: Тип компонента для WebResources и Просмотр для всех.
    3. Выберите значок фильтра , чтобы включить параметры фильтра для столбцов. Выберите Тип и задайте для фильтра значение Скрипт (JScript).

    Выберите Тип и задайте для фильтра значение Скрипт (JScript).

  5. Нажмите Изменить. В этом примере мы выбрали пользовательский файл JavaScript , eg_opportunity для редактирования.

    Сведения о вводе в диалоговом окне свойств обработчика.

  6. Снимите флажок Включено и нажмите кнопку ОК.

    Снимите флажок Включено в диалоговом окне Свойства обработчика.

  7. Опубликуйте настройки.

  8. Проверьте проблему, и если она не возникает, проблема связана с пользовательским JavaScript. Устраните проблему.

Примечание.

В случае возникновения проблемы включите отключенный код JavaScript и попробуйте отключить пользовательский подключаемый модуль или деактивировать процесс пользовательского рабочего процесса.

Деактивация пользовательского процесса рабочего процесса

  1. Перейдите > в раздел ПараметрыНастройки>Настройка системы.

  2. Выберите Процессы. К этим процессам относятся рабочий процесс, поток бизнес-процессов и бизнес-правило.

    Отобразится список доступных процессов.

  3. Щелкните значок Фильтр , выберите столбец Основная сущность, а затем выберите таблицу, для которой возникает ошибка.

    Перейдите в список рабочих процессов пользовательского процесса, чтобы выбрать таблицу, для которой возникает ошибка.

  4. Выберите процессы, поступающие из принадлежащих вам решений.

    Примечание.

    Чтобы просмотреть пользовательские процессы, выполните приведенные далее действия.

    1. Перейдите > в раздел ПараметрыРешения, а затем откройте решение.
    2. Выберите Процессы. Убедитесь, что выбраны значения: Тип компонента для процессов и Представление для всех.
  5. Выберите Деактивировать.

  6. Опубликуйте настройки.

    Выберите и отключите неуправляемые рабочие процессы.

  7. Проверьте проблему, и если она не возникает, проблема связана с пользовательскими процессами. Устраните проблему.

Примечание.

В случае возникновения проблемы активируйте процессы , которые вы сейчас деактивировали, и попробуйте отключить настраиваемый подключаемый модуль или Отключить пользовательский JavaScript.

Проблема 3. Настраиваемая обработка подключаемого модуля с помощью общей переменной

Симптомы

  • Операции создания и обновления для таблиц Opportunity, Quote, Order и Invoice активируют обновления в их родительских таблицах.
  • При получении сведений о таблицах Opportunity, Quote, Order и Invoice внутренне запускается служба "Вычисление цен", которая впоследствии активирует пользовательские подключаемые модули, созданные клиентами.

Разрешение

Пользовательские подключаемые модули выполняют операции создания, обновления и сохранения в таблицах Opportunity, Quote, Order и Invoice. Операции создания и обновления этих таблиц внутренне активируют службу вычисления цен, которая затем обновляет связанные с ценами поля или атрибуты своих родительских таблиц.

Вы можете определить или отличить любые обновления в таблицах Opportunity, Quote, Order или Invoice или в родительских таблицах Opportunity, Quote, Order или Invoice с помощью внутренней службы "Вычисление цен" или с помощью собственного подключаемого модуля. Логическая общая переменная InternalSystemPriceCalculationEvent, доступная через IPluginExecutionContext, доступна в коде подключаемого модуля. Любое событие создания или обновления, обработанное с помощью службы "Вычисление цен", задает для переменной InternalSystemPriceCalculationEventtrueзначение . Значение InternalSystemPriceCalculationEvent по умолчанию — false. Вы можете получить доступ к этой переменной из пользовательского кода подключаемого модуля, чтобы управлять потоком существующей бизнес-логики.

Примечание.

Чтобы выполнять пользовательские операции с подключаемым модулем с помощью общей переменной, убедитесь, что встроенная служба "Вычисление цен" отключена.

Пример кода

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
    }

}