Запретить удаление правил

Тема в разделе "Lotus - Программирование", создана пользователем azat20, 15 июн 2010.

  1. azat20

    azat20 Well-Known Member

    Регистрация:
    22 июл 2008
    Сообщения:
    244
    Симпатии:
    0
    Добрый день! Все сталкивались с тем, что правила продолжают работать после их удаления во включенном состоянии. Я решил написать что-то вроде того, чтобы на Querydocumentdelete если правило включено (Enable=1), поле Enable сбрасывалось на 0, сохранялось, а далее правило удалялось. Но почему то в почтовом шаблоне написанные мною строки в данном методе не отрабатывают... Никто не знает, как можно решить описанную проблему?
     
  2. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    КМК, лучше в данном случае выводить пользователю соответствующее сообщение и отменять удаление (Continue = False).
     
  3. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    Я не сталкивался...

    А ты этим шаблоном базу накрыл потом?
    Открой в дизайнере накрытую базу и поищи свой код. Если есть, но не работает, то перезагрузи нотес, если все-равно не работает, попробуй убить файл cache.ndk.
    Если все-равно не работает, то надо смотреть, может где-то не так написал...
     
  4. VladSh

    VladSh начинающий
    Lotus team

    Регистрация:
    11 дек 2009
    Сообщения:
    1.251
    Симпатии:
    2
    Azat
    Багов, связанных с правилами, море. Особенно с удалением.
    Всё дело в том, что правила-документы - это интерфейсная штука, на самом деле сами "правила" хранятся в специальном профайле.
    С удалением были баги в том, что при удалении не пересчитывался порядок следования, для этого где-то на IBM гулял специальный агент, который это (и ещё некоторые траблы) корректировал.

    Если Вы хотите запретить/изменить удаление, то попробуйте разобраться с этими профайлами и/или с QueryDocumentDelete почтовой базы.
     
  5. Klido

    Klido Гость

    :)
    кнопка ВЫКЛ юзеру доступна - пусть делают все как надо...

    ну там на выключении/удалении можно посмотреть что происходит... если выключить и удалить - в целом все ОК
     
  6. divankin

    divankin Senjor developer

    Регистрация:
    13 авг 2009
    Сообщения:
    182
    Симпатии:
    0
    Как уже правильно сказали, роутер работает не по тем правилам, которые в документах, а по тем, которые хранятся в профиле CalendarProfile.
    В шестом дизайне ExtMailR6 версии 6.5.4 есть код, который обрабатывает удаление правила и удаляет его из профиля. Я думаю и в более поздних версиях почтового шаблона тоже есть.

    Скорей всего проблема в другом. В профиле каждому правилу соответствует поле $FilterFormula_X, где X - номер правила в папке Rules. Этот номер хранится в поле OrderNum.
    В библиотеке Rules есть функция CompactMailRules, которая делает следующее: удаляет все правила в профиле, выдает номера всем правилам в папке и копирует все активные правила в профиль.
    Эта функция вызывается при создании правила, при изменении порядка, при копипасте. Номера выдаются начиная с 1.
    Однако есть секретной правило, по которому оповещения попадают в MiniView. У этого правила номер 0. И по неизвестным мне причинам иногда обычное правило копируется на место правила номер 0.
    В результате при выключении правила, оно фактически остается в профиле и продолжает действовать.

    Как понять, что это ваш случай: поставить Ytria (погуглите), открыть в SkanEz почтовую базу, открыть CalendarProfile, посмотреть, что хранится в поле $FilterFormula_0. Если не пустота и нет слова $MiniView, то удаленное правило прописалось здесь.

    Что делать? Можно в CompactMailRules добавить перерасчет правила номер 0. Можно научить тех.поддержку передергивать его. В последнем случае нужно просто открыть Сервис-Параметры и на вкладке Календарь и задачи->Вывод выключить и включить галочку "Помещать документы календаря и планирования в специальное мини-представление 'Новые извещения' для обработки". (В вашем шаблоне все может называться немного по-другому, ищете поле Use_CalendarRule
     
  7. azat20

    azat20 Well-Known Member

    Регистрация:
    22 июл 2008
    Сообщения:
    244
    Симпатии:
    0
    я хочу выводить сообщение, и ждать ответа от пользователя, если говорит удалить, то отключить правило и удалить его. Дело в том, что в Querydocumentdelete даже это окно не отображается!

    Код (LotusScript):
    Set tempcol=source.Documents
    Set tempdoc=tempcol.GetFirstDocument
    If Not (tempdoc Is Nothing) Then
    If tempdoc.GetFirstItem("form").text="Mailrule" Then
    If tempdoc.GetFirstItem("Enable").text="1" Then
    If 1=ws.Prompt(2,"Ошибка удаления правила","Невозможно удалить включенное правило. Отключить его, а затем удалить?") Then
    'отключаем и удаляем
    Call tempdoc.ReplaceItemValue("Enable","0")
    Call tempdoc.Save(True,False)
    Else
    Exit Sub
    End If
    End If
    End If
    End If

    Вам очень повезло значит. У нас пользователи никак данную фичу не могут запомнить...

    Сорри, тут не шаблон. Я сразу изменения в своей почтовой базе, в которой дизайн не обновляется.

    Но ведь сами правила в виде документов хранятся в почтовой базе. С querydocumentdelete я и хочу разобраться... В других базах все работает.
     
  8. divankin

    divankin Senjor developer

    Регистрация:
    13 авг 2009
    Сообщения:
    182
    Симпатии:
    0
    Версия почтового шаблона у вас какая?
     
  9. azat20

    azat20 Well-Known Member

    Регистрация:
    22 июл 2008
    Сообщения:
    244
    Симпатии:
    0
    Всем спасибо за ответы! Второй раз уже сталкиваюсь с этой еще одной неприятной фичей... Код правильный, и работает верно, но так как дизайнер был запущен с это базой, querydocumentdelete не отрабатывался... Пора бы уж запомнить ;)
     
Загрузка...

Поделиться этой страницей