Создание вычисляемого поля для автоматизации ручных расчетов
Эта тема относится к Dynamics 365 Customer Engagement (on-premises). Версию этой темы для Power Apps см. по адресу: Определение вычисляемых полей для автоматизации ручных расчетов
Вычисляемые поля позволяют автоматизировать выполняемые вручную вычисления, которые используются в ваших бизнес-процессах. Например, продавцу может потребоваться узнать взвешенный доход по возможной сделке, основанный на значении предполагаемого дохода от возможной сделки, умноженного на вероятность. Либо требуется автоматически применить скидку на заказы стоимостью более 500 долларов. Вычисляемое поле может содержать значения, полученные по результатам простых математических операций или условных операций, например "больше чем" или "если, то" и т. д. Для достижения этого нужно воспользоваться функцией вычисляемых полей; нет необходимости создавать код.
Возможности вычисляемых полей:
Вычисляемые поля содержит вычисления, в которых используются поля из текущей сущности или связанных дочерних сущностей.
Поддержка выражения доступна в полях текущей сущности и связанных полях родительской сущности в разделах Условие и Действие. К встроенным функциям относятся:
ADDHOURS, ADDDAYS, ADDWEEKS, ADDMONTHS, ADDYEARS, SUBTRACTHOURS, SUBTRACTDAYS, SUBTRACTWEEKS, SUBTRACTMONTHS, SUBTRACTYEARS, DIFFINDAYS, DIFFINHOURS, DIFFINMINUTES, DIFFINMONTHS, DIFFINWEEKS, DIFFINYEARS, CONCAT, TRIMLEFT и TRIMRIGHT.
Мощная условная поддержка обеспечивает ветвление и возможность работы с большим количеством условий. Логические операции включают операторы И и ИЛИ.
Возможности визуального редактирования включают современный пользовательский интерфейс и элементы Intellisense в разделе ДЕЙСТВИЕ.
Беспроблемная интеграция вычисляемых полей в формы, представления, диаграммы и отчеты осуществляется в реальном времени.
Если вы обновили сетевую организацию до обновления за декабрь 2016 для Dynamics 365 (online), вы можете настроить вычисляемые поля для использования настраиваемых элементов управления.
Несколько примеров вычисляемых полей
Взвешенный доход: предполагаемый доход, умноженный на вероятность
Чистая стоимость: активы за минусом обязательств для данной организации
Стоимость труда: базовая ставка до 40 часов и доп. переработка
Номер контакта: номер телефона для возможной сделки на основе данных организации или контакта
Балл интереса: одно поле, которое предоставляет сведения о качестве данного интереса
Дальнейшие действия: дальнейшие действия за указанное количество дней с учетом приоритета
Внимание
Для создания вычисляемого поля необходимо иметь привилегию записи в сущности профиля безопасности полей. Если вычисляемое поле использует защищенные поля в вычислении, необходимо подумать о целесообразности защиты и вычисляемого поля, чтобы не дать пользователям возможность осуществлять доступ к данным без достаточных разрешений. Редактор вычисляемого поля отображает предупреждение, если создается вычисляемое поле, использующее безопасные поля в вычислении, и предлагает обеспечить безопасность вычисляемого поля. Дополнительные сведения см. в разделе Безопасность на уровне полей.
Примеры вычисляемых полей
Рассмотрим подробнее примеры вычисляемых полей. Определим вычисляемые поля в редакторе полей. Чтобы открыть редактор полей:
Откройте обозреватель решений
Разверните Компоненты>Сущности.
Выберите требуемую сущность и щелкните Поля. Нажмите кнопку Создать.
В редакторе введите обязательные сведения для поля, включая Тип поля и Тип данных. Тип поля — Вычисляемое. Доступные типы данных для вычисляемого поля.
Строка текста
Набор параметров
Два параметра
Целое число
Десятичное число
Валюта
Дата и время
Кнопка Изменить рядом с Тип поля позволяет открыть редактор определений вычисляемого поля, где создается новое вычисляемое поле для которого, однако, не задается никакая формула. Определение вычисляемого поля состоит из двух разделов: УСЛОВИЕ и ДЕЙСТВИЕ.
В разделе Условие можно задать сущность, поле, оператор, вид и значение. В раскрывающемся списке для Сущность можно выбрать текущую сущность или связанную сущность. В раскрывающемся списке Поле можно выбрать все доступные поля для сущности. В зависимости от выбранного оператора может потребоваться указать тип и значение. Можно выбрать несколько условий с помощью операторов
AND
илиOR
.В разделе Действие указывается формула для вычисляемого поля.
Заметка
В действии можно использовать данные из записей поиска. Сначала необходимо выбрать поле поиска, а затем ввести точку. После этого можно выбрать одно из полей, доступных в связанной сущности. Например, в случае <LookupFieldName>.<RelatedFieldName> можно выбрать: ParentAccountId.AccountNumber.
Обратите внимание, что безопасность на уровне полей для связанной сущности учитываться не будет, поэтому если поле, к которому производится доступ, содержит конфиденциальные данные, рекомендуется также защитить и создаваемое вами вычисляемое поле.
Взвешенный доход от возможной сделки
В этом примере мы используем поля сущностей возможной сделки, чтобы рассчитать взвешенный доход по вероятности закрытия возможной сделки. В редакторе поля для сущностей возможной сделки создадим поле "Взвешенный доход" и укажем тип поля — Вычисляемое, а тип данных — Валюта. В редакторе определения вычисляемого поля в разделе Условие определим возможную сделку со статусом = открытая. В разделе ДЕЙСТВИЕ формула вычисляет взвешенный доход на основе рассчитанного дохода от возможной сделки, умноженного на вероятность ее заключения. На следующих снимках экрана изображена пошаговая инструкция по определению вычисляемого поля взвешенного дохода.
Создайте вычисляемое поле с названием "Взвешенный доход":
Укажите условие в возможных сделках:
Укажите формулу для расчета взвешенного дохода:
Вместе:
Дата дальнейших действий по возможной сделке
В этом примере мы используем поля полученного интереса из возможной сделки для вычисления оптимальной даты дальнейших действий по возможной сделке. В редакторе поля для сущностей возможной сделки создадим поле "Дата дальнейших действий" и укажем тип поля — Вычисляемое, а тип данных — Дата и время. В редакторе определения вычисляемого поля в разделе Условие будет определяться два условия: интервал времени покупки и предполагаемая стоимость интереса. В разделе ДЕЙСТВИЕ укажем две формулы: одна для дальнейших действий на той же неделе непосредственно в связи с возможной сделкой, а другая для дальнейших действий в течение месяца, если возможная сделка не будет реализована мгновенно. На следующих снимках экрана изображена пошаговая инструкция по определению вычисляемого поля "Дата дальнейших действий".
Создайте вычисляемое поле с названием "Дата дальнейших действий":
Задаем два условия для появившегося интереса:
Предоставляем формулу для определения дальнейших действий в течение недели:
Предоставляем формулу для дальнейших действий в течение месяца:
Вместе:
Число дней с момента создания записи
В этом примере мы используем функцию DIFFINDAYS, чтобы вычислить разницу в днях между временем создания записи и текущей датой.
Создайте вычисляемое поле с именем "Вычисленная разница в днях":
Введите формулу для вычисления разницы в днях:
Вместе:
Синтаксис функций вычисляемого поля
В следующей таблице приводятся сведения о синтаксисе функций, предоставленных в разделе ДЕЙСТВИЕ вычисляемого поля.
Совет
Имена функций указываются заглавными буквами.
Синтаксис функций | Описание | Возвращаемый тип |
---|---|---|
ADDDAYS (целое число, дата и время) | Возвращает новую дату и время, равные дате и времени плюс определенное количество дней. | Дата и время |
ADDHOURS (целое число, дата и время) | Возвращает новую дату и время, равные дате и времени плюс определенное количество часов. | Дата и время |
ADDMONTHS (целое число, дата и время) | Возвращает новую дату и время, равные дате и времени плюс определенное количество месяцев. | Дата и время |
ADDWEEKS (целое число, дата и время) | Возвращает новую дату и время, равные дате и времени плюс определенное количество недель. | Дата и время |
ADDYEARS (целое число, дата и время) | Возвращает новую дату и время, равные дате и времени плюс определенное количество лет. | Дата и время |
SUBTRACTDAYS (целое число, дата и время) | Возвращает новую дату и время, равные дате и времени минус определенное количество дней. | Дата и время |
SUBTRACTHOURS (целое число, дата и время) | Возвращает новую дату и время, равные дате и времени минус определенное количество часов. | Дата и время |
SUBTRACTMONTHS (целое число, дата и время) | Возвращает новую дату и время, равные дате и времени минус определенное количество месяцев. | Дата и время |
SUBTRACTWEEKS (целое число, дата и время) | Возвращает новую дату и время, равные дате и времени минус определенное количество недель. | Дата и время |
SUBTRACTYEARS (целое число, дата и время) | Возвращает новую дату и время, равные дате и времени минус определенное количество лет. | Дата и время |
DIFFINDAYS (дата и время, дата и время) | Возвращает разницу в днях между двумя полями Дата и время. Если оба момента во времени припадают на один и тот же день, разница равна нулю. | Целое число |
DIFFINHOURS (дата и время, дата и время) | Возвращает разницу в часах между двумя полями Дата и время. | Целое число |
DIFFINMINUTES (дата и время, дата и время) | Возвращает разницу в минутах между двумя полями Дата и время. | Целое число |
DIFFINMONTHS (дата и время, дата и время) | Возвращает разницу в месяцах между двумя полями Дата и время. Если оба момента во времени припадают на один и тот же месяц, разница равна нулю. | Целое число |
DIFFINWEEKS (дата и время, дата и время) | Возвращает разницу в неделях между двумя полями Дата и время. Если оба момента во времени припадают на одну и ту же неделю, разница равна нулю. | Целое число |
DIFFINYEARS (дата и время, дата и время) | Возвращает разницу в годах между двумя полями Дата и время. Если оба момента во времени припадают на один и тот же год, разница равна нулю. | Целое число |
CONCAT (одна строка текста, одна строка текста, ... одна строка текста) | Возвращает строку, которая является результатом объединения двух и более строк. | String |
TRIMLEFT (одна строка текста, целое число) | Возвращает строку, содержащую копию указанной строки без указанного количества первых символов. | String |
TRIMRIGHT (одна строка текста, целое число) | Возвращает строку, содержащую копию указанной строки без указанного количества последних символов. | String |
Заметка
Все функции DIFF требуют, чтобы первое поле Дата и время и второе поле Дата и время имел и одинаковое поведение: Часовой пояс пользователя, Только дата или Независимо от часового пояса. Если поведение второго поля не соответствует поведению первого поля, то отображается сообщение об ошибке с указанием того, что второе поле нельзя использовать в текущей функции. Дополнительные сведения: Поведение и формат поля "Дата и время".
Заметка
Невозможно ввести дату, например 01.01.2015, в качестве значения Date в вычисляемое поле. Значения Date и DateTime можно задать или сравнить только с помощью других полей DateTime.
В функции CONCAT можно использовать буквенные строки как отдельные строки текста, поля сущности, содержащие отдельную строку текста, или и то, и другое. Например, CONCAT ("Имя", "Фамилия", "является руководителем"). Если буквенная строка содержит прямые кавычки, перед каждой меткой добавьте символ наклонной черты (\), например «Эта строка содержит \"прямые кавычки\"». Это гарантирует, что прямые кавычки в строке не будут рассматриваться как специальные символы, разделяющие строки.
В следующих примерах показано, как использовать функции TRIMLEFT и TRIMRIGHT. Они содержат исходные и полученные строки, возвращенные функциями TRIMLEFT и TRIMRIGHT:
TRIMLEFT (“RXX10-3456789”, 3) возвращает строку “10-3456789”
TRIMRIGHT (“20-3456789RXX”, 3) возвращает строку “20-3456789”
Рекомендации по вычисляемым полям
При работе с вычисляемыми полями следует учитывать ряд определенных условий и ограничений:
Сохраненные запросы, диаграммы и визуализации могут иметь не более 10 уникальных вычисляемых полей.
Значения вычисляемых полей не отображаются в автономном режиме Customer Engagement Outlook для представлений плитки или в основных формах сущностей.
Максимальное число объединенных в цепь вычисляемых полей — 5.
Вычисляемое поле не может ссылаться на само себя или иметь циклические цепи.
Если изменить один из операторов условия в множественном предложении условия, все операторы условия будут обновлены до этого условия. Например, в предложении
IF (x > 50) OR (y ==10) OR (z < 5)
при изменении оператораOR
на операторAND
все операторыOR
в предложении станут операторамиAND
.Можно получить доступ к родительским полям через поле поиска в родительской сущности, например
<LookupFieldName>.<FieldName>
. Это невозможно с полями поиска для нескольких сущностей (например,Customer
), которые могут являться полямиAccount
илиContact
. Однако некоторые сущности имеют отдельные поля поиска для определенной сущности, такой какParentAccountid.<FieldName>
илиParentContactid.<FieldName>
.Сортировка отключена:
Вычисляемое поле, содержащее поле из родительской записи.
Вычисляемое поле, содержащее логическое поле (например, поле адреса).
Вычисляемое поле, содержащее другое вычисляемое поле.
Вычисляемые поля могут охватывать только две сущности.
Вычисляемое поле может содержать поле из другой сущности (охватывающее две сущности — текущую сущность и родительскую запись).
Вычисляемое поле не может содержать вычисляемое поля из другой сущности, которое также содержит другое поле из другой сущности (всего 3 сущности):
(Текущая сущность) Вычисляемое поле <- (Родительская запись) Вычисляемое поле 1 <- (Родительская запись) Вычисляемое поле 2.
Невозможно инициировать бизнес-процессы или подключаемые модули в вычисляемых полях.
Невозможно изменить существующее простое поле на вычисляемое поле. Если текущее приложение использует JavaScript или подключаемый модуль для вычисления поля, вы не сможете использовать функцию вычисляемых полей без создания нового поля.
Правила поиска повторяющихся данных для вычисляемых полей не запускаются.
Свертка не может ссылаться на вычисляемое поле, использующее другое вычисляемое поле, даже если все поля другого вычисляемого поля находятся в текущей сущности.
См. также
Создание и изменение полей
Определение полей свертки
Видео: поля свертки и вычисляемые поля в Dynamics CRM 2015