Вход | Регистрация


1С:Предприятие ::

Метки:Приемы программирования

Несколько ОбработокОжидания ?

Я
   wind_wail
16.06.04 - 16:59
Решил использовать функцию ОбработкаОжидания для удаления "ненужных" документов.
Вопрос: если я запущу свою ОбработкуОжидания, а в это время будет запущена какая-то другая, что произойдет?
Насколько я понял, повозившись с ОбработкамиОжидания, последняя затирает все предыдущие, я прав ? Если да, то как оптимально это затирание обойти ?
Заранее спасибо.
WindWail
 
 
   Рупор абсурда
 
1 - 16.06.04 - 17:03
Придётся разрулить всё одной ...
   wind_wail
2 - 16.06.04 - 17:06
Я то разрулю, мне не сложно :)
но вот прикинь из другого места конфы запуститься какая-нибудь другая безобидная ОбработкаОжидания... и мою так Бац! Бац!... и усе...
   Рупор абсурда
 
3 - 16.06.04 - 17:10
(2) А другие места конфы защищены от тебя паролем?
   LOSS
 
4 - 16.06.04 - 17:11
Выбирай.... таблетку НЕО
   wind_wail
5 - 16.06.04 - 17:25
(3) нет, не защищены.
   AlexMan
 
6 - 16.06.04 - 17:28
(0) Войди монопольно.
   wind_wail
7 - 16.06.04 - 17:31
(6) Я не понимаю о чем вы ? Я намерен использовать запуск ОБработкиОжидания из журнала документов. Причем тут пароли и монопольный доступ? Это должно будет работать у всех пользователей. Я могу изменять конфу, как захочу...
   Рупор абсурда
 
8 - 16.06.04 - 17:32
(6) Монопенисуально!
   wind_wail
9 - 16.06.04 - 17:33
(8) Свежее решение...
   AlexMan
 
10 - 16.06.04 - 17:37
так речь идет о пометке удаления или об удалении?
 
  Рекламное место пустует
   wind_wail
11 - 16.06.04 - 17:56
(10) Речь идет о том, что если я запущу свою обработку ожидания, то она может по****ть другую обработку, которая в данный момент запущена.
   AlexMan
 
12 - 16.06.04 - 17:58
Так а попробывать слабо?
   wind_wail
13 - 16.06.04 - 18:05
(12) Попробовал. Оно имеет место (убивания одноф ОбработкиОжидания другой)
Вот след код глобального модуля.

Перем КонтекстОбр;
Перем Х,У,З;

Процедура ПриНачалеРаботыСистемы()
    Х=0;У=0;З=0;
    ОбработкаОжидания("глОбработ",1);
    ОбработкаОжидания("глОбработ2",1);
    ОбработкаОжидания("глОбработ3",1);
    Сообщить("Вроде должна");
КонецПроцедуры

Процедура глОбработ()
    Х=Х+1;
    Если Х = 4 тогда
        ОбработкаОжидания("глОбработ",0);
    КонецЕсли;
КонецПроцедуры 

Процедура глОбработ2()
    У=У+1;
    Если У = 4 тогда
        ОбработкаОжидания("глОбработ2",0);
    КонецЕсли;
КонецПроцедуры

Процедура глОбработ3()
    З=З+1;
    Если З = 4 тогда
        ОбработкаОжидания("глОбработ3",0);
    КонецЕсли;
КонецПроцедуры


В результате (в отладчике)
Х=0,У=0,З=0
Х=0,У=0,З=1
Х=0,У=0,З=2
Х=0,У=0,З=3
Х=0,У=0,З=4
Х=0,У=0,З=4
Х=0,У=0,З=4
Х=0,У=0,З=4
... и т.д. до бесконечности.
Следовательно: делаем вывод, что первые две обработкиОжидания были просто безжалостно убиты.
Вопрос: На*** тогда нужны ОбработкиОжидания, если твоя обработка может быть убита другой обработкой в любой момент
   wind_wail
14 - 16.06.04 - 18:25
О, а может быть есть какие-то внешние компоненты, которые выполняют аналогичные функции ?
   Asmody
 
15 - 16.06.04 - 22:01
   SnarkHunter
 
16 - 16.06.04 - 22:10
I like woodpeckers...
   Asmody
 
17 - 16.06.04 - 22:31
   427
 
18 - 17.06.04 - 07:21
Второй закон программирования - если нельзя, но очень хочется, то можно...
   mszsuz
 
19 - 17.06.04 - 07:33
Ну чего с ответом тянете? Фича то недокументированная - почитать про неё негде ...
(0) В каждой форме можно задать свою обработку ожидания ч/з предопределенный атрибут Форма. Например, Форма.ОбработкаОжидания("ТвояПроцедура",5);
Или можно написать менеджер, например как здесь:
http://1c.hippo.ru/cgi-bin/predownl.cgi?id=1510
   427
 
20 - 17.06.04 - 07:40
Его это не спасет... А если тупой юсер закроет форму?
Ему надо в глобальнике...

Ежели товарисч туп, то он не допрет, что можно одной обработкойОжидания запускать диспетчер, который и будет разруливать несколько процедур... Он же хочет не проверяя, есть ли уже обработчик - просто запустить следующий ....
   mszsuz
 
21 - 17.06.04 - 09:44
>А если тупой юсер закроет форму?
// в модуле формы
Процедура ПриЗакрытии()
    Если Константа.ВасяРазрешил=0 Тогда
        Предупреждение("О попытке саботажа будет доложено руководству!",5);
        СтатусВозврата(0);    Возврат;
    КонецЕсли;
КонецПроцедуры



Список тем форума
Рекламное место пустует   Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует