<?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="https://itpmr.ru/extern.php?action=feed&amp;tid=769&amp;type=atom" />
	<updated>2026-11-05T12:51:20Z</updated>
	<generator>PunBB</generator>
	<id>https://itpmr.ru/viewtopic.php?id=769</id>
		<entry>
			<title type="html"><![CDATA[Re: Полезные Lotus скрипты.]]></title>
			<link rel="alternate" href="https://itpmr.ru/viewtopic.php?pid=125042#p125042" />
			<content type="html"><![CDATA[<p>Выгрузка базы - форм, видов и агентов в ДХЛ (DXL) формат.</p><div class="codebox"><pre><code>Sub Click(Source As Button)
    
    On Error Goto ErrorHandler
    
    Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim nc As NotesNoteCollection
    Dim exporter As NotesDXLExporter
    Dim stream As NotesStream
    
    Dim fileName As String
    Dim msg As String
    
    &#039; Текущая база
    Set db = session.CurrentDatabase
    
    &#039; Папка должна существовать
    fileName = &quot;C:\XML\Adress_design.dxl&quot;
    
    &#039; Создаём коллекцию элементов
    Set nc = db.CreateNoteCollection(False)
    
    &#039; Выбираем только формы, виды и агенты
    nc.SelectForms = True
    nc.SelectViews = True
    nc.SelectAgents = True
    
    
    &#039; Формируем коллекцию
    Call nc.BuildCollection
    
    &#039; Создаём файл
    Set stream = session.CreateStream
    
    If Not stream.Open(fileName, &quot;UTF-8&quot;) Then
        Messagebox &quot;Не удалось создать файл:&quot; &amp; Chr(10) &amp; _
        fileName,, &quot;Ошибка&quot;
        Exit Sub
    End If
    
    Call stream.Truncate
    
    &#039; Экспортируем в DXL
    Set exporter = session.CreateDXLExporter
    
    Call exporter.SetInput(nc)
    Call exporter.SetOutput(stream)
    
    Call exporter.Process
    
    Call stream.Close
    
    msg = &quot;ЭКСПОРТ ЗАВЕРШЁН!&quot; &amp; Chr(10) &amp; Chr(10)
    msg = msg &amp; &quot;База: &quot; &amp; db.FileName &amp; Chr(10)
    msg = msg &amp; &quot;Количество элементов: &quot; &amp; _
    Cstr(nc.Count) &amp; Chr(10) &amp; Chr(10)
    msg = msg &amp; &quot;Файл: &quot; &amp; fileName
    
    If exporter.Log &lt;&gt; &quot;&quot; Then
        msg = msg &amp; Chr(10) &amp; Chr(10) &amp; exporter.Log
    End If
    
    Messagebox msg,, &quot;Экспорт архитектуры&quot;
    
    Exit Sub
    
ErrorHandler:
    
    On Error Resume Next
    Call stream.Close
    
    Messagebox &quot;Ошибка № &quot; &amp; Cstr(Err) &amp; Chr(10) &amp; _
    Error$,, &quot;Экспорт архитектуры&quot;
    
End Sub</code></pre></div>]]></content>
			<author>
				<name><![CDATA[admin]]></name>
				<uri>https://itpmr.ru/profile.php?id=2</uri>
			</author>
			<updated>2026-11-05T12:51:20Z</updated>
			<id>https://itpmr.ru/viewtopic.php?pid=125042#p125042</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Полезные Lotus скрипты.]]></title>
			<link rel="alternate" href="https://itpmr.ru/viewtopic.php?pid=125041#p125041" />
			<content type="html"><![CDATA[<p>Lotus Notes формулу можно сделать универсальной, чтобы не перечислять вручную каждую базу documents2016.nsf, documents2017.nsf и т. д.</p><div class="codebox"><pre><code>@If (database=&quot;promdoc\\documents.nsf&quot;;&quot;Документы&quot;;database=&quot;promdoc\\documents2016.nsf&quot;;&quot;Архив 2016&quot;;database=&quot;promdoc\\documents2017.nsf&quot;;&quot;Архив 2017&quot;;database=&quot;promdoc\\documents2018.nsf&quot;;&quot;Архив 2018&quot;;database=&quot;promdoc\\documents2019.nsf&quot;;&quot;Архив 2019&quot;;database=&quot;promdoc\\documents2020.nsf&quot;;&quot;Архив 2020&quot;;database=&quot;promdoc\\documents2021.nsf&quot;;&quot;Архив 2021&quot;;database=&quot;promdoc\\documents2022.nsf&quot;;&quot;Архив 2022&quot;;database=&quot;promdoc\\documents2023.nsf&quot;;&quot;Архив 2023&quot;;&quot;&quot;)</code></pre></div><p> в лотусе во вью в категаризированной колонке эта альфа-формула, как сделать её универсальной?<br />Ответ прост.</p><div class="codebox"><pre><code>@If(
 @Contains(database; &quot;documents.nsf&quot;);
 &quot;Документы&quot;;
 @Contains(database; &quot;documents&quot;);
 &quot;Архив &quot; + @Middle(database; @Length(database) - 8; 4);
 &quot;&quot;
)</code></pre></div>]]></content>
			<author>
				<name><![CDATA[admin]]></name>
				<uri>https://itpmr.ru/profile.php?id=2</uri>
			</author>
			<updated>2026-10-29T13:05:12Z</updated>
			<id>https://itpmr.ru/viewtopic.php?pid=125041#p125041</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Полезные Lotus скрипты.]]></title>
			<link rel="alternate" href="https://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>https://itpmr.ru/profile.php?id=2</uri>
			</author>
			<updated>2026-03-09T08:26:41Z</updated>
			<id>https://itpmr.ru/viewtopic.php?pid=125036#p125036</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Полезные Lotus скрипты.]]></title>
			<link rel="alternate" href="https://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>https://itpmr.ru/profile.php?id=2</uri>
			</author>
			<updated>2025-06-19T12:27:51Z</updated>
			<id>https://itpmr.ru/viewtopic.php?pid=124995#p124995</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Полезные Lotus скрипты.]]></title>
			<link rel="alternate" href="https://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>https://itpmr.ru/profile.php?id=2</uri>
			</author>
			<updated>2024-12-09T07:38:44Z</updated>
			<id>https://itpmr.ru/viewtopic.php?pid=124985#p124985</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Полезные Lotus скрипты.]]></title>
			<link rel="alternate" href="https://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>https://itpmr.ru/profile.php?id=2</uri>
			</author>
			<updated>2014-12-04T12:50:44Z</updated>
			<id>https://itpmr.ru/viewtopic.php?pid=124246#p124246</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Полезные Lotus скрипты.]]></title>
			<link rel="alternate" href="https://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>https://itpmr.ru/profile.php?id=2</uri>
			</author>
			<updated>2014-11-12T06:14:19Z</updated>
			<id>https://itpmr.ru/viewtopic.php?pid=124241#p124241</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Полезные Lotus скрипты.]]></title>
			<link rel="alternate" href="https://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>https://itpmr.ru/profile.php?id=2</uri>
			</author>
			<updated>2014-10-21T06:03:39Z</updated>
			<id>https://itpmr.ru/viewtopic.php?pid=124233#p124233</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Полезные Lotus скрипты.]]></title>
			<link rel="alternate" href="https://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>https://itpmr.ru/profile.php?id=2</uri>
			</author>
			<updated>2014-09-04T11:23:14Z</updated>
			<id>https://itpmr.ru/viewtopic.php?pid=124214#p124214</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Полезные Lotus скрипты.]]></title>
			<link rel="alternate" href="https://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>https://itpmr.ru/profile.php?id=2</uri>
			</author>
			<updated>2014-05-23T11:21:06Z</updated>
			<id>https://itpmr.ru/viewtopic.php?pid=124176#p124176</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Полезные Lotus скрипты.]]></title>
			<link rel="alternate" href="https://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>https://itpmr.ru/profile.php?id=2</uri>
			</author>
			<updated>2014-05-05T08:09:04Z</updated>
			<id>https://itpmr.ru/viewtopic.php?pid=124163#p124163</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Полезные Lotus скрипты.]]></title>
			<link rel="alternate" href="https://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>https://itpmr.ru/profile.php?id=2</uri>
			</author>
			<updated>2014-04-15T11:00:15Z</updated>
			<id>https://itpmr.ru/viewtopic.php?pid=124147#p124147</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Полезные Lotus скрипты.]]></title>
			<link rel="alternate" href="https://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>https://itpmr.ru/profile.php?id=2</uri>
			</author>
			<updated>2014-03-26T07:37:46Z</updated>
			<id>https://itpmr.ru/viewtopic.php?pid=124136#p124136</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Полезные Lotus скрипты.]]></title>
			<link rel="alternate" href="https://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>https://itpmr.ru/profile.php?id=2</uri>
			</author>
			<updated>2014-03-04T12:44:15Z</updated>
			<id>https://itpmr.ru/viewtopic.php?pid=124107#p124107</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Полезные Lotus скрипты.]]></title>
			<link rel="alternate" href="https://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>https://itpmr.ru/profile.php?id=2</uri>
			</author>
			<updated>2014-02-28T13:29:22Z</updated>
			<id>https://itpmr.ru/viewtopic.php?pid=124105#p124105</id>
		</entry>
</feed>
