|
re Обработка прерывания пользователя | ☑ | ||
---|---|---|---|---|
0
zakidonoff
17.04.12
✎
21:33
|
BeaViS
Напоролся тут на тему: v8: Обработка прерывания пользователя 11.01.08 - 14:30 Хочется организовать такую обработку прерывания пользователем выполнения кода, чтобы прервано было не все выполние кода, а только текущий цикл. Сам не придумал, м.б. кто изобретал подобное? Делать один фиг неча - поделюсь своей извращенной фантазией =) В глобальном модуле: Перем мВЦикле; Экспорт Процедура ПриВыводеСтроки(ТекущиеДанные, ОформлениеСтроки) Если ТекущиеДанные.СтроковаяКолонка <> Справочники.НекийОбъект.ПустаяСсылка() Тогда ТекущиеДанные.СтроковаяКолонка = Справочники.НекийОбъект.ПустаяСсылка(); КонецЕсли; Если мВЦикле Тогда ВыполнитьЧтоТамНадоПриПрерывании(); Иначе ВыполнитьЦикл(); КонецЕсли; КонецПроцедуры Процедура ВыполнитьЦикл() мВЦикле = Истина; Пока Цикл ОбработкаПрерыванияПользователя(); КонецЦикла; мВЦикле = Ложь; КонецПроцедуры ПроцедураИнициаторАлгоритма() СтрокаВызывающаяБесконечноеЦиклическоеСрабатываниеСобытияПриВыводеСтроки = СкрытоеТабличноеПоле.Добавить(); СтрокаВызывающаяБесконечноеЦиклическоеСрабатываниеСобытияПриВыводеСтроки.СтроковаяКолонка = Справочники.НекийОбъект.ПустаяСсылка(); КонецПроцедуры мВЦикле = Ложь; |
|||
1
DrShad
17.04.12
✎
21:50
|
и это хрень работает?
|
|||
2
zakidonoff
17.04.12
✎
21:51
|
ХЗ.
Не проверял. По идее - должна. Всяко лучше, чем флаги в реестр операционки вешать =) |
|||
3
Maxus43
17.04.12
✎
21:54
|
нихрена не понял, обработка прерывания не отменяет действий сделанных до её срабатывания
|
|||
4
DrShad
17.04.12
✎
21:55
|
так ты проверь сначала, особенно в серверном варианте
|
|||
5
Maxus43
17.04.12
✎
21:56
|
з.ы. заверни ОбработкаПрерыванияПользователя в попытку, отработает?
|
|||
6
zakidonoff
17.04.12
✎
21:59
|
Это будет работать. Проверять ломает.
По-крайней мере, сама идея точно рабочая. Разве что кое-какие места видоизменить, дописать придется зы: например, добавить куда-нить очистку скрытого табличного поля, дабы без надобности программу не вешало =) |
|||
7
mikecool
17.04.12
✎
22:01
|
(6) бгг, я изобрел вечный двигатель, идея рабочая, а проверить - ломает
|
|||
8
zakidonoff
17.04.12
✎
22:02
|
На тонком клиенте - тоже, коль скоро там также идет проверка вывода строки каждый раз, как происходит изменение данных в ней.
На сервере - точно именно так и есть. Весь казус в том, что глюк зацикливания процедуры привыводестроки оставляет промежутки для действий пользователя, а уход в бесконечный цикл в теле процедуры - нет =) |
|||
9
zakidonoff
17.04.12
✎
22:03
|
v8: re Обработка прерывания пользователя
Для моих 32х см это не вечный двигатель, а способ расслабиться гг )) |
|||
10
zakidonoff
17.04.12
✎
22:04
|
пля. Как вы ссылки на сообщения делаете? (9)
|
|||
11
zakidonoff
17.04.12
✎
22:05
|
(10) Ясно =)
|
|||
12
zak555
17.04.12
✎
22:06
|
> Хочется организовать такую обработку прерывания пользователем выполнения кода, чтобы прервано было не все выполние кода, а только текущий цикл.
пример такого цикла озвучь |
|||
13
zakidonoff
17.04.12
✎
22:12
|
(12) Де юре будет прерван весь код.
Но внешне будет выглядеть так, будто быд прерван лишь цикл. Со стороны пользователя условие соблюдено. Со стороны программиста... Программисту по определению должно быть ровно как сделано то, что работает. Главное - работает. |
|||
14
DrShad
17.04.12
✎
22:12
|
(11) да где же у тебя выход из процедуры?
|
|||
15
zakidonoff
17.04.12
✎
22:14
|
(14) Какой код тебе нужен? И из какой процедуры? Я привел набросок принципиальной схемы - не более того.
|
|||
16
DrShad
17.04.12
✎
22:20
|
(15) так он нерабочий нифига
|
|||
17
zakidonoff
17.04.12
✎
22:21
|
(14) Догнал о чём речь... Писал выше (6)
Выход делаем так: Процедура ВыполнитьЦикл() мВЦикле = Истина; Пока Цикл ОбработкаПрерыванияПользователя(); КонецЦикла; мВЦикле = Ложь; СкрытоеТабличноеПоле.Очистить(); КонецПроцедуры |
|||
18
zakidonoff
17.04.12
✎
22:22
|
(16) Спорим?
=) |
|||
19
DrShad
17.04.12
✎
22:24
|
спорим, только конец процедуры или возврат вернут управление назад
|
|||
20
zakidonoff
17.04.12
✎
23:00
|
(19) На что спорим? )
Понимаю, что уже не интересно - я только что проверил и реализовал свой алгоритм... Но а вдруг не поверишь? =) |
|||
21
DrShad
17.04.12
✎
23:08
|
а что у тебя есть?
|
|||
22
zakidonoff
17.04.12
✎
23:14
|
(21) Давай так:
Я сейчас скидываю сюда обработку, которая при нажатии на кнопку запускает бесконечный цикл. Если нажать ctrl + брык - выдается стандартное сообщение о прерывании, после которого появляется предупреждение о том, что усё прекрасно работает. Смысл ясен - в процедуру с этим предупреждением можно запихать всё что угодно. Условие соблюдено - процесс продолжится. Если она действительно работает именно так, то ты скидываешь мне на сотовый условную сумму (пусть 100р). Если нет - то ты мне. Больше смысла нет - это всё так - на честность ) Идет? |
|||
23
zakidonoff
17.04.12
✎
23:16
|
(22) *Если нет - то Я тебе
|
|||
24
DrShad
17.04.12
✎
23:42
|
давай
|
|||
25
zakidonoff
17.04.12
✎
23:48
|
(24) лови
http://disk.tom.ru/3zc3vpr |
|||
26
DrShad
17.04.12
✎
23:52
|
белый экран смерти 1С
|
|||
27
DrShad
17.04.12
✎
23:55
|
с тебя сотка
|
|||
28
DrShad
18.04.12
✎
00:02
|
можешь пожертвовать по кнопке справа внизу
|
|||
29
zakidonoff
18.04.12
✎
00:04
|
(26) На чём запускал?
|
|||
30
zakidonoff
18.04.12
✎
00:05
|
На старой платформе потребуется небольшая перестановка мест слагаемых.
Типа такого: http://disk.tom.ru/1juwzab |
|||
31
DrShad
18.04.12
✎
00:06
|
платформа свежая
|
|||
32
zakidonoff
18.04.12
✎
00:07
|
(30) пардоньте - ссылка битая )
http://disk.tom.ru/qqgt6d4 |
|||
33
zakidonoff
18.04.12
✎
00:10
|
(31) Первую тестил на 8.2 (8.2.13.205)
Вторую - на этой и предыдущих. Крайняя работает на всех 8.х |
|||
34
zak555
18.04.12
✎
00:12
|
метки это жесть
|
|||
35
DrShad
18.04.12
✎
00:13
|
(33) работает, говори номер телефона
|
|||
36
zakidonoff
18.04.12
✎
00:14
|
(34) Метки там - не главное. Их легко можно обойти. Вставил уж для полной имитации того, что тело процедуры продолжается после прерывания цикла
|
|||
37
zak555
18.04.12
✎
00:15
|
подтверждаю - ничего не работает 15.301
|
|||
38
zakidonoff
18.04.12
✎
00:15
|
(35)
+7-960-971-37-64. И на что ты надеялся? =) |
|||
39
zakidonoff
18.04.12
✎
00:16
|
(37) Смотри эту:
http://disk.tom.ru/qqgt6d4 |
|||
40
DrShad
18.04.12
✎
00:16
|
оно не продолжается а запускается заново
|
|||
41
DrShad
18.04.12
✎
00:18
|
лови свою сотку
|
|||
42
zak555
18.04.12
✎
00:20
|
хотя в редиме отладки не запустилось
|
|||
43
zakidonoff
18.04.12
✎
00:20
|
(40) По факту - да. Визуально - нет.
Но я это оговаривал. Поставленная задача выполнена. Надо же - не обманул ) Мерси. |
|||
44
DrShad
18.04.12
✎
00:21
|
(43) сотка не деньги
|
|||
45
zak555
18.04.12
✎
00:23
|
только каково применение ?
|
|||
46
Никола_
Питерский 18.04.12
✎
00:26
|
(45) Как минимум выйграть сотку ! )))
|
|||
47
zakidonoff
18.04.12
✎
00:26
|
(44) Приятна не сотка, а честность ;)
(45) Я ХЗ. Автору надо было зачем-то... Но лично я уже знаю, куда такую приблуду можно вставить. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |