Список форумов BOSSForum.RU - Форум. БОСС-Кадровик
Независимый форум, посвященный системе БОСС-Кадровик
и всему, что с ней связано
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Прерывание выполнения Scan

 
Начать новую тему   Ответить на тему    Список форумов BOSSForum.RU - Форум. БОСС-Кадровик -> X-язык
Предыдущая тема :: Следующая тема  
Автор Сообщение
sliv0210



Зарегистрирован: 15.02.2016
Сообщения: 18

СообщениеДобавлено: Ср Апр 20, 2016 14:40    Заголовок сообщения: Прерывание выполнения Scan Ответить с цитатой

Код следующий:

SCAN @RepTable EXECUTE
{
......
CON @RepTable:1, @RepTable:2, @RepTable:3, @RepTable:4;
......
......
}; -- End SCAN

При выполнении выводится окно с кнопкой <Cancel> и если на нее нажать или давануть на <Esc> то выполнение отчета прерывается и не выполняются все нужные завершающие действия.
Помогите, пжлста, советом...
Как отловить прерывание?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Mikhail



Зарегистрирован: 16.08.2012
Сообщения: 177
Откуда: Москва

СообщениеДобавлено: Ср Апр 20, 2016 15:47    Заголовок сообщения: Ответить с цитатой

Если прервали по Esc, то код после SCAN..EXECUTE не выполняется же?

Попробуйте добавить после EXECUTE {...} присвоение значение какой-нибудь переменной и далее анализировать её значение: если проверочное значение не присвоено, стало быть выполнение execute было прервано.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
sliv0210



Зарегистрирован: 15.02.2016
Сообщения: 18

СообщениеДобавлено: Чт Апр 21, 2016 06:37    Заголовок сообщения: Ответить с цитатой

Именно!
Код после SCAN EXECUTE { }; не выполняется.
Т.е. воообще... Ни вывод MSG, ни проверки переменных... не отрабатывает ничего. Sad
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Mikhail



Зарегистрирован: 16.08.2012
Сообщения: 177
Откуда: Москва

СообщениеДобавлено: Чт Апр 21, 2016 14:47    Заголовок сообщения: Ответить с цитатой

Полагал, что в любом случае отработает доп. сегмент after, но сейчас проверил и только убедился в правоте ваших слов.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Mikhail



Зарегистрирован: 16.08.2012
Сообщения: 177
Откуда: Москва

СообщениеДобавлено: Пт Апр 22, 2016 17:39    Заголовок сообщения: Ответить с цитатой

Если без использования SCAN не обойтись (например, используя WHILE), и при этом необходимо сразу определить прерывание SCAN (не заглядывая в протокол и т.п.) то можно использовать следующий способ, который у меня сработал.

Тестовый пример:

создал x-процедуру user_scan_interrupt_0:
Код:

let _int := 0;

scan @x
select
   pid
from people
execute
   {

   };

let _int := 1;


затем создал диалог user_scan_interrupt_dlg и в секцию <триггер UPDATE> поместил вызов процедуры user_scan_interrupt_0:
Код:

execute user_scan_interrupt_0;


ну и на последок создал еще одну x-процедуру user_scan_interrupt_1:
Код:

dialog user_scan_interrupt_dlg;
return _int;


Для проверки надо выполнить
Код:

execute user_scan_interrupt_1;


При успешном выполнении RETURN вернет значение _int = 1, если SCAN прервать, то RETURN вернет значение _int = 0.

Наверняка, разработчики могут предложить значительное более простое решение, но я остановился копать, как только получил нужный результат.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Green



Зарегистрирован: 20.09.2013
Сообщения: 32

СообщениеДобавлено: Ср Авг 17, 2016 10:49    Заголовок сообщения: Ответить с цитатой

Добавьте секцию exception в scan:
scan @x select * from "#green"
execute {
let _ii += 1;
@@xUtil(sleep 1000);
}
exception {;}
;
return hello;

В скобках exception{...} что-то должно быть, точки с запятой хватает, иначе не отрабатывает. При наличии этой секции, предшествующий ей блок в фигурных скобках (это может быть скан, процедура и т.п.), при возврате ошибки (в том числе cancel), выполняет секцию exception и продолжает выполнение программы. Будьте внимательны, ведь может быть реальная ошибка, а не просто отмена. Как отследить этот нюанс, увы, не знаю. Кто подскажет - буду премного благодарен Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов BOSSForum.RU - Форум. БОСС-Кадровик -> X-язык Часовой пояс: GMT + 4
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Pоwerеd by рhpВB © 2001, 2005 рhpВB Grouр
Русская поддержка phрВB
Rambler's Top100 Рейтинг@Mail.ru Список форумов BOSSForum.RU