Показать сообщение отдельно
Старый 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.

Если кто может помогите пожалуйста.
У меня уже нервы сдают - неделя времени потрачена в пустую, каждый день придумываю новые алгоритмы, парсю значения, преобразовываю, складываю, делю - одно и тоже, либо нули, либо "Этот элемент принимает только числовые значения".