15.12.2010, 11:46 | #1 |
Участник
|
Вечная проблема со скриптами в CRM
Подскажите, пожалуйста, уже устал просто, ничего в этом CRM работать нормально не хочет.
X++: У меня есть поля на форме (Числовые, типа Int, дробные, тип Float, тестовые, varchar). Цифры некоторые вводятся в поле типа varchar, Затем это значение умножается (или делится) в зависимости от операции на значение в поле типа int, и на выходе получаем число типа float (разумеется в JavaScript Дробные числа через точку записываются например. X++: var Value = 1000; var DX = 23; var Summa = Value / DX; / * Summa = 43.478260869565217391304347826087 * Я решил добить всё-таки этот 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 |
Kostya Afendikov
|
1. Запятая - это разделитель, указанный в ваших настройках CRM. Если вы поменяете формат на английский(США) то будет точка.
2. если вашему атрибуту, типа float, присвоить значение дроби, то все должно сработать и без замены точки на запятую и прочее. Н-р. crmForm.floatattribute.DataValue = crmForm.textattribute1.DataValue / crmForm.textattribute2.DataValue главное, чтобы в текстовых атрибутах были числа, а не буквенный символы. Попробуйте |
|
15.12.2010, 12:39 | #3 |
Moderator
|
При прочтении сего плакал. Меняйте направление деятельности, программирование и 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 |
Moderator
|
Хм. Продуманно!
Цитата:
Код: var f = 1.1 Цитата:
Сообщение от 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 }; Цитата:
Цитата:
Очень печально. Сколько раз за эту неделю вы почитали справочник по JS или CRM SDK? Ни разу? Какого еще поворота судьбы вы ожидали?!
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
|
|