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

  • Автор темы Автор темы Xushnud
  • Дата начала Дата начала
X

Xushnud

Короче незнаю как записи дублируються, мне кажестья что при нажатия 2 раза сохранение дублируються(но не уверен).
в кнопке сохранение я исползую
Код:
@Do(@Command([FileSave]);@Command([FileCloseWindow]))
в поле id шника есть проверка чтобы не дублировались записи:
Код:
fIDN:=@DbLookup("":"NoCache";"";"qwerty";tIDN;1;[FailSilent]);

Я решил скрыть кнопку после первого нажатия таким образом:
Код:
document.all['save'].style.display='none';
document.getElementById('save1').click();
Тоисть создал ешё одну кнопку, но тута тоже глюк идёт(незнаю почему), если в странице есть ошибка она проста после нажатия исчезаеть полностью. Если нет ошибки то всё намально работает.
Подскажите что можна сделать :(
 
это че, веб?
как-то мутно ты описал свою проверку...
короче, есть заветное поле 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,
заглядывает в базу, проверяет условия,
если все хорошо, то он сохраняет доку и перенаправляет вывод, например,
Код:
Print "Ваши данные успешно приняты"
если не хорошо, то он может перенаправить таким образом
Код:
Print "Ваши данные не отвечают условиям"
и после этого сделать переход по истории назад,
либо можно установить флаг в поле SaveCheck = "условия не выполенны" и на форме OnLoad выполнить проверку уже на JS:
Код:
if (document.getElementById("SaveCheck").value != "") alert(document.getElementById("SaveCheck").value)
либо можно сделать что-то другое :(

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

Ешё раз блогадарю за подсказку )
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab