Ошибка Dynamics CRM «Валюта требуется, если в денежном поле существует значение» после преобразования операции в дело - PullRequest
1 голос
/ 05 августа 2009

У нас есть экземпляр Dynamics CRM 4.0 с некоторыми настраиваемыми атрибутами типа «деньги» для сущности Case и для всех сущностей Activity (электронная почта, телефонный звонок и т. Д.), Когда я использую встроенную функцию «Преобразовать активность в Case» По функциональности я обнаружил, что в результирующем Case нет установленной валюты, даже если у действия, из которой он был создан, он есть. Каждый раз, когда дело открывается, пользователь получает эту ошибку JavaScript:

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

Это очень раздражает! Как мне это исправить? Есть ли способ установить валюту? Это нужно делать синхронно, потому что дело открывается сразу же после его создания из действия. Таким образом, даже если бы я запустил рабочий процесс для установки валюты, пользователь все равно получил бы эту ошибку хотя бы один раз. Альтернативно, я могу просто как-то подавить предупреждение? Меня не волнует настройка валюты, я просто хочу, чтобы ошибка исчезла.

Ответы [ 8 ]

3 голосов
/ 17 августа 2010

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

Здесь есть два этапа:

  1. установить валюту по умолчанию
  2. установить символ валюты для денежного поля.

Вот пример кода.

var currency = crmForm.all.transactioncurrencyid;

if (currency.DataValue == null) {
    var lookupData = new Array();
    var lookupItem= new Object();

    //Get transaction currency value from :
    select **TransactionCurrencyId** from MSCRM.dbo.TransactionCurrency
        lookupItem.id = '{The GUID that you get from the SELECT statement above}';
        lookupItem.typename = 'transactioncurrency';
        lookupItem.name = 'US Dollar';
        lookupData[0] = lookupItem;
        currency.DataValue = lookupData;
    //set default currency symbol for all the Money field.
    var defaultSymbol = '$';
    for(var i=0; i < crmForm.all.length ; i++)   {
        var oCtr = crmForm.all[i];
        if(!IsNull(oCtr.IsMoney) && !oCtr.IsBaseCurrency)
        {
            oCtr.CurrencySymbol = defaultSymbol;
        }
    }
}
2 голосов
/ 13 апреля 2012

установить валюту по умолчанию в Personalize Workspace, вкладка General Новые записи будут использовать эту валюту Для СУЩЕСТВУЮЩИХ записей (до добавления денежного поля) используйте Расширенный поиск, чтобы найти записи без значения валюты, затем используйте Массовое редактирование, чтобы установить валюту

1 голос
/ 04 марта 2011

Поскольку эта тема возникла в моем поиске в Google, когда я искал решение этой проблемы для CRM 2011, я подумал, что добавлю в блог статью, объясняющую, как настроить поиск валюты по умолчанию в Onload of CRM 2011 формы с использованием JavaScript, JSON и OData.

http://crmscape.blogspot.com/2011/03/crm-2011-set-default-transaction.html

1 голос
/ 27 мая 2010

Эта навязчивая проблема была решена в моей системе путем обнаружения транзакции currentCurrencyid, используемой для долларов США, и последующего обновления столбца транзакцииcurrencyid в таблице базы данных объекта для всех существующих записей объекта. После этого я смог добавить денежные значения в форму лица без каких-либо проблем. Не уверен, будет ли это решение идеальным для всех, но поскольку я не хотел писать код для этого, и чувствовал, что мне не нужно этого делать, поскольку, если я добавляю атрибуты money к вновь определенной сущности, для него не требуется писать код на Моя часть, чтобы заполнить поле TransactionCurrencyid - он просто сделал это по умолчанию. Таким образом, в итоге, эта проблема, кажется, возникает, только если денежные поля добавляются к существующему объекту, с которым связаны существующие данные.

1 голос
/ 05 августа 2009

Если в вашей форме есть денежное поле, CRM должен знать, какую валюту использовать. Убедитесь, что в настройках пользователя установлена ​​валюта по умолчанию (персонализируйте рабочее место на главной странице, затем на вкладке «Общие»). То есть каждому из ваших пользователей необходимо установить валюту по умолчанию.

Мне также удалось обойти эту проблему, добавив поле валюты в форму, установив по умолчанию его в долларах США, а затем скрыв это поле. Однако, если память служит, это не идеально, потому что валюта в долларах США является записью в системе и может иметь разные GUID в разных средах.

1 голос
/ 05 августа 2009

Вы можете проверить эту статью CRM 4 Расчет валюты Митч Милам

Обновление: после поиска в поисках я обнаружил, что вам может понадобиться установить где-нибудь транзакцию searchcurrencyid. Так что в вашем случае, это может быть на сохранении или внутри выполнения кодов рабочего процесса. Я прочитал его отсюда Ошибка: назначьте десятичное значение для денежного поля CRM 4.0, используя Javascript

0 голосов
/ 09 января 2014

Исправление этой проблемы 1. Добавьте поле базовой валюты также в форму. 2. Снимите флажок «Видимо по умолчанию» в поле базовой валюты.

0 голосов
/ 05 августа 2009

Я согласен с Хади Тео, что вам нужно установить значение транзакции в валюте. Прошло некоторое время с тех пор, как я столкнулся с этим - вот что я помню.

Если вы создаете новую сущность с заполненным денежным полем, будет задана валюта транзакции. Если вы обновите объект, поле валюты транзакции не будет установлено.

Я не использовал функцию Activity to Case, поэтому я не совсем уверен, что она делает. В качестве обходного пути вы можете добавить транзакцию в форму. Затем вы можете установить его, прежде чем изменять ваш кейс.

Другой вариант - использовать валюту по умолчанию в коде. Есть два места для определения валюты по умолчанию. Сначала отключите пользовательские настройки. Второе (если это значение равно нулю) отключение настроек организации.

...