• Paranoid - курс по анонимности и безопасности в сети от команды codeby. Защита персональных данных, анонимность в сети интернет, настройка виртуальных машин, безопасная передача данных, анти форензика и еще много всего полезного. Подробнее ...

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

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

nadezdaMP

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

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

Xalet

Well-known member
08.08.2008
410
0
#3
В пост сэйв надо. Если документ только создается, то уидок.документ будет ничто. После первого сохранения он появится. И тогда можно пробовать заменить.
 

nvyush

Lotus team
22.04.2009
2 317
0
#4
В пост сэйв надо. Если документ только создается, то уидок.документ будет ничто. После первого сохранения он появится. И тогда можно пробовать заменить.
В постсэйве 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

#6
гм. а так заработало... :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
Добавлено: тему еще одну открывать не хотелось бы,
вопрос -
есть ли какой-нибудь способ отличить: из дизайнера агент запускается или с клиента-сервера?
 

susinmn

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

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

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

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

nvyush

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

TIA

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

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

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

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#14
Сохранилось то, что не хотелось
конечный результат вычисления значения поля Form единый для всех случаев, поэтому частный случай нельзя отнести к ошибкам :rolleyes:

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

TIA

:-)
Lotus team
15.05.2009
790
3
#15
конечный результат вычисления значения поля Form единый для всех случаев, поэтому частный случай нельзя отнести к ошибкам
Конечным результатом пушечного выстрела по воробьям был один убитый воробей, поэтому частный случай уничтожения соседней деревушки нельзя отнести к ошибкам применённого метода охоты.
Такая вот логика? :rolleyes:

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