Закрыть страницу из PageLoadComplete

Никак не соображу.

Есть деталь в разделе, там кнопка Добавить. По ней вызывается страница редактирования записи детали.
Надо в этом процессе проверить некое условие и в зависимости от него либо продолжать, либо выдать сообщение пользователю и закрыть страницу.

Что типа такого в PageLoadComplete мне видится

if (ParentDoc.Condition = true ){
   //продолжаем штатно

}else{
  MessageToUser ("НИЗЗЯ ТЕБЕ!!!");
  Page.Close();

}

Нравится

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

Или не из PageLoadComplete это делать?

А зачем вообще доходить до открытия ...EditPage? Можно написать свой обработчик для кнопки "Добавить" в ...GridPage. Обычно обработчики кнопок в гриде сделаны на JS из соображений оптимизации, но вполне можно написать обычный кусочек БП, который открывает или не открывает окно, в зависимости от условия.

Александр, зависит от того, какие условия Вы проверяете, и когда эти условия инициализируются.
В Вашем случае, видимо, они передаются из родительского окна. В таком случае можно делать проверку на Init.

Ну до этого я допер, что на Init. А как мне что то сказать пользователю и остановить процесс открытия страницы редактирования, вот чего я никак не допру.

И кстати, если через Init, то как мне достучатся до родительской записи для этой детали?

Поддерживаю Александра. Задачу нужно решать иначе.

Иначе то оно да, но как?

Делать проверку до начала открытия окна.

Ну то есть проверку надо делать в событии по клику на кнопке Добавить.
Но мне надо обращаться к текущей записи в основном реестре раздела.
Как до нее добраться, кнопка то в реестре детали.....

Разобрался, на событии нажатия на кнопку параметр
SelectedNodePrimaryColumnValue содержит Id выбранной в основном реестре записи

Возникла другая проблема.
Повесил на событие AddButtonClick свой скрипт таск:

AddButtonClick

Теперь в скрипте проверяю все что мне надо, но!, как мне прервать процесс?!!

return false;

не помогает, все равно открывается страница редактирования записи, так как отрабатывает родительский процесс базовой страницы реестра....

Решил проблему:
1. Скрываем стандартную кнопку Добавить
2. Добавляем свою кнопку Добавить
3. На событие клика своей кнопки Добавить вешаем скрипт с проверкой нужного нам условия и в соответствии с этим заполняем параметр процесса.
4. Добавляем условные потоки управления в зависимости от значения параметра.
5. Не забываем сгенерировать сообщение "AddButtonClick" в родительский процесс по нужному нам условию.
6. Наслаждаемся :-)

addbuttonclicknew

Да, всё правильно. При желании можно ещё показать сообщение при отрицательном значении условия. И из двух условных потоков всё же лучше один сделать по умолчанию (не с ромбиком, а с чертою).

Это уже частности и очевидности, но спасибо.

:wink:

"Шамуилов Александр" написал:1. Скрываем стандартную кнопку Добавить

Можно было просто убрать логику из метода GetRegisterAddPageScript, тогда
"Шамуилов Александр" написал: все равно открывается страница редактирования записи

не должно происходить.

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