AXForum  
Вернуться   AXForum > Microsoft Dynamics CRM > Dynamics CRM: Разработка
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.12.2010, 11:46   #1  
Dicora is offline
Dicora
Участник
 
109 / 15 (1) ++
Регистрация: 12.07.2010
Вечная проблема со скриптами в CRM
Подскажите, пожалуйста, уже устал просто, ничего в этом CRM работать нормально не хочет.

X++:
как это убрать?

У меня есть поля на форме (Числовые, типа Int, дробные, тип Float, тестовые, varchar).

Цифры некоторые вводятся в поле типа varchar, Затем это значение умножается (или делится) в зависимости от операции на значение в поле типа int, и на выходе получаем число типа float (разумеется в JavaScript Дробные числа через точку записываются например.


X++:
var Value = 1000;
var DX = 23;
var Summa = Value / DX;

/ *


Summa = 43.478260869565217391304347826087

*
Как видно разделитель у нас точка, но если обратить внимание на значения в полях типа float, на форме CRM, появляется запятая? Бредятина полная - зачем менять синтаксис языка и делать так чтобы невозможно было присваивать значения расчетным полям? мне не понятно.

Я решил добить всё-таки этот CRM.
Написал такую функцию:

X++:
function replace_string(txt,cut_str,paste_str){
var f=0;
var ht='';
ht = ht + txt;
f=ht.indexOf(cut_str);
while (f!=-1){
f=ht.indexOf(cut_str);
if (f>0){
ht = ht.substr(0,f) + paste_str + ht.substr(f+cut_str.length);
};
};
return ht
};
если по-простому, она находит в строке нужный символ и заменяет его на другой, нами указанный.

примеряем эту функцию к нашему расчетному дробному числу:

X++:
Summa = replace_string(Summa,".",",");

// получаем строку Summa уже без точки, а  запятой, как любит наш CRM
Пытаемся присвоить это значение нашему полю

X++:
crmForm.all.new_value.DataValue = Summa;
получаем ошибку: Этот элемент управления принимает только числовые значения, в итоге значение нужного нам поля не меняется.

Забыли преобразовать строку в тип Float (или int) тут не важно.
делаем:

X++:
Summa = parseFloat(Summa);
alert("Summa = " + Summa);
Получаем

X++:
/*

 Summa  = 0.0;

*/
Такого поворота судьбы я не ожидал. Выводы:

1) Не понятно как нужно присваивать таким полям расчетные значения.
2) Не ясно как нужно преобразовывать расчетные значения к виду приемлемому для CRM.

Если кто может помогите пожалуйста.
У меня уже нервы сдают - неделя времени потрачена в пустую, каждый день придумываю новые алгоритмы, парсю значения, преобразовываю, складываю, делю - одно и тоже, либо нули, либо "Этот элемент принимает только числовые значения".
Старый 15.12.2010, 12:32   #2  
Bondonello is offline
Bondonello
Kostya Afendikov
Аватар для Bondonello
MCBMSS
Лучший по профессии 2009
 
510 / 106 (5) +++++
Регистрация: 06.06.2008
Адрес: Украина
1. Запятая - это разделитель, указанный в ваших настройках CRM. Если вы поменяете формат на английский(США) то будет точка.
2. если вашему атрибуту, типа float, присвоить значение дроби, то все должно сработать и без замены точки на запятую и прочее.
Н-р. crmForm.floatattribute.DataValue = crmForm.textattribute1.DataValue / crmForm.textattribute2.DataValue
главное, чтобы в текстовых атрибутах были числа, а не буквенный символы.
Попробуйте
Старый 15.12.2010, 12:39   #3  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
При прочтении сего плакал. Меняйте направление деятельности, программирование и CRM - просто не ваше.
Теперь по существу: ЧИТАЙТЕ SDK!!! Programming Reference -> Form Programming Reference -> Field Type Reference. Исчерпывающие примеры для вашей сложнейшей задачи!!!
Код:
//
The following code example shows how to use a field of type Float.


var oField = crmForm.all.SOME_FLOAT_FIELD_ID;
var iValue = 1976.1102;

// Set the precision of the value.
var oNumber = new Number(iValue);
iValue = oNumber.toPrecision(oField.Precision);

