Let's say we have one document and it contains couple different areas, for example 1 part of document contains information about salary of employee and another one contains information about family of employee. Of course, fields that contains information about salary have to be hide from all eyes except special role (Finance department). Information about employee's family also has to be hide from all except (HR department). Application should work in Lotus Notes client and in WEB also.
We can't just hide fields using "hide formula", because smart users can use next approach and they can found fields with salary. But it should be private information.
So, I propose next approach, we can create one main document and N response documents (it depends on how many areas you have). Each response document will contain information about special area and also will contain information about Readers, in our case it will be 2 documents - 1 for Salary information + Readers field = "Finance department" and another one for HR department. All others manipulations it is only game with QueryOpen and QuerySave event in Client and Web.
Simple chart :-).
What I did:
1) on QO event I put code that take all data from response documents and put to main document. It is very usefull to use NotesItem.SaveToDisk = false in QO event, because in this case you can forget about removing values in QS event from main document.
2) on QS event I put code which takes values from main document and put data back to response documents.
Probably it is not the best way but it works.
Any new idea would be appreciate ! ;-)
Wednesday, March 12, 2008
Friday, March 07, 2008
Undocumented DOM LotusScript Inventory
Sometimes I look for undocumented methods in LS. So I found the best one, probably, page.
Just remember about these methods, probably will be the time when it be helpful for you.
also you can use these @Formula
@LocationGetInfo([UNID])
@LocationGetInfo([FullName])
@LocationGetInfo([HomeServer])
@LocationGetInfo([NamePreference])
@LocationGetInfo([SametimeServer])
@LocationGetInfo([BookmarksFilename])
@LocationGetInfo([InternetMailAddress])
@AdminDelegateMailFile
@ExpandNameList
@FindFreeResource
@LocationGetInfo
@command [PKCS12ImportCertsToNAB]
- NotesDatabase
+ isNNT : Variant
+ archiveNow( ) : Integer
+ archiveNow( documentCollection=Nothing ) : Integer
+ archiveNow( documentCollection=Nothing, policy=Nothing ) : Integer
+ close() - DEPRECATED, DO NOT USE
+ createNewsGroup(groupName : String, title : Variant, subdirectory : Variant) : Long
+ enabledOptions(arg1 : Integer , arg2 : Integer)
+ getArchivePath( policy : String ) : String
+ getArchivePath( policy : String, pathType=Nothing ) : String
+ getFields(flag : Boolean) : String[ ]
+ retrievePOP3Mail(server : String, port : Integer, username : String, password : String, retainMail : Integer, useSSL : Integer) : Long - NotesDateTime
+ convertToZoneCanonical( zoneSpec ; String )
+ merge( datetime, zoneSpec ) - NotesDocument
+ formDbID : String
+ formDbIDItem : String
+ handle : Long - cf. Notes C++ Programmer's Reference Guide
+ generateMessageID( ) : String
+ getNextItem(arg : Variant) : Variant - DEPRECATED, DO NOT USE
+ moveToFolder( )
+ putInFolderByUNID( )
+ removeFromFolderByUNID( ) - NotesDocumentCollection
+ getNoteIDs( ) : Variant - NotesItem
+ PartialText - NotesOutline
+ getEntry(entryname : String) : NotesOutlineEntry
+ remove( ) : Integer - NotesOutlineEntry
+ onClickText : String - NotesRegistration
+ useAdminProcess
+ registerNewUserWithPolicy( lastName : String, certPW : String, userPw : String, policyServer : String, firstname=Nothing, middle=Nothing, altName=Nothing) - NotesRichTextItem
+ addLinkByIDs( replicaID : String, serverHint : String, viewUNID, notesUNID, comment, hotspotText )
+ appendRTFile( pathname : String )
+ partialText - NotesSession
+ internetDomainName : String
+ internetHostName : String
+ close
+ createXMLReformatter( input, output ) : Variant
+ getNewsGroupPath(arg : String) : String
+ getWin32Domain(server : Variant) : Variant
+ startProfile( outputFilename : String, outputThreshold, recordThreads, recordEntryPoints )
+ stopProfile( )
+ tagProfile( tagString ) - NotesUIDatabase
+ editArchiveSettings( ) As Integer
NotesUIDocument
+ modifiedSinceSaved : Boolean
+ parentViewName : Object
+ windowHandle : String
+ findFreeTimeDialogEX( reqPeopleItems, optPeopleItems, reqRoomsItems, optRoomsItems, reqResourcesItems, optResourcesItems, removedPeopleItems, startDateItem, endDateItem ) As Variant
+ navBarSetPrevNextState( command, benable ) - NotesUIScheduler
+ ignoreUniversalID : String
+ participantTableCopy( sortOrder : Integer ) As Variant
+ refresh( getScheduleData, flags )
+ setParticipantsFromItems( flags )
+ setParticipantsFromTable( participantTable )
+ updateParticipantsFromItem( flags )
+ updateParticipantsFromTable( table, rolesFlags, appFlags )
+ updateParticipantsStatus( participantTable ) - NotesUIWorkspace
+ addBookmark(bookmarkTitle : Variant) : Variant
+ addDatabaseToPortfolio( )
+ Create_DialEntry_Dialog( remoteAccessMethod )
+ create_DialEntry_Info( remoteAccessMethod, nameOfEntry )
+ create_DialEntry_List( remoteAccessMethod, nameOfEntry ) - NotesView
+ HeaderLines - not really undocumented but mal-documented since R5
+ createViewFromTemplate( newName : String ) : Long
+ getEntryByID( NoteID : String ) : NotesViewEntry - WebBrowser
exposed within OLE Automation classes from R5 onwards..
Just remember about these methods, probably will be the time when it be helpful for you.
also you can use these @Formula
@LocationGetInfo([UNID])
@LocationGetInfo([FullName])
@LocationGetInfo([HomeServer])
@LocationGetInfo([NamePreference])
@LocationGetInfo([SametimeServer])
@LocationGetInfo([BookmarksFilename])
@LocationGetInfo([InternetMailAddress])
@AdminDelegateMailFile
@ExpandNameList
@FindFreeResource
@LocationGetInfo
@command [PKCS12ImportCertsToNAB]
Thursday, February 28, 2008
how we can close window in IE without confirmation?
solution is very simple, just keep in mind it, probably it will help you in future.
for IE.7 and for IE.6
input type="button" value="close" onClick="window.opener='_parent'; window.close();"
for IE.7 and for IE.6
input type="button" value="close" onClick="window.opener='_parent'; window.close();"
Tuesday, February 19, 2008
?searchview and ?ReadViewEntries
I had a task where I should receive data from view as XML(
Actually I waned to do something like this:
And as I informed it is impossible in 5-6-7 versions. Guys on IBM's forum told me that it would be added in future version (probably R8, but who know:] ) and will be like this one ?SearchViewEntries
don't forher about it.
myView?ReadViewEntries
) or JSON (myView?ReadViewEntries&outputformat=json
). All was well, except one problem which I didn't solve. It was case when I used ?SearchView (myView?SearchView&query) to show data. Actually I waned to do something like this:
myView?
SearchView+ReadViewEntries&outputformat=json
&queryAnd as I informed it is impossible in 5-6-7 versions. Guys on IBM's forum told me that it would be added in future version (probably R8, but who know:] ) and will be like this one ?SearchViewEntries
don't forher about it.
Thursday, February 07, 2008
Decimal Separator in formula - Solution
definetly it is a simple feature, but I like such approaches, I found this one on IBM:
@Middle(@Text(@Pi); 1; 1)
but probably this one will be more easy for our brain (but it depends):
@Middle(@Text(1/10); 1; 1)
Actually the problem could be when we want to show value which are stored in 2 (or more) different fields, put them together in 1 place and split "default decimal symbol".
default decimal symbol - could be changed in Control Panel->Regional Options->Numbers tab.
@Middle(@Text(@Pi); 1; 1)
but probably this one will be more easy for our brain (but it depends):
@Middle(@Text(1/10); 1; 1)
Actually the problem could be when we want to show value which are stored in 2 (or more) different fields, put them together in 1 place and split "default decimal symbol".
default decimal symbol - could be changed in Control Panel->Regional Options->Numbers tab.
Subscribe to:
Posts
(
Atom
)