• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

замена формы документа

  • Автор темы nadezdaMP
  • Дата начала
Статус
Закрыто для дальнейших ответов.
N

nadezdaMP

задача простая - при сохранении нового(только нового) документа нужно его форму заменить,
Код:
...
If Source.IsNewDoc Then
Call Source.Document.ReplaceItemValue("Form", "temp_f_company")
End If
...
пробовала все возможные варианты, в querysave, и в Queryclose,
и кнопку свою с обработчиком ставлю, ничего не получается.
что что, а форму документа заменить не получилось. вопрос почему?

ps понятно что остается создавать новые доки по форме temp_f_company, просто интересует почему заменить форму не вышло.
 
X

Xalet

В пост сэйв надо. Если документ только создается, то уидок.документ будет ничто. После первого сохранения он появится. И тогда можно пробовать заменить.
 
N

nvyush

В пост сэйв надо. Если документ только создается, то уидок.документ будет ничто. После первого сохранения он появится. И тогда можно пробовать заменить.
В постсэйве Source.IsNewDoc = False полюбому. Поэтому:
1. Объявляем в глобалс документа
Код:
Public IsNewDoc as Boolean
2. В кверисэйв пишем
Код:
If Source.IsNewDoc Then IsNewDoc = True
3. В постсэйве пишем
Код:
If IsNewDoc Then
Call Source.Document.ReplaceItemValue("Form", "temp_f_company")
End If
 
N

nadezdaMP

гм. а так заработало... :rolleyes:

Код:
Sub Querysave(Source As Notesuidocument, Continue As Variant)
If Source.IsNewDoc Then
Call Source.Document.ReplaceItemValue("NewField", "1")
End If
End Sub

Sub Queryclose(Source As Notesuidocument, Continue As Variant)
If Source.Document.GetItemValue("NewField")(0) = "1" Then
Call Source.Document.ReplaceItemValue("Form", "temp_f_company")
Call Source.Document.ReplaceItemValue("NewField", "0")
Call Source.Document.Save(True, False, FALSE)
End If
End Sub

Добавлено: тему еще одну открывать не хотелось бы,
вопрос -
есть ли какой-нибудь способ отличить: из дизайнера агент запускается или с клиента-сервера?
 
S

susinmn

Сomputed поле Form не подойдет)
Мой пример: в бд есть форма с таблицей Show only one row at a time(закладки)
Так вот нужно было сделать несколько кнопок, при click что бы по умолчанию открывалась определенная закладка.
Скриптом не стал делать (нужно было весь код на PostOpen переносить на кнопки).
Сделал несколько форм и поля $My_Table куда и пишу название закладки

В форме есть поле Form - Computed, где и должно идти переименование формы.

Так вот у некоторых при сохранении поле Form=""

Может, я что то неправильно делаю))
 
N

nvyush

гм. а так заработало... :rolleyes:
Ну, собственно это то же самое, что я рекомендовал, только Вы сохраняете признак "новизны" документа не в глобальной переменной, а в поле. На мой взгляд, не стоит засорять документ лишними полями, так что лучше заменить
Код:
	  Call Source.Document.ReplaceItemValue("NewField", "0")
на
Код:
	  Call Source.Document.RemoveItem("NewField")
 
T

TIA

дык Querysave не отрабатывал, ничего не должно случится, не?
Хм... Да, фальтстарт. Извиняюсь. :rolleyes:
Всё равно так не кузяво, с полем лучше.

Хотя, стоп. Сценарий:
1. Содаём новый документ
2. Пользователь заполняет поля
3. Сохраняет БЕЗ ЗАКРЫТИЯ
4. Пользователь ещё заполняет поля
5. Не хочет сохранять то, что в п.4. Закрывает без сохранения.

Сохранилось то, что не хотелось (п.4)
 
A

Akupaka

Сохранилось то, что не хотелось
конечный результат вычисления значения поля Form единый для всех случаев, поэтому частный случай нельзя отнести к ошибкам :rolleyes:

зы: не универсально, но все же...
зы2: но с полем мне тоже больше нравится ))
 
T

TIA

конечный результат вычисления значения поля Form единый для всех случаев, поэтому частный случай нельзя отнести к ошибкам

Конечным результатом пушечного выстрела по воробьям был один убитый воробей, поэтому частный случай уничтожения соседней деревушки нельзя отнести к ошибкам применённого метода охоты.
Такая вот логика? :rolleyes:

P.S. Двойной сэйв -- тоже очень некачественное решение.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!