![]() |
![]() |
![]() |
|
ОбработкаПрерыванияПользователя() | ☑ | ||
---|---|---|---|---|
0
Ткачев
13.11.10
✎
08:57
|
Не могу понять почему не работает, помогите.
Процедура ПриОткрытии() ПодключитьОбработчикОжидания("ПриОжидании",1); Пока Истина Цикл ... ОбработкаПрерыванияПользователя(); КонецЦикла; КонецПроцедуры Процедура ПриОжидании() Закрыть(); КонецПроцедуры |
|||
1
Эмбеддер
13.11.10
✎
09:09
|
ПриОткрытии() точно срабатывает?
|
|||
2
stangen
13.11.10
✎
09:10
|
Прерывания выполнения допускается если оно инициировано определенным интерактивным действием пользователя. К таким действиям относятся:
нажатие кнопки в форме; выбор пункта меню или кнопки командной панели в форме; выбор пункта меню или кнопки панели инструментов интерфейса; действия инициируемые обработчиками событий "Выбор" элементов управления. |
|||
3
Ткачев
13.11.10
✎
09:24
|
(2)т.е. нельзя сделать до открытия формы ?
А можно как то опрашивать клавиатуру ? Если НажатаКлавиша="Space" Тогда Закрыть(); КонецЕсли; |
|||
4
hhhh
13.11.10
✎
09:46
|
ну если не открыл еще форму, как же ты ее закроешь?
|
|||
5
Ткачев
13.11.10
✎
10:09
|
Так ведь все работает:
Процедура ПриОткрытии() ПодключитьОбработчикОжидания("ПриОжидании",1); Пока Истина Цикл ... ОбработкаПрерыванияПользователя(); КонецЦикла; Закрыть(); КонецПроцедуры |
|||
6
Ткачев
13.11.10
✎
10:10
|
Просто если надо прервать цикл, надо сделать "горячую" клавишу
|
|||
7
Эмбеддер
13.11.10
✎
14:19
|
(5) Т.е. в данном случае ОбработкаПрерыванияПользователя() срабатывает? Судя по (1) не должна
А вообще зачем такой странный код |
|||
8
Wobland
13.11.10
✎
14:31
|
(7) если б (1) было в ПередОткрытием(), тогда б не сработало. могу ошибаться
|
|||
9
Ткачев
15.11.10
✎
07:52
|
(7)Ни че она не работает, это ответ на вопрос что б форму закрыть (4)
Так есть в 1с команда что б опросить клавиатуру ? IF Inkey$=Chr$(13) Then Return |
|||
10
Ткачев
15.11.10
✎
09:40
|
(7)Надо запустить кнопкой интерфейса обработку, которая перебирает и обрабатывает справочник, как сделать что бы в цикле можно было ее прервать ?
Никаких форм или меню у обработки не должно быть. |
|||
11
hhhh
15.11.10
✎
09:42
|
ОбработкаПрерыванияПользователя();
|
|||
12
Ткачев
15.11.10
✎
09:43
|
(11)Так не работает оно
|
|||
13
Ткачев
15.11.10
✎
09:43
|
(5)
|
|||
14
Ткачев
15.11.10
✎
09:45
|
До конца цикла доходит и закрывает, как сделать что б внутри цикла при нажатии чего угодно, прервать цикл и закрыть обработку...
|
|||
15
Ткачев
15.11.10
✎
09:53
|
Я хоть правильно делаю ?
Создаю новую обработку, добавляю новую форму, создаю процедуру ПередОткрытием или ПриОткрытии(), делаю все что мне надо, для 1 Отказ=Истина, для 2 Закрыть() |
|||
16
hhhh
15.11.10
✎
09:55
|
(11) может они чего-то не того у тебя нажимают? Пусть попробуют Ctrl-Break.
|
|||
17
Ткачев
15.11.10
✎
10:08
|
(16)Нажимаю я, всю клавиатуру перенажимал, не хочет скидывать в процедуру ПриОжидании()
|
|||
18
hhhh
15.11.10
✎
10:41
|
(17) процедура ПриОжидании -это же вообще из другой оперы. Какое отношение имеет ожидание к обработке прерывания пользователя?
|
|||
19
Ткачев
15.11.10
✎
11:34
|
(18)Тут как бы указана процедура для перехода
ПодключитьОбработчикОжидания("ПриОжидании",1); |
|||
20
johnny17
15.11.10
✎
11:38
|
ОбработкаПрерывания - прерывает работу обработки полностью, т.е. сразу выходит из всего стека вызовов, и никак ее не отловить...
|
|||
21
Stepa86
15.11.10
✎
11:47
|
Попробуй код из приОткрытии перенести на кнопку. Если с кнопкой будет работать как надо, то видимо обработчик ожидания не может подрубаться в еще не открытой форме...
|
|||
22
rs_trade
15.11.10
✎
11:57
|
(15) Я хоть правильно делаю ?
Нет не правильно. Задача вообще какая? |
|||
23
johnny17
15.11.10
✎
12:00
|
ИМХО, ОбработкаОжидания никак не связана с какими-либо формами, просто проверка на нажатие Ctrl-Break и выкид из процедуры
|
|||
24
Ткачев
15.11.10
✎
12:01
|
(22)Запустить обработку кнопкой из интерфейса.
|
|||
25
Ткачев
15.11.10
✎
12:01
|
(23)Вот мне это и надо, но не работает:(
|
|||
26
hhhh
15.11.10
✎
12:11
|
(23) ты видать синтакс-помощник вообще не читал. Вот же написано:
Прерывания выполнения допускается если оно инициировано определенным интерактивным действием пользователя. К таким действиям относятся: нажатие кнопки в форме; выбор пункта меню или кнопки командной панели в форме; выбор пункта меню или кнопки панели инструментов интерфейса; действия инициируемые обработчиками событий "Выбор" элементов управления. |
|||
27
johnny17
15.11.10
✎
12:16
|
(26) Смысл в том, что надо это прерывание отловить, а оно не ловится...
И не поймается, это полное прерывание... |
|||
28
Stepa86
15.11.10
✎
12:20
|
(27) у меня почему то такой код работает, ЧЯДНТ?
Перем фФормаПрогресса; Процедура КнопкаВыполнитьНажатие(Кнопка) фФормаПрогресса = ПолучитьФорму( "ФормаПрогресса" ); фФормаПрогресса.Инициализация( ВсегоЭлементов , , "Пример работы формы прогресса..." ); ПодключитьОбработчикОжидания( "ОбработатьПрерываниеПользователя" , 0.1 , Истина ); Для ц = 0 По ВсегоЭлементов Цикл ОбработкаПрерыванияПользователя(); фФормаПрогресса.УвеличитьИндикатор( "Чтобы прервать нажмите Ctrl+Break." , ); КонецЦикла; ОтключитьОбработчикОжидания( "ОбработатьПрерываниеПользователя" ); фФормаПрогресса.Закрыть(); КонецПроцедуры Процедура ОбработатьПрерываниеПользователя() Если Не фФормаПрогресса = Неопределено И фФормаПрогресса.Открыта() Тогда фФормаПрогресса.Закрыть(); КонецЕсли; КонецПроцедуры |
|||
29
johnny17
15.11.10
✎
12:26
|
(28) Упс, будем знать... :) В закладки :)
|
|||
30
johnny17
15.11.10
✎
12:28
|
(28) Хотя... это вродь через одно место, у тебя процедура отработает просто по таймеру, когда остальное прервется, а не в момент срабатывания прерывания, хотя тоже выход...
|
|||
31
Stepa86
15.11.10
✎
12:33
|
(30) из стека функций мы выпадаем полностью, но обработка ожидания остается подключенной... это наверно единственный более-менее приличный способ сделать постобработку данных
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |