Как устранить дублирование записи?

Тема в разделе "Lotus - Программирование", создана пользователем Xushnud, 13 окт 2008.

  1. Xushnud

    Xushnud Гость

    Короче незнаю как записи дублируються, мне кажестья что при нажатия 2 раза сохранение дублируються(но не уверен).
    в кнопке сохранение я исползую
    Код (Text):
    @Do(@Command([FileSave]);@Command([FileCloseWindow]))
    в поле id шника есть проверка чтобы не дублировались записи:
    Код (Text):
    fIDN:=@DbLookup("":"NoCache";"";"qwerty";tIDN;1;[FailSilent]);
    Я решил скрыть кнопку после первого нажатия таким образом:
    Код (Text):
    document.all['save'].style.display='none';
    document.getElementById('save1').click();
    Тоисть создал ешё одну кнопку, но тута тоже глюк идёт(незнаю почему), если в странице есть ошибка она проста после нажатия исчезаеть полностью. Если нет ошибки то всё намально работает.
    Подскажите что можна сделать :(
     
  2. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    это че, веб?
    как-то мутно ты описал свою проверку...
    короче, есть заветное поле SaveOptions, порой в справке, нете...
    в кратце, если SaveOptions = "0", документ не сохранится, если нету поля либо "1" сохранится...
    т.е. на свою форму цепляешь поле SaveOptions, пихаешь в него "0".

    дальше есть варианты:

    1) по кнопке сохранения запускается агент WebQuerySave, в него-то мы и запулим проверку на скрипте, если проверка пройдена, т.е. подобного документа нету, то мы самостоятельно вызываем Save нашего документа, который в агенте WebQuerySave можно получить как NotesSession.DocumentContext;

    2) по кнопке запускаем нужный агент @Command(ToolsRunMacro), который как и в первом варианте проверил, сохранил...

    разница лишь в том, что в случае запуска WebQuerySave агента, он самостоятельно пытается сохранить док, если SaveOptions <> "0", но так как у нас SaveOptions = "0", то мы должны сами сохранить документ, потом идет стандартное перенаправление "Document processed", которое надо обработать самому

    а в случае @Command(ToolsRunMacro) сохранение не вызывается, но данные передаются на сервер, мы их обрабатываем и сохраняем, но по окончанию работы агента перенаправление идет на этот же документ, т.е. он просто открывается снова с обработанными данными, поэтому мы опять же должны организовать перенаправление куда надо...

    на примере второго варианта объясню:

    юзер создает док, заполняет, нажимает сохранить,
    происходит @Command(ToolsRunMacro),
    агент получает документ через NotesSession.DocumentContext,
    заглядывает в базу, проверяет условия,
    если все хорошо, то он сохраняет доку и перенаправляет вывод, например,
    Код (Text):
    Print "Ваши данные успешно приняты"
    если не хорошо, то он может перенаправить таким образом
    Код (Text):
    Print "Ваши данные не отвечают условиям"
    и после этого сделать переход по истории назад,
    либо можно установить флаг в поле SaveCheck = "условия не выполенны" и на форме OnLoad выполнить проверку уже на JS:
    Код (Text):
    if (document.getElementById("SaveCheck").value != "") alert(document.getElementById("SaveCheck").value)
    либо можно сделать что-то другое :(

    надеюсь идея понятна :)
     
  3. Xushnud

    Xushnud Гость

    Да это веб, идею понятно. Болшое спб )
    Проверка у меня стоит в поле id шника, в input validation. Короче разница времени созданных дублированных записей 5-10 сек, поэтому я подумал что это из-за дабл-клика на кнопку сохранить и решил скрыть его после первого нажатия, вроде получилось, посмотрим результат, если не поможеть, то попробую твою идею.

    Ешё раз блогадарю за подсказку )
     
Загрузка...

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