<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Форум компьютерной помощи &mdash; Полезные Lotus скрипты.]]></title>
	<link rel="self" href="http://itpmr.ru/extern.php?action=feed&amp;tid=769&amp;type=atom" />
	<updated>2026-03-09T08:26:41Z</updated>
	<generator>PunBB</generator>
	<id>http://itpmr.ru/viewtopic.php?id=769</id>
		<entry>
			<title type="html"><![CDATA[Re: Полезные Lotus скрипты.]]></title>
			<link rel="alternate" href="http://itpmr.ru/viewtopic.php?pid=125036#p125036" />
			<content type="html"><![CDATA[<p>Нужно поле &quot;datereg&quot; типа : Time/Date&nbsp; &nbsp;разделить на два поля&nbsp; отчете - дата и отдельно часы/минуты.<br />Колонка 3 - год/месяц/число<br />Колонка 4 - часы/минуты<br />Вот код:</p><div class="codebox"><pre><code>Dim ndt As NotesDateTime
Set ndt  = New NotesDateTime(docx.datereg(0))    
xlWbk.ActiveSheet.Cells(row, 3)= ndt.DateOnly
xlWbk.ActiveSheet.Cells(row, 4)= Format$(Cdat(ndt.LSLocalTime), &quot;hh:nn&quot;)    </code></pre></div><br /><p>Так же сделано, чтобы у сгенеренного файла эксель при сохранении было имя по умолчанию типа &quot;Тип докумета&quot; + &quot;дата&quot;.</p><div class="codebox"><pre><code>    Dim fname As String
    fname = &quot;ВНУТР_&quot;   &amp; Format(Now,&quot;yyyy_mm_dd_hh&quot;)  &amp; &quot;.xlsx&quot;
    Set xl=CreateObject(&quot;Excel.Application&quot;)
Set xlWbk=xl.Workbooks.Add
...

    xl.Visible=True
    Call xlWbk.SaveAs(fname)</code></pre></div><p>На счет даты есть вариант разбить текстовую строку даты на массив.<br />Но еще проверить с Убоунд чтобы был вообще arr(1) .<br /></p><div class="codebox"><pre><code>arr =     Split( Cstr(docx.datereg(0)), &quot; &quot;)
Print   arr(0)   &quot; - &quot;   arr(1) 
xlWbk.ActiveSheet.Cells(row, 3)=  arr(0)     &#039;Left$(Cstr(docx.datereg(0)), 10)   &#039;02.03.2026   DateOnly
xlWbk.ActiveSheet.Cells(row, 4)=          arr(1)            &#039;Right$(Cstr(docx.datereg(0)), 8)    &#039;12:13:33</code></pre></div>]]></content>
			<author>
				<name><![CDATA[admin]]></name>
				<uri>http://itpmr.ru/profile.php?id=2</uri>
			</author>
			<updated>2026-03-09T08:26:41Z</updated>
			<id>http://itpmr.ru/viewtopic.php?pid=125036#p125036</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Полезные Lotus скрипты.]]></title>
			<link rel="alternate" href="http://itpmr.ru/viewtopic.php?pid=124995#p124995" />
			<content type="html"><![CDATA[<p>Экранирование кавычек в запросе формулы в&nbsp; &nbsp;LotusScript.</p><div class="codebox"><pre><code>masin(i) = Replace(masin(i) ,  {&quot;}, {\&quot;})</code></pre></div><p>В LotusScript при работе с Db.Search и использованием формул необходимо экранировать кавычки правильно, так как строки в LotusScript обрамляются двойными кавычками, а формула также может содержать строки в кавычках.</p><p>пример для запроса formula&nbsp; &nbsp; =&nbsp; {&nbsp; &nbsp; @lowercase(&quot;ПАРКАНСКАЯ ГРУЭС&quot;)}</p><p>&nbsp; &nbsp;@Contains (@lowercase(t2); @lowercase(&quot;\&quot;ПАРКАНСКАЯ ГРУЭС\&quot;&quot;))</p>]]></content>
			<author>
				<name><![CDATA[admin]]></name>
				<uri>http://itpmr.ru/profile.php?id=2</uri>
			</author>
			<updated>2025-06-19T12:27:51Z</updated>
			<id>http://itpmr.ru/viewtopic.php?pid=124995#p124995</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Полезные Lotus скрипты.]]></title>
			<link rel="alternate" href="http://itpmr.ru/viewtopic.php?pid=124985#p124985" />
			<content type="html"><![CDATA[<p>Оказывается одной строкой можно и создать/заменить значение поля и дать ему свойства автора/ридера.</p><p>Dim newDocResp As NotesDocument<br />newDocResp.Replaceitemvalue(&quot;Author&quot;, &quot;*&quot;).Isauthors = True<br />newDocResp.Replaceitemvalue(&quot;Reader&quot;, &quot;*&quot;).Isreaders = True</p>]]></content>
			<author>
				<name><![CDATA[admin]]></name>
				<uri>http://itpmr.ru/profile.php?id=2</uri>
			</author>
			<updated>2024-12-09T07:38:44Z</updated>
			<id>http://itpmr.ru/viewtopic.php?pid=124985#p124985</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Полезные Lotus скрипты.]]></title>
			<link rel="alternate" href="http://itpmr.ru/viewtopic.php?pid=124246#p124246" />
			<content type="html"><![CDATA[<p>Правильная проверка существования поля item и его копирования:</p><div class="codebox"><pre><code>Set item=CurDoc.GetFirstItem( &quot;СОДЕРЖАНИЕ_&quot; )
If Not item Is  Nothing  Then Call docR.CopyItem (item,&quot;СОДЕРЖАНИЕ_&quot;)</code></pre></div><p>Еще вариант<br /></p><div class="codebox"><pre><code>If doc.hasitem(&quot;PSComment&quot;) Then</code></pre></div>]]></content>
			<author>
				<name><![CDATA[admin]]></name>
				<uri>http://itpmr.ru/profile.php?id=2</uri>
			</author>
			<updated>2014-12-04T12:50:44Z</updated>
			<id>http://itpmr.ru/viewtopic.php?pid=124246#p124246</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Полезные Lotus скрипты.]]></title>
			<link rel="alternate" href="http://itpmr.ru/viewtopic.php?pid=124241#p124241" />
			<content type="html"><![CDATA[<p>Код для занесения или добавления в поле Reader имени человека.</p><div class="codebox"><pre><code>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
    &#039;Set item = doc.GetFirstItem(&quot;$UpdatedBy&quot;) &#039;в $UpdatedBy в лотусе ничего нельзя изменять
    Set item = doc.GetFirstItem(&quot;Reader&quot;)    
    Call item.AppendToTextList( &quot;CN=Елена Владимировна /O=inf&quot; )
    
    
    Forall  xxx  In item.Values
        Msgbox xxx
    End Forall
    
    Call doc.Save ( True, False )
    
    Msgbox &quot;Всё ок!&quot;
End Sub</code></pre></div>]]></content>
			<author>
				<name><![CDATA[admin]]></name>
				<uri>http://itpmr.ru/profile.php?id=2</uri>
			</author>
			<updated>2014-11-12T06:14:19Z</updated>
			<id>http://itpmr.ru/viewtopic.php?pid=124241#p124241</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Полезные Lotus скрипты.]]></title>
			<link rel="alternate" href="http://itpmr.ru/viewtopic.php?pid=124233#p124233" />
			<content type="html"><![CDATA[<p>Разблокировать все документы в базе. Настраиваем агенту ночное расписание.</p><div class="codebox"><pre><code>Sub Initialize
    Dim session As New NotesSession
    Dim Okno As NotesDatabase
    Set Okno = session.CurrentDatabase
    
    If Not Okno.Isopen Then
        Exit Sub    &#039; Нет доступа к БД !!!!!!
    End If
    
    Dim Doccount As NotesDocument  &#039;  документ
    
    Dim dcOko As NotesDocumentCollection &#039;коллекция доков базы 
    Set dcOko = Okno.AllDocuments &#039;коллекционируем все документы
    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(&quot;$Writers&quot;)            
            Call Doccount.RemoveItem(&quot;$WritersDate&quot;)
            Call Doccount.Save(True, False, True)
        End If
    Next
End Sub</code></pre></div>]]></content>
			<author>
				<name><![CDATA[admin]]></name>
				<uri>http://itpmr.ru/profile.php?id=2</uri>
			</author>
			<updated>2014-10-21T06:03:39Z</updated>
			<id>http://itpmr.ru/viewtopic.php?pid=124233#p124233</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Полезные Lotus скрипты.]]></title>
			<link rel="alternate" href="http://itpmr.ru/viewtopic.php?pid=124214#p124214" />
			<content type="html"><![CDATA[<p>Получение имени ПК и юзера из винды.</p><div class="codebox"><pre><code>Dim WshShell As Variant
Set WshShell = CreateObject(&quot;WScript.Shell&quot;)
xxx=WshShell.ExpandEnvironmentStrings( &quot;%COMPUTERNAME%&quot; )
yyy=wshShell.ExpandEnvironmentStrings( &quot;%USERNAME%&quot; )
Print xxx &amp; &quot;//&quot; &amp; yyy</code></pre></div>]]></content>
			<author>
				<name><![CDATA[admin]]></name>
				<uri>http://itpmr.ru/profile.php?id=2</uri>
			</author>
			<updated>2014-09-04T11:23:14Z</updated>
			<id>http://itpmr.ru/viewtopic.php?pid=124214#p124214</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Полезные Lotus скрипты.]]></title>
			<link rel="alternate" href="http://itpmr.ru/viewtopic.php?pid=124176#p124176" />
			<content type="html"><![CDATA[<p>Диалоговое окно для сохранения файла на диск:</p><div class="codebox"><pre><code>Sub Click(Source As Button)
    If  Dir$ (&quot;C:\XML&quot;,16) =&quot;&quot;  Then
        Mkdir &quot;C:\XML&quot; 
    End If
    zag$ = &quot;Имя файла&quot;
    Dim workspace As New NotesUIWorkspace
    filenames = workspace.SaveFileDialog(False,&quot;Куда &quot;,,&quot;C:\XML\&quot;,zag$)
End Sub</code></pre></div>]]></content>
			<author>
				<name><![CDATA[admin]]></name>
				<uri>http://itpmr.ru/profile.php?id=2</uri>
			</author>
			<updated>2014-05-23T11:21:06Z</updated>
			<id>http://itpmr.ru/viewtopic.php?pid=124176#p124176</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Полезные Lotus скрипты.]]></title>
			<link rel="alternate" href="http://itpmr.ru/viewtopic.php?pid=124163#p124163" />
			<content type="html"><![CDATA[<p>Логирование изменений содержимого поля после подписи:</p><p>В кнопке подписать:<br /></p><div class="codebox"><pre><code>Call CurDoc.ReplaceItemValue(&quot;Flag_RW&quot;,&quot;1&quot;)</code></pre></div><p>В &quot;подписанном&quot; поле.<br /></p><div class="codebox"><pre><code>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(&quot;СОДЕРЖАНИЕ&quot;)
    If doc.Flag_RW(0)=&quot;1&quot; Then
        
        Dim Name_ As New NotesName(session.UserName)
        UsnameCanon$= Name_.common    
        doc.log_sod =  Arrayappend (doc.log_sod, &quot;Содержание изменил: &quot; &amp; UsnameCanon$ &amp; &quot;. Дата: &quot; &amp; Date$ )        
    End If
    
End Sub</code></pre></div>]]></content>
			<author>
				<name><![CDATA[admin]]></name>
				<uri>http://itpmr.ru/profile.php?id=2</uri>
			</author>
			<updated>2014-05-05T08:09:04Z</updated>
			<id>http://itpmr.ru/viewtopic.php?pid=124163#p124163</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Полезные Lotus скрипты.]]></title>
			<link rel="alternate" href="http://itpmr.ru/viewtopic.php?pid=124147#p124147" />
			<content type="html"><![CDATA[<p>Lotus и удаление пустых элементов массива<br />values - массив с пустыми элементами<br />vals=Fulltrim (values) - будет без пустышек.</p>]]></content>
			<author>
				<name><![CDATA[admin]]></name>
				<uri>http://itpmr.ru/profile.php?id=2</uri>
			</author>
			<updated>2014-04-15T11:00:15Z</updated>
			<id>http://itpmr.ru/viewtopic.php?pid=124147#p124147</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Полезные Lotus скрипты.]]></title>
			<link rel="alternate" href="http://itpmr.ru/viewtopic.php?pid=124136#p124136" />
			<content type="html"><![CDATA[<p>Заполнение истории документа. Новые события вверху rich text поля.</p><p>Вариант 1. Старый.</p><p>&nbsp; &nbsp; </p><div class="codebox"><pre><code>str1  = Cstr(Now) + &quot; нвоый текст, который заносится в историю&quot;
    
    Dim RTItm As NotesRichTextItem
    Set RTItm=CurDoc.getFirstItem(&quot;ИСТОРИЯ&quot;)
    Dim TmpRTItem As NotesRichTextItem  
    
    If CurDoc.HasItem(&quot;TmpRTF&quot;) Then &#039;если  есть временное поле - стерли
        Set TmpRTItem=CurDoc.GetFirstItem(&quot;TmpRTF&quot;)
        Call TmpRTItem.Remove()
    End If
    
    Set TmpRTItem= CurDoc.CreateRichTextItem(&quot;TmpRTF&quot;) &#039; создали поле TmpRTF
    Call TmpRTItem.Appendtext(str1) 
    Call TmpRTItem.Addnewline(1,True)
    Call TmpRTItem.Appendrtitem(RTItm) &#039; добавили поле история    
    
    Call RTItm.Remove()
    
    Set NewRTItem= CurDoc.CreateRichTextItem(&quot;ИСТОРИЯ&quot;)
    Call NewRTItem.Appendrtitem(TmpRTItem)
    Call TmpRTItem.Remove()</code></pre></div><br /><br /><br /><p>Вариант 2</p><div class="codebox"><pre><code>Dim uiworkspace As New NotesUIWorkspace        
    Dim histold As String, str1 As String
    Dim doc As NotesDocument
    Dim uidoc As NotesUIDocument 
    Set uidoc =uiworkspace.CurrentDocument
    Set doc =uiworkspace.CurrentDocument.Document
    doc.какое-то поле=&quot;&quot;
    
    str1  = Cstr(Now) + &quot; текст для истории&quot;+&quot; &quot;&amp;Chr(10)
    
    histold= uidoc.FieldGetText( &quot;ИСТОРИЯ&quot; )
    
    Call uidoc.FieldClear( &quot;ИСТОРИЯ&quot; )
    Call uidoc.FieldAppendText( &quot;ИСТОРИЯ&quot;, str1)
    Call uidoc.FieldAppendText( &quot;ИСТОРИЯ&quot;, histold)
    Call uidoc.Save()</code></pre></div>]]></content>
			<author>
				<name><![CDATA[admin]]></name>
				<uri>http://itpmr.ru/profile.php?id=2</uri>
			</author>
			<updated>2014-03-26T07:37:46Z</updated>
			<id>http://itpmr.ru/viewtopic.php?pid=124136#p124136</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Полезные Lotus скрипты.]]></title>
			<link rel="alternate" href="http://itpmr.ru/viewtopic.php?pid=124107#p124107" />
			<content type="html"><![CDATA[<p>Подсчет, сколько записей в поле NotesItem.<br />В архив не могут слать документ, если документ рассматривают более 1 чела.</p><p>&nbsp; &nbsp; &#039; ----------&nbsp; &nbsp;Рассматривают несколько чел<br />&nbsp; &nbsp; </p><div class="codebox"><pre><code>Dim item As NotesItem
    xx=0
    Set item = CurDoc.GetFirstItem( &quot;РАССМАТРИВАЕТ_ДОКУМЕНТ&quot; )
    Forall v In item.Values
        xx=xx+1 
    End Forall
    If xx&gt;1 Then Messagebox(&quot;Док. рассматривает несколько человек!&quot;) : Exit Sub</code></pre></div>]]></content>
			<author>
				<name><![CDATA[admin]]></name>
				<uri>http://itpmr.ru/profile.php?id=2</uri>
			</author>
			<updated>2014-03-04T12:44:15Z</updated>
			<id>http://itpmr.ru/viewtopic.php?pid=124107#p124107</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Полезные Lotus скрипты.]]></title>
			<link rel="alternate" href="http://itpmr.ru/viewtopic.php?pid=124105#p124105" />
			<content type="html"><![CDATA[<p>При открытии документа только авторам открывать его в режиме редактирования</p><div class="codebox"><pre><code>Sub Postopen(Source As Notesuidocument)
    Dim Session As New NotesSession
    Dim ws As New NotesUIWorkspace
    Dim item As NotesItem    
    user = session.CommonUserName
    Dim doc As NotesDocument
    flag=&quot;1&quot;
    Set doc = ws.currentdocument.Document
    Set item = doc.GetFirstItem( &quot;addauthors&quot; )    
    Forall v In item.Values
        If     user = v Then 
            Print &quot;автор&quot;
            flag=&quot;0&quot;
        End If            
    End Forall
    If flag=&quot;0&quot; Then 
        source.EditMode=True
    End If
End Sub</code></pre></div>]]></content>
			<author>
				<name><![CDATA[admin]]></name>
				<uri>http://itpmr.ru/profile.php?id=2</uri>
			</author>
			<updated>2014-02-28T13:29:22Z</updated>
			<id>http://itpmr.ru/viewtopic.php?pid=124105#p124105</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Полезные Lotus скрипты.]]></title>
			<link rel="alternate" href="http://itpmr.ru/viewtopic.php?pid=124104#p124104" />
			<content type="html"><![CDATA[<p>Переоткрытие читаемого документа, если он был изменен ранее.<br /></p><div class="codebox"><pre><code>Sub Querymodechange
noteID = Source.Document.NoteID
Set doc = db.GetDocumentByID(noteID)
If doc.LastModified &gt; Source.Document.LastModified Then
        Messagebox &quot;документ был изменён. переоткрываем его&quot;    
        Call Source.Close()
        Set uidoc = ws.EditDocument(True, doc, False)
End If</code></pre></div><p>Если юзер открыл документ на чтение&nbsp; и решил перевести его в редактирование - он переоткроет его, если он был изменен.<br />Source.Document - та инстанция, которую видиш ты в текущий момент<br />doc2 - реальное положение дел с этим документом</p>]]></content>
			<author>
				<name><![CDATA[admin]]></name>
				<uri>http://itpmr.ru/profile.php?id=2</uri>
			</author>
			<updated>2014-02-27T07:06:44Z</updated>
			<id>http://itpmr.ru/viewtopic.php?pid=124104#p124104</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Полезные Lotus скрипты.]]></title>
			<link rel="alternate" href="http://itpmr.ru/viewtopic.php?pid=124102#p124102" />
			<content type="html"><![CDATA[<p>Окно с выбором вариантов ответа<br /></p><div class="codebox"><pre><code>Dim values(3) As Variant
values(0) = &quot;Поручение - внутренний&quot;
values(1) = &quot;Поручение - исходящий&quot;
values(2) = &quot;Решение - внутренний&quot;
values(3) = &quot;Решение - исходящий&quot;
response = ws.Prompt (PROMPT_OKCANCELLIST,     &quot;Создать Поручение/Решение&quot;,     &quot;Выберите тип  документа&quot;, _
values(0), values)
If Isempty (response) Then     Messagebox &quot;Отменено&quot;, , &quot;Выбор не сделан&quot; : Exit Sub
If response=&quot;Поручение - внутренний&quot; Then
какое то действие, например doc.form=&quot;внутренний&quot;
End If</code></pre></div>]]></content>
			<author>
				<name><![CDATA[admin]]></name>
				<uri>http://itpmr.ru/profile.php?id=2</uri>
			</author>
			<updated>2014-02-20T09:09:03Z</updated>
			<id>http://itpmr.ru/viewtopic.php?pid=124102#p124102</id>
		</entry>
</feed>