if (iValue < oField.Min)
{
   iValue = oField.Min;
}
else if (iResponse > oField.Max)
{
   iValue = oField.Max;
}

oField.DataValue = iValue;
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Старый 15.12.2010, 13:02   #4  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
Цитата:
Сообщение от Dicora Посмотреть сообщение
Цифры некоторые вводятся в поле типа varchar
Хм. Продуманно!
Цитата:
Сообщение от Dicora Посмотреть сообщение
Как видно разделитель у нас точка, но если обратить внимание на значения в полях типа float, на форме CRM, появляется запятая? Бредятина полная - зачем менять синтаксис языка и делать так чтобы невозможно было присваивать значения расчетным полям? мне не понятно.
Вы понимаете разницу между типом данных и их пользовательским представлением??!! Кто менял синтаксис языка??? О чем вы!!! Вы для CRM отдельный браузер со специальной Java машиной используйте??? Это СТАНДАРТНЫЙ Java Script! В нем вообще нет целых, доробных и прочих типов, есть только variant (var). Когда вы пишите
Код:
var f = 1.1
Машина понимает, что речь идет о числе и позволяетвам совершать над ним арифметические операции. Синтаксис (стандарт) языка использует в качестве разделителей точки - всегда. Вне зависимости от ваших предпочтений! Для ВАШЕГО УДОБСТВА CRM отображает числа в привычнов вам виде. Язык программирования никто при этом не меняет.
Цитата:
Сообщение от Dicora Посмотреть сообщение
Я решил добить всё-таки этот CRM.
Написал такую функцию:
[XPP]
function replace_string(txt,cut_str,paste_str){
var f=0;
var ht='';
ht = ht + txt;
f=ht.indexOf(cut_str);
while (f!=-1){
f=ht.indexOf(cut_str);
if (f>0){
ht = ht.substr(0,f) + paste_str + ht.substr(f+cut_str.length);
};
};
return ht
};
Вы добили мой моск, а не CRM!
Цитата:
Сообщение от Dicora Посмотреть сообщение
/Пытаемся присвоить это значение нашему полю

crmForm.all.new_value.DataValue = Summa;

получаем ошибку: Этот элемент управления принимает только числовые значения, в итоге значение нужного нам поля не меняется.
= Запишу ка я строку в числовое поле! Хм, странно. Почему же не работает?
Цитата:
Сообщение от Dicora Посмотреть сообщение
Забыли преобразовать строку в тип Float (или int) тут не важно.
делаем:
X++:
Summa = parseFloat(Summa);
alert("Summa = " + Summa);
Получаем

X++:
/*

 Summa  = 0.0;
*/
Такого поворота судьбы я не ожидал. Выводы:
http://www.w3schools.com/jsref/jsref_parsefloat.asp - вот так работает parseFloat. Результат правильный, так как функция не понимает ваши запятые.

Цитата:
Сообщение от Dicora Посмотреть сообщение
Если кто может помогите пожалуйста. У меня уже нервы сдают - неделя времени потрачена в пустую, каждый день придумываю новые алгоритмы, парсю значения, преобразовываю, складываю, делю - одно и тоже, либо нули, либо "Этот элемент принимает только числовые значения".
Очень печально. Сколько раз за эту неделю вы почитали справочник по JS или CRM SDK? Ни разу? Какого еще поворота судьбы вы ожидали?!
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
CRM DE LA CREME! CRM 4.0 Disaster Recovery Blog bot Dynamics CRM: Blogs 2 26.02.2016 08:23
Все о Microsoft Dynamics CRM: Как установить Microsoft Dynamics CRM 2011 Beta Blog bot Dynamics CRM: Blogs 0 31.10.2010 15:08
CRM DE LA CREME! Configuring Microsoft Dynamics CRM 4.0 for Internet-facing deployment Blog bot Dynamics CRM: Blogs 0 18.08.2009 11:05
Microsoft Dynamics CRM Team Blog: Building Rich-Client Dashboards for Microsoft Dynamics CRM with Windows Presentation Foundation Blog bot Dynamics CRM: Blogs 1 31.03.2009 13:24
Microsoft Dynamics CRM Team Blog: List Web Part for Microsoft Dynamics CRM 4.0 Deployment Scenarios Blog bot Dynamics CRM: Blogs 0 30.01.2009 22:05

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 10:09.