Re: Полезные Lotus скрипты.
Lotus и удаление пустых элементов массива
values - массив с пустыми элементами
vals=Fulltrim (values) - будет без пустышек.
Компьютерный форум для чайников и IT специалистов. Советы и рекомендации.
Форум компьютерной помощи → Lotus/Domino → Полезные Lotus скрипты.
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Lotus и удаление пустых элементов массива
values - массив с пустыми элементами
vals=Fulltrim (values) - будет без пустышек.
Логирование изменений содержимого поля после подписи:
В кнопке подписать:
Call CurDoc.ReplaceItemValue("Flag_RW","1")
В "подписанном" поле.
Sub Onchange(Source As Field)
Dim session As New NotesSession
Dim uiworkspace As New NotesUIWorkspace
Dim doc As NotesDocument
Dim item As NotesItem
Set doc = uiworkspace.CurrentDocument.Document
Set item = doc.GetFirstItem("СОДЕРЖАНИЕ")
If doc.Flag_RW(0)="1" Then
Dim Name_ As New NotesName(session.UserName)
UsnameCanon$= Name_.common
doc.log_sod = Arrayappend (doc.log_sod, "Содержание изменил: " & UsnameCanon$ & ". Дата: " & Date$ )
End If
End Sub
Диалоговое окно для сохранения файла на диск:
Sub Click(Source As Button)
If Dir$ ("C:\XML",16) ="" Then
Mkdir "C:\XML"
End If
zag$ = "Имя файла"
Dim workspace As New NotesUIWorkspace
filenames = workspace.SaveFileDialog(False,"Куда ",,"C:\XML\",zag$)
End Sub
Получение имени ПК и юзера из винды.
Dim WshShell As Variant
Set WshShell = CreateObject("WScript.Shell")
xxx=WshShell.ExpandEnvironmentStrings( "%COMPUTERNAME%" )
yyy=wshShell.ExpandEnvironmentStrings( "%USERNAME%" )
Print xxx & "//" & yyy
Разблокировать все документы в базе. Настраиваем агенту ночное расписание.
Sub Initialize
Dim session As New NotesSession
Dim Okno As NotesDatabase
Set Okno = session.CurrentDatabase
If Not Okno.Isopen Then
Exit Sub ' Нет доступа к БД !!!!!!
End If
Dim Doccount As NotesDocument ' документ
Dim dcOko As NotesDocumentCollection 'коллекция доков базы
Set dcOko = Okno.AllDocuments 'коллекционируем все документы
If (dcOko.Count =0) Then Exit Sub
For m=1 To dcOko.Count
Set Doccount = dcOko.GetNthDocument(m)
If (Doccount.IsValid ) Then
Call Doccount.RemoveItem("$Writers")
Call Doccount.RemoveItem("$WritersDate")
Call Doccount.Save(True, False, True)
End If
Next
End Sub
Код для занесения или добавления в поле Reader имени человека.
Sub Click(Source As Button)
Dim session As New NotesSession
Dim uiworkspace As New NotesUIWorkspace
Dim doc As NotesDocument
Set doc = uiworkspace.CurrentDocument.Document
Dim item As NotesItem
'Set item = doc.GetFirstItem("$UpdatedBy") 'в $UpdatedBy в лотусе ничего нельзя изменять
Set item = doc.GetFirstItem("Reader")
Call item.AppendToTextList( "CN=Елена Владимировна /O=inf" )
Forall xxx In item.Values
Msgbox xxx
End Forall
Call doc.Save ( True, False )
Msgbox "Всё ок!"
End Sub
Правильная проверка существования поля item и его копирования:
Set item=CurDoc.GetFirstItem( "СОДЕРЖАНИЕ_" )
If Not item Is Nothing Then Call docR.CopyItem (item,"СОДЕРЖАНИЕ_")
Еще вариант
If doc.hasitem("PSComment") Then
Оказывается одной строкой можно и создать/заменить значение поля и дать ему свойства автора/ридера.
Dim newDocResp As NotesDocument
newDocResp.Replaceitemvalue("Author", "*").Isauthors = True
newDocResp.Replaceitemvalue("Reader", "*").Isreaders = True
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форум компьютерной помощи → Lotus/Domino → Полезные Lotus скрипты.
Форум работает на PunBB, при поддержке Informer Technologies, Inc