Здравствуйте, подскажите пожалуйста Имеется поле "Фактическое время" (после выполнения задачи считает сколько часов было потрачено на задачу). Поле является "Text Data Control"
И имеется drop-down список с коэффициентом (от 0.1 до 2.0)
Мне необходимо при выборе коэффициента реализовать автоматическое умножение этого коэффициента на "Фактическое время" и результат занести в поле "Количество часов".
ну я думаю подход у вас должен быть очень простым. Получаем текущее затраченное время, я думаю вы его уже знаете. Переводим полученное время в Минуты, в Секунды, в Миллисекунды, в ту единицу измерения в которой вам будет удобно считать. После конвертации из вида Часы.Минуты.Секунды к примеру в Секунды, умножаем полученный результат на выбранный Коэффициент и полученный результат конвертируем обратно к виду Часы.Минуты.Секунды.
можете привести пример окна (принскрин окна в Terrasoft, а также принскрин окна в Администраторе).
Также укажите тип drop-down компонента и компонентов которые будут задействованы в операции по вычислению "Количества часов".
В датасете (dlData) окна на события dlDataOnDatasetDataChange пишите код:
var DataFieldName = DataField.Name;if(DataFieldName =='Имя Вашего поля в компоненте EnumDataControl'){
var Val = преобразовываете значение поля [Фактическое время] в цифровое значение;
var Res = Val *(1* DataField.ValAsEnumItem.Code);[Количество часов]= Res;}
Где-то приблизительно должен получиться такой код, при условии, что Enum такого вида:
//Коэффициент занятости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;