Как закрыть модальное окно

Добрый день!
Подскажите, пожалуйста, как можно скриптом закрыть модальное окно?
Пробовал Self.Close() - не реагирует.

Нравится

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

Дмитрий, зависит от того, в каком скрипте Вы вызываете

Self.Close();

Попробуйте еще

Window.Close();

Также, если есть условия, при которых выполняется закрытие. проверьте, выполняются ли они.

У меня при открытии террасофта открывается модальное окошко с двумя кнопками. При нажатии на любую из кнопок окно должно закрыться. Скрипт на кнопке:

function btnOfficeOnClick(Control) {
	var CurrentDate = GetLocalDate();
	var ContactID = Connector.CurrentUser.ContactID;
	AddRecordInWhereWorks(ContactID, CurrentDate, of_Head);
	Self.Close();
}

Self.Close() выполняется, но ничего не происходит.
Объекта Window у меня нет.

Получилось закрыть на событии OnTimer как описано в http://www.community.terrasoft.ru/forum/topic/7327

Дмитрий, рад, что получилось.

Здравствуйте!
У меня та же проблема. Хочу, чтоб окно окно wnd_DateReportFilter закрывалось по одной из кнопокOK или отмена. Открыл его как модальное.

var FilterForm = Services.GetNewItemByUSI('wnd_DateReportFilter');
FilterForm.ShowModal();

Окно открывается, но свойство IsModal остается false.

Для кнопок прописываю события:

function btnOKOnClick(Control) {
Control.ParentWindow.ModalResult = wmrOK;
Control.ParentWindow.Close();
}

function btnCancelOnClick(Control) {
Control.ParentWindow.ModalResult = wmrCancel;
Control.ParentWindow.Close();
}

События отрабатывают, но окно остается открытым, закрывается оно только "крестиком", при этом свойство ModalResult после закрытия остается 2, как будто кнопка ОК не нажималась.
Следуя вашим рекомендациям вставил таймер:

function TimerOnTimer(Timer) {
if (ShowWindow){
Self.Close();
}else{
Timer.IsEnabled = false;
}
}

Таймер срабатывает сразу после открытия и выдается ошибка: "ShowWindow - определение отсутствует".

Здравствуйте, Владимир!
Уточните, пожалуйста, какая у Вас версия Террасофт?

Владимир, измените код таким образом:

function btnCancelOnClick(Control) {
Control.ModalResult = wmrCancel;
Control.ParentWindow.Close();
}

Спасибо, Наталья! Получилось.

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