Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Эта статья помогает устранять и решать распространенные проблемы в различных таблицах, таких как продажная возможность, предложение, заказ или счет в Microsoft Dynamics 365 Sales.
Проблема 1 - Контекстная форма может появиться в селекторе формы.
Форма в контексте используется для отображения и настройки боковой панели в диспетчере сделок, а также в новом интерфейсе для контактов, возможности, потенциальных клиентов и учетных записей.
Причина
Если в вашей среде есть какая-либо настройка, которая задает formActivationState в Active для этих таблиц, форма In Context появляется в раскрывающемся списке селектора формы и позволяет пользователям выбирать эту форму для просмотра сведений о записи.
Решение
Если внешний вид формы контекста приводит к путанице, можно отключить форму контекста, как показано на следующем снимке экрана.
Проблема 2. Ошибка или непредвиденное поведение при работе с таблицами
Симптомы
Во время работы с таблицами (например, возможности, коммерческое предложение, заказ, счёт, товар предложения и товар заказа) вы можете наблюдать непредвиденное поведение или ошибку в Dynamics 365 for Sales. Ниже приведены некоторые ошибки, которые могут возникнуть при работе с возможностями, и они могут применяться к другим таблицам:
- Итоговая сумма неверна после изменения ценового предложения - эта ошибка может возникнуть из-за пользовательского подключаемого модуля.
- "Ошибка при сохранении возможности" — эта ошибка может возникать из-за пользовательского JavaScript.
- "Ошибка при закрытии возможности" — эта ошибка может возникать из-за пользовательского рабочего процесса.
Причина
Эти проблемы могут возникнуть из-за неправильной настройки приложения.
Решение
Необходимо проверить неправильные настройки и устранить их. Выполните следующие методы проверки, чтобы определить, какая настройка вызывает проблему, а затем устранить:
- Отключите пользовательский подключаемый модуль
- Отключение пользовательского JavaScript
- Отключение пользовательского рабочего процесса
Отключить пользовательский плагин
Перейдите в раздел Параметры>Настройки>Настройка системы.
Выберите действия по обработке сообщений пакета SDK.
Отображается список доступных шагов обработки сообщений пакета SDK.
Щелкните значок фильтра, выберите столбец Основной код типа объекта (фильтр сообщений sdk) и выберите таблицу, для которой возникает ошибка.
Выберите шаги обработки сообщений ПАКЕТА SDK, поступающие из решений, принадлежащих вам.
Примечание.
Чтобы просмотреть действия по обработке сообщений пользовательского пакета SDK, сделайте следующее:
Перейдите в Параметры>Решения, а затем откройте решение.
Выберите шаги обработки сообщений ПАКЕТА SDK. Убедитесь, что значения выбраны следующим образом: тип компонента для шага обработки сообщений ПАКЕТА SDK и просмотр для всех.
Выберите Деактивировать.
Опубликуйте настройки.
Проверьте проблему, и если она не возникает, проблема связана с пользовательскими шагами обработки сообщений SDK. Устраните проблему.
Примечание.
Если возникла проблема, активируйте шаги обработки сообщений ПАКЕТА SDK, которые вы деактивировали сейчас, и попробуйте отключить пользовательский javaScript или отключить пользовательский процесс рабочего процесса.
Отключение пользовательского JavaScript
Откройте редактор формы таблицы, в которой возникает ошибка. В этом примере мы выбираем таблицу в качестве возможностей и форму решения по умолчанию.
Выберите "Свойства формы" в редакторе форм.
Откроется диалоговое окно "Свойства формы".
На вкладке "События " выберите элемент управления OnLoad из раскрывающегося списка "События ".
Выберите кастомные файлы JavaScript, из решения, принадлежащего вам.
Примечание.
Чтобы просмотреть настраиваемый JavaScript, выполните следующие действия.
- Перейдите в раздел Настройки>Решения, а затем откройте решение.
- Выберите WebResources. Убедитесь, что значения выбраны следующим образом: Тип компонента — WebResources, а Представление — Все.
- Щелкните значок фильтра , чтобы включить параметры фильтра для столбцов. Выберите тип и задайте фильтр в качестве скрипта (JScript).
Выберите Изменить. В этом примере мы выбрали настраиваемый файл JavaScript, eg_opportunity для редактирования.
Снимите флажок "Включить" и нажмите кнопку "ОК".
Опубликуйте настройки.
Проверьте проблему и если она не возникает, проблема связана с пользовательским JavaScript. Устраните проблему.
Примечание.
Если возникла проблема, включите JavaScript, который вы отключили сейчас, и попробуйте отключить настраиваемый подключаемый модуль или деактивировать пользовательский процесс рабочего процесса.
Отключение пользовательского рабочего процесса
Перейдите в раздел Параметры>Настройки>Настройка системы.
Выберите "Процессы". К этим процессам относятся рабочий процесс, поток бизнес-процессов и бизнес-правило.
Отображается список доступных процессов.
Щелкните значок фильтра, выберите столбец "Основная сущность", а затем выберите таблицу, для которой возникает ошибка.
Выберите процессы, связанные с решениями, принадлежащими вам.
Примечание.
Чтобы просмотреть пользовательские процессы, выполните действия.
- Перейдите в Параметры>Решения, а затем откройте решение.
- Выберите "Процессы". Убедитесь, что значения выбраны следующим образом: Тип компонента - Процессы и Просмотр - Все.
Выберите Деактивировать.
Опубликуйте настройки.
Проверьте проблему и если она не возникает, проблема связана с пользовательскими процессами. Устраните проблему.
Примечание.
Если возникла проблема, активируйте процессы , которые вы деактивировали сейчас, и попробуйте отключить настраиваемый подключаемый модуль или отключить настраиваемый 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
}
}