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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 18.07.2013, 11:37   #1  
Ion is offline
Ion
Участник
 
332 / 16 (1) ++
Регистрация: 19.12.2012
Нужна помощь со JS скриптом
Добрый день!

У меня была задача реализовать такой вот мини калькулятор:

Пенсионный фонд
сумма * % (3 или 4 или 5) / 100 = результат
3(%) до 189 255,00

4(%) от 189 255,01 до 332 630,00

5(%) от 332 630,01

Написал код (на самом деле это одно из моих первых творений).
Все ок, но последнее условие не отрабатывает 5(%) от 332 630,01
все сумы больше 332 630,00 считает как для 4%, а должно 5%.

Опыта в программировании мало, не знаю в чем проблема. Неправильно написан срипт?

function calculator ()
{
Xrm.Page.getAttribute("new_costauto").setSubmitMode("always");
Xrm.Page.getAttribute("new_pensionlevy").setSubmitMode("always");

if (Xrm.Page.data.entity.attributes.get("new_costauto").getValue() !=null)
{
var summa = 0;
var stoimost = Xrm.Page.data.entity.attributes.get("new_costauto").getValue();

if (stoimost <= 189255.00)
{
var summa = ((stoimost*3)/100);
Xrm.Page.data.entity.attributes.get("new_pensionlevy").setValue(summa);
Xrm.Page.getControl("new_pensionlevy").setDisabled(true);
}
else if ( stoimost >= 189255.01)
{
var summa = ((stoimost*4)/100);
Xrm.Page.data.entity.attributes.get("new_pensionlevy").setValue(summa);
Xrm.Page.getControl("new_pensionlevy").setDisabled(true);
}

else if ( stoimost <= 332630.00)
{
var summa = ((stoimost*4)/100);
Xrm.Page.data.entity.attributes.get("new_pensionlevy").setValue(summa);
Xrm.Page.getControl("new_pensionlevy").setDisabled(true);
}

else if (stoimost > 332631.01)
{

var summa = ((stoimost*5)/100);
Xrm.Page.data.entity.attributes.get("new_pensionlevy").setValue(summa);
Xrm.Page.getControl("new_pensionlevy").setDisabled(true);
}
}
}
Старый 18.07.2013, 12:09   #2  
Ion is offline
Ion
Участник
 
332 / 16 (1) ++
Регистрация: 19.12.2012
Все, спасибо, вопрос исчерпан. Нашел в чем проблема
Старый 18.07.2013, 13:30   #3  
Anros is offline
Anros
Участник
 
54 / 28 (1) +++
Регистрация: 01.07.2009
Тут есть еще 1 ошибка
X++:
else if (stoimost > 332631.01)
если stoimost равна 332631.01 то ничего не произойдет
нужно написать
X++:
else if (stoimost > 332631.00)
или вообще оставить одно else

и зачем в каждом if повторять строки
X++:
Xrm.Page.data.entity.attributes.get("new_pensionlevy").setValue(summa);
Xrm.Page.getControl("new_pensionlevy").setDisabled(true);
?
Они же должны выполниться в любом случае, их лучше написать 1 раз в конце.

Последний раз редактировалось Anros; 18.07.2013 в 13:32.
Старый 18.07.2013, 13:50   #4  
Ion is offline
Ion
Участник
 
332 / 16 (1) ++
Регистрация: 19.12.2012
Спасибо, подкорректировал, код стал приятней выглядеть

function calculator ()
{
Xrm.Page.getAttribute("new_costauto").setSubmitMode("always");
Xrm.Page.getAttribute("new_pensionlevy").setSubmitMode("always");

var summa = 0;
var stoimost = Xrm.Page.data.entity.attributes.get("new_costauto").getValue();

if (Xrm.Page.data.entity.attributes.get("new_costauto").getValue() !=null)
{
if (stoimost <= 189255.00)
{
var summa = ((stoimost*3)/100);
}
else if (( stoimost >= 189255.01) && (stoimost <= 332630.00))
{
var summa = ((stoimost*4)/100);
}
else if (stoimost >= 332630.01)
{
var summa = ((stoimost*5)/100);
}
Xrm.Page.data.entity.attributes.get("new_pensionlevy").setValue(summa);
Xrm.Page.getControl("new_pensionlevy").setDisabled(true);
}
}
Старый 18.07.2013, 14:11   #5  
Ion is offline
Ion
Участник
 
332 / 16 (1) ++
Регистрация: 19.12.2012
А можно еще вопрос: почему не очищаются поля?
Я убираю значение с одного поля и хочу чтобы другие поля очищались.
Посмотрел примеры, вроде должно работать, что не так пока не могу понять
Вот пример кода:

if (Xrm.Page.getAttribute("new_dvigatel").getValue() == null)
{
Xrm.Page.data.entity.attributes.get("new_transportfee").setValue(null);
Xrm.Page.data.entity.attributes.get("new_engine").setValue(null);
Xrm.Page.data.entity.attributes.get("new_summazb").setValue(null);
Xrm.Page.getControl("new_transportfee").setDisabled(false);
Xrm.Page.getControl("new_engine").setDisabled(false);
Xrm.Page.getControl("new_summazb").setDisabled(false);
}
Старый 18.07.2013, 14:23   #6  
g.Naukovych is offline
g.Naukovych
Участник
MCBMSS
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
405 / 130 (5) +++++
Регистрация: 23.03.2011
1 этот код на Onchange поля new_dvigatel?

В IE можно отладить JS код.

http://mmcrm.ru/?p=475
__________________
Мой блог https://procrm.tv
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Не работает mapping полей если сущность создать скриптом Ronin2007 Dynamics CRM: Разработка 1 09.07.2013 11:43
Использование FetchUtil в JS для CRM 2011 работает только на сервере Буденый Dynamics CRM: Разработка 2 08.07.2013 10:58
mscrm4ever: CRM 4.0 Creating a JS Resource Manager Blog bot Dynamics CRM: Blogs 0 27.06.2009 10:05
Нужна помощь в анализа логов !!!!!!!!! Kosta100 Dynamics CRM: Администрирование 6 03.03.2009 18:29
Срочно нужна помощь! skywalker2000 Dynamics CRM: Администрирование 3 23.02.2006 16:00

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

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

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