Проблема с напоминаниями

Добрый день.
Когда приходит новая заявка появляется напоминание.
Но если после закрытия заявки мне приходит на нее ответ, то напоминание не выскакивает.
Какая функция может отвечать за появление напоминаний?

Нравится

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

Нашел в чем проблема, напоминание выставляется датой равной планируемой дате начала.
А можно ли сделать например фактическая дата начала + 1 минута?

BaseDBEdit.Dataset.Values('RemindToOwnerDate') =
			BaseDBEdit.Dataset.Values('StartDate');

Как бы это выглядело? Или необходимо добавлять новое поле

function UpdateRemindToOwnerControls(IsReminding) {
	edtRemindToOwnerDate.IsEnabled = IsReminding;
	var DueDate = BaseDBEdit.Dataset.Values('DueDate');
	var newDueDate =  DueDate.setMinutes(DueDate.getMinutes() + 2);
	if (IsReminding) {
		BaseDBEdit.Dataset.Values('RemindToOwnerDate') = newDueDate;
	} else {
		BaseDBEdit.Dataset.Values('RemindToOwnerDate') = null;
	}
}
var newDueDate =  DueDate.setMinutes(DueDate.getMinutes() + 2);

Такая запись не нравится. А как можно по другому записать?

function UpdateRemindToOwnerControls(IsReminding) {
	edtRemindToOwnerDate.IsEnabled = IsReminding;
	var StartDate = BaseDBEdit.Dataset.Values('StartDate');
	var DefaultTaskDurationMinutes = 2;
	var newStartDate = StartDate;
    var Minutes=StartDate.getMinutes();
	newStartDate.setMinutes(Minutes+DefaultTaskDurationMinutes);
	if (IsReminding) {
		BaseDBEdit.Dataset.Values('RemindToOwnerDate') = newStartDate;
	} else {
		BaseDBEdit.Dataset.Values('RemindToOwnerDate') = null;
	}
}

И так не хочет

function UpdateRemindToOwnerControls(IsReminding) {
	edtRemindToOwnerDate.IsEnabled = IsReminding;
    var theDate = new Date(Date.parse(BaseDBEdit.Dataset.ValAsDateTime('StartDate')));
    var newDate = (theDate.getFullYear() + "-" + (theDate.getMonth())
		+ "-" + theDate.getDate() + " "+theDate.getHours() + ":" + (theDate.getMinutes()+2)
				+ ":" + theDate.getSeconds());
	if (IsReminding) {
		BaseDBEdit.Dataset.Values('RemindToOwnerDate') = newDate;
	} else {
		BaseDBEdit.Dataset.Values('RemindToOwnerDate') = null;
	}
}

Решилось так, можно закрывать

"Зголич Олег Александрович" написал:theDate.getMinutes()+2

Проверьте не будет ли возникать ошибка в 59 минут.

chbRemindToOwner есть такая кнопка.
можно ли как нибудь сделать, чтобы при создании новой задачи она становилась isChecked?
_____________________________________________________________________________

Решил так :

var Today = new Date();
	var NowDate =  Today.getVarDate();
	var StartDate = Dataset.Values('StartDate');
    if ( NowDate < StartDate )
    {
		chbRemindToOwner.IsChecked  = true;
		edtRemindToOwnerDate.IsEnabled = true;
	}
	else
	{
	    chbRemindToOwner.IsChecked  = false;
	    edtRemindToOwnerDate.IsEnabled = false;
	}

Надо вместо StartDate, NewDate, а при 59 мин ошибка =( а как ее можно обойти?

  var Today = new Date();
	var NowDate =  Today.getVarDate();
	chbRemindToOwner.IsChecked = true;
	if (NowDate > RemindToOwnerDate)
	{
	    chbRemindToOwner.IsChecked  = false;
	}

Не могу понять почему поле закрывается, даже если RemindToOwnerDate больше чем текущее время
Думал проверять еще так:

var theDate = new Date(Date.parse(BaseDBEdit.Dataset.ValAsDateTime('StartDate')));
    var newDate = (theDate.getFullYear() + "-" + (theDate.getMonth())
                + "-" + theDate.getDate() + " "+theDate.getHours() + ":" + (theDate.getMinutes()+2)
                                + ":" + theDate.getSeconds());
if (NowDate > newDate )

0 результата

Кстате, если например RemindToOwnerDate прировнять newDate, то данные будут отличаться на 2 минуты. Значит функция написана верно. Почему не происходит проверка для меня загадка

"Зголич Олег Александрович" написал:Надо вместо StartDate, NewDate, а при 59 мин ошибка =( а как ее можно обойти?

newDate = new Date(theDate);
newDate.setTime(newDate.getTime()+[количество миллисекунд, т.е. 2*1000*60]  );

Валерий, не работает ваш вариант. Неверный формат присвоения.

 var theDate = new Date(Date.parse(BaseDBEdit.Dataset.ValAsDateTime('StartDate')));
    if(theDate.getMinutes() == 59){
    	var newDate = (theDate.getFullYear() + "-" + (theDate.getMonth())
			+ "-" + theDate.getDate() + " " + (theDate.getHours()+1) + ":" + (theDate.getMinutes() - 59)
					+ ":" + theDate.getSeconds());
	}
	else{
	    var newDate = (theDate.getFullYear() + "-" + (theDate.getMonth())
			+ "-" + theDate.getDate() + " "+theDate.getHours() + ":" + (theDate.getMinutes() + 1)
					+ ":" + theDate.getSeconds());
	}

Можно попытаться обойти проблему так, но это не решает ее, хоть напоминания на 00.00 ставиться не будут 100%, все равно это не вариант, должно быть настроено грамотно... может есть еще советы что делать?

Добавьте этот код в скрипт и нажмите F9.

function Main(){
var n=new Date(System.Now());
n2=new Date(n);
n2.setTime(n2.getTime()+1000*60*2);   
Log.write(2,n);	
Log.write(2,n2);	
}

Выведет в лог текущую дату и время и дату и время +2 минуты

Объект не поддерживает это свойство или метод

[11.08.04 09.57.33.996] (E) 04.08.2011 9:57:34
[11.08.04 09.57.33.996] (E) Thu Aug 4 09:59:33 UTC+0300 2011
Они отличаются, а надо идентичные чтобы были

Здравствуйте Олег
Если вы хотите увидеть формат вывода в виде
'04.08.2011 9:57:34' используйте DateToStr и TimeToStr с скрипта scr_Utils

var n=new Date(System.Now());
n2=new Date(n);
n2.setTime(n2.getTime()+1000*60*2);  
 
Log.write(2,DateToStr(n) + ' ' + TimeToStr(n));
Log.write(2,DateToStr(n2) + ' ' +TimeToStr(n2));       
[11.08.04 10.33.43.798]	(E)	04.08.2011 10:33:43
[11.08.04 10.33.43.798]	(E)	04.08.2011 10:35:43

Также полезно ознакомится с темой http://www.community.terrasoft.ru/forum/topic/6578

Спасибо за ссылку, получилось так:

 var StartDate = BaseDBEdit.Dataset.Values('StartDate');
    Log.write(1, StartDate);
	var NewDate=new Date(StartDate);
	NewDate.setTime(NewDate.getTime()+1000*60*2);
	NewDate = NewDate.getVarDate();
	Log.write(1, NewDate);
Показать все комментарии