Поделиться через


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

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

Проблема 1 - Контекстная форма может появиться в селекторе формы.

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

Причина

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

Раскрывающийся список селектора формы с параметром

Решение

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

Форма

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

Симптомы

Во время работы с таблицами (например, возможности, коммерческое предложение, заказ, счёт, товар предложения и товар заказа) вы можете наблюдать непредвиденное поведение или ошибку в Dynamics 365 for 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. Настраиваемая обработка подключаемых модулей с помощью общей переменной

Симптомы

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

Решение

Пользовательские подключаемые модули выполняют операции создания, обновления и сохранения операций с таблицами "Возможность", "Цитата", "Заказ" и "Счет". Операции создания и обновления этих таблиц внутренне активируют службу вычислений цен, которая затем обновляет связанные с ценами поля или атрибуты их родительских таблиц.

Вы можете определить или дифференцировать любые обновления в таблицах "Возможность", "Коммерческое предложение", "Заказ" или "Счет" или родительских таблицах "Возможность", "Коммерческое предложение", "Заказ" или "Счет", используя внутреннюю службу вычислений цен или с использованием собственного пользовательского плагина. Логическая общая переменная 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
    }

}