время
коэффициент
умножение
Скрипты
Разработка

умножение времени на коэффициент

Здравствуйте, подскажите пожалуйста
Имеется поле "Фактическое время" (после выполнения задачи считает сколько часов было потрачено на задачу). Поле является "Text Data Control"
И имеется drop-down список с коэффициентом (от 0.1 до 2.0)
Мне необходимо при выборе коэффициента реализовать автоматическое умножение этого коэффициента на "Фактическое время" и результат занести в поле "Количество часов".

Надеюсь на вашу помощь. Заранее спасибо

Нравится

13 комментариев

Добрый день Дмитрий!!!

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

Спасибо за помощь, а то, что поле с затраченным временем является "Text Data control" это ничего страшного? :)

Здравствуйте,

можете привести пример окна (принскрин окна в Terrasoft, а также принскрин окна в Администраторе).
Также укажите тип drop-down компонента и компонентов которые будут задействованы в операции по вычислению "Количества часов".

drop-down сделал через enm

Уточните, какой именно Enum:

  • EnumDataControl
  • EnumControl

Прошу прощения, не так понял Вас
EnumDataControl

В датасете (dlData) окна на события dlDataOnDatasetDataChange пишите код:

var DataFieldName = DataField.Name;
if (DataFieldName == 'Имя Вашего поля в компоненте EnumDataControl') {
	var Val = преобразовываете значение поля [Фактическое время] в цифровое значение;
	var Res = Val * (1 * DataField.ValAsEnumItem.Code);
	[Количество часов] = Res;
}

Где-то приблизительно должен получиться такой код, при условии, что Enum такого вида:

Павел, спасибо большое за помощь! Сейчас попробую

Павел, а может быть Вы мне еще подскажете принцип вычитания 2-ух дат?
Или где это можно подсмотреть :)

Посмотрите на сайтах:

В итоге получилось так:

//Коэффициент занятости
case ('CoefficientID'):
	if (DataFieldName == 'CoefficientID') {
	var theDateStart = new Date(Date.parse(Dataset.ValAsDateTime('ActualStartDate')));
    	var theDateFinish = new Date(Date.parse(Dataset.ValAsDateTime('ActualFinishDate')));
 
        var oneHour=1000*60*60;
	var Val = ((theDateFinish - theDateStart) / oneHour);
 
        var Res = (Val * (1 * DataField.ValAsEnumItem.Code));
    	Res = Res.toFixed(2);
	Dataset.Values('RealHours') = Res;
 
        }		
break;	 

У Вас лишний if, его можно убрать, т.к. case как раз выполняет роль if. Получилась лишняя проверка.

Ой, спасибо. Сейчас уберем :wink:

Показать все комментарии