Поймать измениние полей ( Edit/comput/cfd/cwc )

morpheus

скриптописец
07.08.2006
3 915
1
#1
Доброе время суток
вопрос как отловить что значение поля было изменено ( в УИ пользователя )

идея на event Onchanged поля записывать глоб. переменную чтонить и при сохранении дока протоколировать всесь этот хлам.

а как же быть с компутедными/cfd/cwc полями? Сам нотес ведь както отлавливает что в док. были изменены хоть какието поля и просить сохраниться! как это можно отловить?

Вариант - раз просить сохранить - не совсем подходит ведь юзвер и так может нажать на кнопу сохранения. важно узнать какие поля были изменены
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#2
Для: Morpheus
В PostOpen создаем специальный документ doc1 с полями из текущего документа.
В PostSave создаем специальный документ doc2 с полями из текущего документа.
Там же сравниваем. Создаем лог. doc1 и doc2 удаляем. :)
 

morpheus

скриптописец
07.08.2006
3 915
1
#3
Для: Medevic
ДУмал, біло дело - но вот не зочеться плодить доки, хотелось бы както отловить именно ивентами или может есть скрытые поля ... ун сам же нотес гад както отлавливает
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#4
Для: Morpheus
Посмотрел как у меня сделано. :)
Сохранять-то доки (doc1 и doc2) необязательно. Они в памяти. Значит и удалять не нужно. Ничего не плодится.
 

Omh

Lotus team
04.07.2007
2 210
1
#5
Ну можно не делать лишних доков: мне самому этот подход не очень нравиться.
У меня это дело реализовано библиотекой с типом и процедурами, обрабатывающими этот тип.
В initialize дефайню, какие поля надо отслеживать.
На PostOpen зачитываю, в нужный момент проверяю соответсвие зачитанных полей с реальными данными.

Это немного не то, что тебе надо (т.к. отслеживаются не все поля, а только предефайненные), но идея вполне понятна :)

Я так понимаю, тебе хочется воспользоваться чем-то более низкоуровневым :)
 

morpheus

скриптописец
07.08.2006
3 915
1
#6
<!--QuoteBegin-Omh+19:09:2007, 10:19 -->
<span class="vbquote">(Omh @ 19:09:2007, 10:19 )</span><!--QuoteEBegin-->Я так понимаю, тебе хочется воспользоваться чем-то более низкоуровневым
[snapback]78770" rel="nofollow" target="_blank[/snapback]​
[/quote]
именноо.. хочу схватить именно сам факт изменения! тот каканный ФЛАГ
 

medin84

Well-known member
27.06.2007
106
0
#7
<!--QuoteBegin-Morpheus+19:09:2007, 12:59 -->
<span class="vbquote">(Morpheus @ 19:09:2007, 12:59 )</span><!--QuoteEBegin-->важно узнать какие поля были изменены
[snapback]78763" rel="nofollow" target="_blank[/snapback]​
[/quote]
Я не профи.
Но все же. Я както делал через notes.ini
В PostOpen записывал значения всех полей, потом при выходе сравнивал значения.
 
30.05.2006
1 345
11
#8
В background-е (т.е. ПОСЛЕ сохранения в базу) измененные поля можно отловить по свойству LastModified
 

morpheus

скриптописец
07.08.2006
3 915
1
#9
Для: Constantin A Chervonenko
знаю, но мне надо в УИ до сохранения желательно, я так понимаю это никак беюз сравнения дока с открытия и до сохранения
 

azat20

Well-known member
22.07.2008
244
0
#11
Ну можно не делать лишних доков: мне самому этот подход не очень нравиться.
У меня это дело реализовано библиотекой с типом и процедурами, обрабатывающими этот тип.
В initialize дефайню, какие поля надо отслеживать.
На PostOpen зачитываю, в нужный момент проверяю соответсвие зачитанных полей с реальными данными.

Это немного не то, что тебе надо (т.к. отслеживаются не все поля, а только предефайненные), но идея вполне понятна
не могли бы написать что написать в initialize и какая проверка на postopen
 

Omh

Lotus team
04.07.2007
2 210
1
#12
У меня там тип состоящий из 2-х мемберов: ItemName и ItemText + процедуры обрабатывающие эти типы.
А initilaize я декларю массив моего типа и заполняю всем элементам мембер ItemName (что бы знать, какие айтемы отслеживать)
На посопене заполняю массив.

Сейчас вижу, что это дело проще сдеать list'ом, где tag - имя айтема, а значение, соответсвенно, значение айтема.
Видимо, писал библиотечку, когда ещё не научился готовить листы :)
 

azat20

Well-known member
22.07.2008
244
0
#14
list... ни разу не сталкивался!напишите,пожалуйста,что это такое и с чем его едят