<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Форум компьютерной помощи &mdash; Lotus/Domino]]></title>
	<link rel="self" href="https://itpmr.ru/extern.php?action=feed&amp;fid=28&amp;type=atom" />
	<updated>2026-06-11T06:11:26Z</updated>
	<generator>PunBB</generator>
	<id>https://itpmr.ru/index.php</id>
		<entry>
			<title type="html"><![CDATA[LotusScript (Notes) - свойство IsSummary.]]></title>
			<link rel="alternate" href="https://itpmr.ru/viewtopic.php?id=1177&amp;action=new" />
			<summary type="html"><![CDATA[<p>В LotusScript / Notes свойство IsSummary определяет, будет ли поле записано в summary-данные документа.</p><p>IsSummary&nbsp; = True (по умолчанию). Поле попадает в summary-часть документа.</p><p>Плюсы:<br />Можно отображать в представлениях (Views).<br />Можно сортировать и отбирать документы по этому полю.</p><p>Поле участвует в формулах вида:</p><p>SELECT MyField=&quot;Test&quot;</p><p>Поле доступно быстрее при поиске.</p><br /><p>Минусы:<br />Summary-данные ограничены по размеру (примерно до 32 КБ на документ для старых форматов).<br />Большие поля замедляют работу базы.<br />IsSummary = False</p><p>Поле хранится только в теле документа.</p><p>Плюсы:<br />Можно хранить большие объёмы текста:логи,JSON,XML,HTML,большие списки значений,вложенные данные.</p><p>Минусы:<br />Поле нельзя использовать в колонках представлений.<br />Нельзя сортировать и выбирать документы по этому полю.<br />Формулы вида SELECT его не видят.</p>]]></summary>
			<author>
				<name><![CDATA[admin]]></name>
				<uri>https://itpmr.ru/profile.php?id=2</uri>
			</author>
			<updated>2026-06-11T06:11:26Z</updated>
			<id>https://itpmr.ru/viewtopic.php?id=1177&amp;action=new</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Открытие баз Domino в браузере.]]></title>
			<link rel="alternate" href="https://itpmr.ru/viewtopic.php?id=1176&amp;action=new" />
			<summary type="html"><![CDATA[<p>Как сделать в домино, чтобы запрашивался логин/пароль или ид файл при открытии сервера с браузера?<br />1. Configuration → Servers → All Server Documents. Internet Protocols → HTTP.<br />Allow HTTP clients to browse databases: - ДА.</p><p>2. Вкладка Domino&nbsp; Web Engine, раздел HTTP Sessions,&nbsp; поле&nbsp; Session authentication: Single Server.</p><p>3. Вкладка&nbsp; Security - Security Settings.<br />Allow anonymous Notes connections: - НЕТ.<br />Check passwords on Notes IDs: - ДА.</p><p>4. В профиле юзера указываем Internet password.</p><p>5. В свойствах базы данных у Anonymous - нет доступа.<br />В дополнительных свойствах базы указываем доступ по интернету - например эдитор.</p>]]></summary>
			<author>
				<name><![CDATA[admin]]></name>
				<uri>https://itpmr.ru/profile.php?id=2</uri>
			</author>
			<updated>2026-02-04T11:24:53Z</updated>
			<id>https://itpmr.ru/viewtopic.php?id=1176&amp;action=new</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Работа со строками в LotusScript. Извлечение подстрок.]]></title>
			<link rel="alternate" href="https://itpmr.ru/viewtopic.php?id=1175&amp;action=new" />
			<summary type="html"><![CDATA[<p>Возврат количества символов.<br /></p><div class="codebox"><pre><code>Left (string, n) – первые n символов строки.


Right (string, n) – последние n символов.


Instr ([start,] string, substring) – ищет substring в строке, возвращает позицию.
s = &quot;Hello LotusScript&quot;
pos = Instr(s, &quot;Lotus&quot;)   &#039; ищем &quot;Lotus&quot;
Messagebox pos   &#039; результат: 7



Mid (string, start [, length]) – подстрока &quot;string&quot; начиная с позиции start, длиной length.
Пример.
Print Mid$(&quot;InterTrust&quot;, 1,5) &#039; Выводит Inter
Print Mid$(&quot;InterTrust&quot;, 6) &#039; Выводит Trust</code></pre></div><p>Еще есть Третий параметр &quot;Количество вхождений, которые необходимо сопоставить&quot;.<br />ПО умолчанию - 1. Первое вхождение.</p>]]></summary>
			<author>
				<name><![CDATA[admin]]></name>
				<uri>https://itpmr.ru/profile.php?id=2</uri>
			</author>
			<updated>2025-10-01T06:26:37Z</updated>
			<id>https://itpmr.ru/viewtopic.php?id=1175&amp;action=new</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Последовательность событий NotesSAXParser]]></title>
			<link rel="alternate" href="https://itpmr.ru/viewtopic.php?id=1174&amp;action=new" />
			<summary type="html"><![CDATA[<p>У NotesSAXParser в LotusScript есть стандартный набор событий, которые он вызывает при последовательном разборе XML. <br />Ты сам задаёшь имена функций-обработчиков, а парсер их вызывает.</p><br /><p>StartDocument<br />Вызывается один раз в начале разбора.<br />Обычно тут инициализируют глобальные переменные, буферы.</p><br /><p>StartElement(ByVal name As String, ByVal attrs As Variant)<br />Вызывается каждый раз при открытии нового XML-элемента (&lt;tag ...&gt;).<br />name – имя тега.<br />attrs – массив атрибутов вида (&quot;attr1&quot;, &quot;value1&quot;, &quot;attr2&quot;, &quot;value2&quot;, …).</p><br /><p>Characters(ByVal chars As String) <br />Вызывается для текстового содержимого между тегами.<br />Может вызываться несколько раз подряд для одного элемента (парсер дробит данные).</p><br /><p>EndElement(ByVal name As String)<br />Вызывается при закрытии элемента (&lt;/tag&gt;).</p><br /><p>EndDocument<br />Вызывается один раз в конце разбора.<br />Обычно здесь можно обработать накопленные данные.</p>]]></summary>
			<author>
				<name><![CDATA[admin]]></name>
				<uri>https://itpmr.ru/profile.php?id=2</uri>
			</author>
			<updated>2025-09-30T10:37:14Z</updated>
			<id>https://itpmr.ru/viewtopic.php?id=1174&amp;action=new</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[DOMParser не может распарсить результат NotesDXLExporter.]]></title>
			<link rel="alternate" href="https://itpmr.ru/viewtopic.php?id=1173&amp;action=new" />
			<summary type="html"><![CDATA[<p>Я не знал такой нюанс.<br />Что результат NotesDXLExporter (DXL) не всегда подходит для загрузки в NotesDOMParser напрямую.<br />Если DXL содержит гигантские вложения в &lt;rawitemdata&gt;/&lt;filedata&gt;, DOMParser может падать.<br />Остается NotesSAXParser использовать вместо NotesDOMParser.<br /></p><div class="codebox"><pre><code>    &#039; ---------------- DXL: экспортим, ----------------
    Dim exporter As NotesDXLExporter
    Dim importer As NotesDXLImporter
    Dim dxl As String
    
    Set exporter = session.CreateDXLExporter()
    exporter.RichTextOption=DXL_RICHTEXTOPTION_DXL
    exporter.OmitRichtextAttachments=1
    
    dxl = exporter.Export(docR) &#039; получаем DXL как строку
        &#039; Msgbox dxl
    Call streamIn.open (&quot;C:\XML\DXL.xml&quot;)       &#039;   СОЗДАЛИ ФАЙЛ DXL.xml
    Call streamIn.Truncate()
    streamIn.WriteText (dxl)
    
        &#039; ================== DOMParser  ==================
    
    Dim domParser As NotesDOMParser
    Dim docNode As NotesDOMDocumentNode
    Dim nodelist As NotesDOMNodeList
    Dim itemNode As NotesDOMElementNode
    Dim rawNode As NotesDOMElementNode
    Dim rawData As String
    Dim i As Long
    Dim bodyCount As Integer
    Dim children As NotesDOMNode
    Print &quot;1111111111111111111111111111&quot;
    
    Set domParser=session.CreateDOMParser(streamIn) 
    Print &quot;222222222222222222222&quot;
    domParser.Process
    Print &quot;domParser.Process&quot;
    
    Set docNode = domParser.Document
    Call streamIn.Close
    Print &quot;docNode&quot;</code></pre></div>]]></summary>
			<author>
				<name><![CDATA[admin]]></name>
				<uri>https://itpmr.ru/profile.php?id=2</uri>
			</author>
			<updated>2025-09-25T12:37:46Z</updated>
			<id>https://itpmr.ru/viewtopic.php?id=1173&amp;action=new</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Работа с MIME в Lotus]]></title>
			<link rel="alternate" href="https://itpmr.ru/viewtopic.php?id=1172&amp;action=new" />
			<summary type="html"><![CDATA[<p>Есть у&nbsp; меня кнопка для переименования вложений, которая дергает мою функцию GetEmbedObject - в которой я хочу переименовать вложение с помощью NotesMIMEEntity.</p><div class="codebox"><pre><code>Sub Click(Source As Button)     &#039;  Через МИМЕ - не пашет
    On Error Goto ErrH
    Dim session As New NotesSession, ws As New NotesUIWorkspace, db As NotesDatabase, sview As NotesView, dc As NotesDocumentCollection
    Dim uidoc As NotesUIDocument, doc As NotesDocument, templdoc As NotesDocument, DocTemp As NotesDocument
    Dim picklist As Variant, mes As String
    Dim rtitem As NotesRichTextItem
    Dim Name_Stncl_List()  &#039; все имена вложений
    
    
    
    Set doc = ws.CurrentDocument.Document
    Set uidoc=ws.CurrentDocument
    Call uidoc.save
    
    Set rtitem = doc.GetFirstItem(&quot;attach&quot;)
    
    Dim xxxx As  Integer
    i=0
    If ( rtitem.Type = RICHTEXT ) Then 
        If Not Isempty(rtitem.EmbeddedObjects) Then  
            Forall obj In rtitem.EmbeddedObjects
                If obj.Type = EMBED_ATTACHMENT Then   &#039; шаг 1 имена вложений в массив
                    If obj.FileSize=0 Then
                        xxxx =     Messagebox     ({&quot;Приложение:  } &amp; obj.Source &amp; { имеет размер 0 байт.} &amp; Chr(13) &amp; Chr(13)   &amp; {Удалить?&quot;}, 1 , &quot;Удаление нулевого вложения.&quot; ) 
                        If xxxx = 1 Then
                            doc.history= Cstr(Now)   + &quot; &quot;+ session.CommonUserName + &quot; удалено приложение размером 0 байт (&quot;  + obj.Source + &quot;) &quot;   &amp;Chr(13) &amp; &quot; &quot;&amp;Chr(13) &amp;  doc.history(0)
                            Call  obj.Remove
                            doc.ReplaceItemValue({SaveOptions},{0}).SaveToDisk=False
                            Call doc.save (True,False)
                            Call uidoc.Close
                            Call ws.EditDocument(True, doc)  &#039;  False - чтение
                            Exit Sub
                        End If
                        
                    Else
                        Redim Preserve Name_Stncl_List(i)        
                        Name_Stncl_List(i)=    obj.Source    &amp;  {|}&amp;   obj.Name &#039;    в Name_Stncl_List вносим имена вложений (Source) и   альясы (Name)
                        
                        i=i+1
                    End If
                End If                
            End Forall
        End If
    End If        
    
    If i&gt;0 Then        &#039;есть  хоть одно вложение в поле атач
        Set DocTemp = doc.ParentDatabase.CreateDocument
        DocTemp.ReplaceItemValue  &quot;Name_ListAttach&quot;, Name_Stncl_List   &#039; скрытое поле Name_ListAttach на диалог формне с  Source   |  Name
        
        If Not    ws.DialogBox(&quot;ChooseDlg&quot;,True,True,False,False,False,False,&quot;Переименовать &quot;,doctemp, True) Then Exit Sub
        
        nameobj2 =  doctemp.ListAttach(0)
        Print &quot;---&quot;
        Print nameobj2         &#039;  псевдоним Name
    End If
    
    datapatch$ = &quot;C:\XML\&quot;
    If  Dir$ (datapatch$ ,16 )=&quot;&quot; Then 
        Mkdir datapatch$
    End If
    
    i=1 
    Forall obj In rtitem.EmbeddedObjects
        If obj.Name = nameobj2  Then   &#039; nameobj2 - ямя выбранного вложения (псевдоним)
            Dim object3 As NotesEmbeddedObject
            Set object3 =     rtitem.GetEmbeddedObject(nameobj2)
            Print &quot;object3.Source &quot; object3.Source
            new_nameobj=Trim(Inputbox$(&quot;Введите новое имя приложения &quot;  &amp; i ,&quot;Ввод названия приложения&quot;,Strleftback(object3.Source,&quot;.&quot;)   ))       &#039;  строка слева от первой точки ( без расширения)
            If new_nameobj=&quot;&quot; Then Exit Sub
            
            new_nameobj = new_nameobj &amp; &quot;.&quot; &amp; Strrightback (object3.Source,&quot;.&quot;)    &#039;   имя + расширение файла
            
            If new_nameobj&lt;&gt;nameobj2 Then   &#039;  надо переименовать
                Call obj.ExtractFile( datapatch$ &amp; nameobj2) 
                Name datapatch$ &amp; nameobj2   As  datapatch$ &amp; new_nameobj   &#039;  переименовать файл nameobj на диске в new_nameobj
                
                &#039;Call rtitem.EmbedObject ( EMBED_ATTACHMENT, &quot;&quot;, datapatch$ &amp; new_nameobj)    СЛЕТАЕТ ИКОНКА
                Call    GetEmbedObject (&quot;attach&quot;,   datapatch$ &amp; new_nameobj, doc )
                
            &#039;    Msgbox object.Name 
            &#039;    Call  object.Remove
                Kill  datapatch$ &amp; new_nameobj
            End If
            
        End If
        i=i+1 
    End Forall
    
    Call doc.ComputeWithForm(False, False)
    
    Call    doc.Save(1,0)
    Call uidoc.save
    Print &quot;11.&quot;
&#039;    Set rtitem = doc.GetFirstItem(&quot;attach&quot;)
&#039;    Forall obj In rtitem.EmbeddedObjects
&#039;        Print  object.Source
&#039;        For i = 1 To Len(object.Source)
&#039;            ch = Mid$(object3.Source, i, 1)
&#039;            Print &quot;Символ=&quot; &amp; ch &amp; &quot;,  Код(Asc)=&quot; &amp; Asc(ch)
&#039;        Next    
&#039;    End Forall
    
    
    Print &quot;Сохранили.&quot;
&#039;    doc.history= Cstr(Now)      + &quot; &quot;+  session.CommonUserName + &quot; переименовано  приложение (&quot;  + nameobj  + &quot;) &quot;   &amp;Chr(13) &amp; &quot; &quot;&amp;Chr(13) &amp;  doc.history(0)
    
&#039;    doc.ReplaceItemValue({SaveOptions},{0}).SaveToDisk=False
&#039;    Call doc.save (True,False)
&#039;    Call uidoc.Close
&#039;    Call ws.EditDocument(True, doc)  &#039;  False - чтение
    Exit Sub
ErrH:
    Print &quot;Ошибка &quot; &amp; Error(Err) &amp; &quot; в строке &quot; &amp; Erl    
    Exit Sub
End Sub</code></pre></div>]]></summary>
			<author>
				<name><![CDATA[admin]]></name>
				<uri>https://itpmr.ru/profile.php?id=2</uri>
			</author>
			<updated>2025-09-18T12:07:09Z</updated>
			<id>https://itpmr.ru/viewtopic.php?id=1172&amp;action=new</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Заполнение инициалов ФИО на основе фамилии на языке формул (@ Formula)]]></title>
			<link rel="alternate" href="https://itpmr.ru/viewtopic.php?id=1171&amp;action=new" />
			<summary type="html"><![CDATA[<p>Была довольно тривиальная задача.<br />Есть на форме поле &quot;FIO&quot; - в которое вводиться &quot;Фамилия Имя Отчество/организация&quot; , организации может не быть.<br />и нужно в поля:<br />&quot;notesname&quot;&nbsp; автоматически ввести - &quot;Фамилия Имя Отчество&quot;,<br />&quot;FIO_1&quot; автоматически ввести -&quot;И.О. Фамилия&quot;.</p><p>я добавил в&nbsp; &quot;FIO&quot; на событие Input Translation (инпут трансляция) следующий код - это с отладочной инфой:</p><div class="codebox"><pre><code>x:=@Explode(@ProperCase(@Trim(@ThisValue)); &quot;/&quot;);
@Prompt([OK];&quot;x[1]&quot;;x[1] );
FIELD notesname:=x[1];
@Prompt([OK];&quot;@Elements x[1] &quot;; @Text(@Elements(  @Explode(@Trim(x[1])))  ) );

@If(
@Elements(  @Explode(@Trim(x[1]))  ) &gt;1;  

@do(
y:=@Explode(@Trim(x[1]); &quot; &quot;);
@Prompt([OK];&quot;y&quot;;@Implode(y) );
f:=y[1]; i:=y[2]; o:=y[3];
FIELD  FIO_1  := @Left(i;1) + &quot;.&quot; + @Left(o;1)  + &quot;.&quot; + f);
@ThisValue
);

x[1]</code></pre></div>]]></summary>
			<author>
				<name><![CDATA[admin]]></name>
				<uri>https://itpmr.ru/profile.php?id=2</uri>
			</author>
			<updated>2025-08-20T07:45:54Z</updated>
			<id>https://itpmr.ru/viewtopic.php?id=1171&amp;action=new</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Программное прикрепление файла с иконкой в рич поле на LotusScript.]]></title>
			<link rel="alternate" href="https://itpmr.ru/viewtopic.php?id=1170&amp;action=new" />
			<summary type="html"><![CDATA[<p>Есть известный глюк лотуса, при прикреплении файла в лотус-документ пропадает окинка у файла.<br />Call rtitem.EmbedObject ( EMBED_ATTACHMENT, &quot;&quot;, путь и имя файла C:\XML\документ.doc)</p><br /><p>Хочу програмно на лотус-скрипте (LotusScript) прикреплять в поле файлы, но чтобы при этом не исчезала иконка.</p><p>Для этого решил попробовать использовать класс NotesMIMEEntity (Multipurpose Internet Mail Extensions - многоцелевое расширение интерне почты)</p><br /><p>MIME - это API-объект, который позволяет читать, изменять, создавать и удалять MIME-содержимое внутри письма или любого документа, где поле хранится в MIME-формате.</p><p>doc.CreateMIMEEntity(&quot;Body&quot;) — создаёт MIME-представление в поле Body вместо RichTextItem.<br />Заголовки (Content-Type, Content-Disposition, Content-Transfer-Encoding) задаются вручную.</p><br /><p>multipart/mixed&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ← Корневой MIME-узел (письмо целиком)<br />│<br />├─ multipart/alternative&nbsp; &nbsp; &nbsp;← Варианты отображения тела письма<br />│&nbsp; ├─ text/plain&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ← Версия письма в чистом тексте (на случай старых клиентов)<br />│&nbsp; └─ text/html&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;← HTML-версия письма (ссылки на картинки через CID)<br />│<br />├─ multipart/related&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ← Блок HTML + встроенные картинки<br />│&nbsp; ├─ text/html&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;← HTML-код письма<br />│&nbsp; ├─ image/png (Content-ID: &lt;img1&gt;) ← Встроенная картинка<br />│&nbsp; └─ image/jpeg (Content-ID: &lt;img2&gt;)← Ещё картинка<br />│<br />└─ application/pdf&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ← Обычное вложение (файл.pdf)</p><br /><p>Каждый блок MIME (multipart/…, text/html, application/pdf) — это отдельный объект NotesMIMEEntity.<br />У каждого есть заголовки (NotesMIMEHeader) и тело (данные в NotesStream).<br />Чтобы пройти по всей структуре, используют:<br />.GetFirstChildEntity — первый &quot;вложенный&quot; MIME-блок<br />.GetNextSiblingEntity — соседний MIME-блок<br />.GetParentEntity — родительский блок.</p><br /><p>Хочу вложить файл в поле attach через MIMEEntity:</p><p>Примерный код, кнопка test1.</p><div class="codebox"><pre><code> 

Sub Click(Source As Button)
    Sub Click(Source As Button)
    On Error Goto ErrH
    
    Dim ses As New NotesSession, ws As New NotesUIWorkspace
    Dim db As NotesDatabase
    Dim doc As NotesDocument
    Dim uidoc As NotesUIDocument
    
    ses.ConvertMIME = False
    Set db = ses.Currentdatabase
    Set doc = ws.CurrentDocument.Document
    Set uidoc=ws.CurrentDocument
    
    Dim body As NotesMIMEEntity, header As NotesMIMEHeader ,  child As NotesMIMEEntity  &#039;  body  child  неисп пока
    
    Dim mime As NotesMIMEEntity
    Set mime = doc.CreateMIMEEntity(&quot;attach&quot;)
    
    Set header = mime.CreateHeader(&quot;Content-Type&quot;)    &#039;   создали хедер штмл
    Call header.SetHeaderVal(&quot;application/vnd.ms-excel&quot;)
    Call header.SetHeaderValAndParams({multipart/alternative;charset=&quot;UTF-8&quot;})
    
&#039; Открываем файл
    Dim Stream As NotesStream
    Set Stream = ses.Createstream()
    Call Stream.Open(&quot;С:/Temp/excel.xlsx&quot;, &quot;UTF-8&quot;) 
    
&#039; Записываем содержимое в MIMEEntity
    Call mime.SetContentFromBytes(Stream, &quot;application/vnd.ms-excel&quot;, ENC_BASE64)
    
 &#039; Сохраняем документ
    Call doc.Save(True, False)
    
    ses.ConvertMIME = True
    Call Stream.Close()
    
    Call uidoc.Close
    Call ws.EditDocument(True, doc)  &#039;  False - чтение
    
    Exit Sub
ErrH:
    Print &quot;Ошибка &quot; &amp; Error(Err) &amp; &quot; в строке &quot; &amp; Erl    
    Exit Sub
End Sub</code></pre></div><p>Но!<br />Set mime = doc.CreateMIMEEntity(&quot;attach&quot;)<br />не работает, так как в документе уже есть такое поле, на форме например.</p>]]></summary>
			<author>
				<name><![CDATA[admin]]></name>
				<uri>https://itpmr.ru/profile.php?id=2</uri>
			</author>
			<updated>2025-08-12T06:20:23Z</updated>
			<id>https://itpmr.ru/viewtopic.php?id=1170&amp;action=new</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Переименование приложения (кнопка на LotusScript)]]></title>
			<link rel="alternate" href="https://itpmr.ru/viewtopic.php?id=1169&amp;action=new" />
			<summary type="html"><![CDATA[<p>Вот код кнопки, которая берет все вложения в поле и можно вводить новое имя для поля.<br />Чтобы не перетаскивать приложение на рабочий стол, переименовывать его и потом опять крепить в лотус карточку.<br />Версия 1 кнопки на LotusScript.<br />Но есть недостаток, некорректно именует приложения с одинаковыми именами файлов.<br />И слетает иконка после прикрепления вложения.</p><div class="codebox"><pre><code>Sub Click(Source As Button)
    On Error Goto ErrH
    Dim session As New NotesSession, ws As New NotesUIWorkspace, db As NotesDatabase, sview As NotesView, dc As NotesDocumentCollection
    Dim uidoc As NotesUIDocument, doc As NotesDocument, templdoc As NotesDocument, DocTemp As NotesDocument
    Dim picklist As Variant, mes As String
    Dim rtitem As NotesRichTextItem
    Dim rtitem2 As NotesRichTextItem
    Dim Name_Stncl_List()  As Variant  &#039; все имена вложений
    
    Set doc = ws.CurrentDocument.Document
    Set uidoc=ws.CurrentDocument
    Set rtitem = doc.GetFirstItem(&quot;attach&quot;)
    
    Dim xxxx As  Integer
    i=0
    If ( rtitem.Type = RICHTEXT ) Then 
        If Not Isempty(rtitem.EmbeddedObjects) Then  
            Forall obj In rtitem.EmbeddedObjects
                If obj.Type = EMBED_ATTACHMENT Then   &#039; шаг 1 имена вложений в массив
                    If obj.FileSize=0 Then
                        xxxx =     Messagebox     ({&quot;Приложение:  } &amp; obj.Source &amp; { имеет размер 0 байт.} &amp; Chr(13) &amp; Chr(13)   &amp; {Удалить?&quot;}, 1 , &quot;Удаление нулевого вложения.&quot; ) 
                        If xxxx = 1 Then
                            doc.history= Cstr(Now)   + &quot; &quot;+ session.CommonUserName + &quot; удалено приложение размером 0 байт (&quot;  + obj.Source + &quot;) &quot;   &amp;Chr(13) &amp; &quot; &quot;&amp;Chr(13) &amp;  doc.history(0)
                            Call  obj.Remove
                            doc.ReplaceItemValue({SaveOptions},{0}).SaveToDisk=False
                            Call doc.save (True,False)
                            Call uidoc.Close
                            Call ws.EditDocument(True, doc)  &#039;  False - чтение
                            Exit Sub
                        End If
                        
                    Else
                        Redim Preserve Name_Stncl_List(i)        
                        Name_Stncl_List(i)= obj.Source &#039; в Name_Stncl_List вносим имена вложений
                        Print Name_Stncl_List(i)
                        i=i+1
                    End If
                End If                
            End Forall
        End If
    End If        
    
    If i&gt;0 Then        &#039;есть  хоть одно вложение в поле атач
        
        nameobj = ws.Prompt (PROMPT_OKCANCELLIST,     &quot;Переименовать&quot;, &quot;Выберите вложение&quot;,     Name_Stncl_List(0), Name_Stncl_List)
        If nameobj=False Then    Exit Sub
    End If
    
    datapatch$ = &quot;C:\XML\&quot;
    If  Dir$ (datapatch$ ,16 )=&quot;&quot; Then 
        Mkdir datapatch$
    End If
    
    i=1 
    Forall obj In rtitem.EmbeddedObjects
        If obj.Source = nameobj Then   &#039; nameobj - ямя выбранного вложения
            
            new_nameobj=Trim(Inputbox$(&quot;Введите новое имя приложения &quot;  &amp; i ,&quot;Ввод названия приложения&quot;,nameobj))        
            If new_nameobj&lt;&gt;nameobj Then   &#039;  надо переименовать
                Call obj.ExtractFile( datapatch$ &amp; nameobj) 
                Name datapatch$ &amp; nameobj   As  datapatch$ &amp; new_nameobj   &#039;  переименовать файл nameobj на диске в new_nameobj
                Call rtitem.EmbedObject ( EMBED_ATTACHMENT, &quot;&quot;, datapatch$ &amp; new_nameobj)
                Call  obj.Remove
                Kill  datapatch$ &amp; new_nameobj
            End If
            
        End If
        i=i+1 
    End Forall
    
    Call    doc.Save(1,0)
    Print &quot;Сохранили.&quot;
    doc.history= Cstr(Now)      + &quot; &quot;+  session.CommonUserName + &quot; переименовано  приложение (&quot;  + nameobj  + &quot;) &quot;   &amp;Chr(13) &amp; &quot; &quot;&amp;Chr(13) &amp;  doc.history(0)
    
    doc.ReplaceItemValue({SaveOptions},{0}).SaveToDisk=False
    Call doc.save (True,False)
    Call uidoc.Close
    Call ws.EditDocument(True, doc)  &#039;  False - чтение
    
    
    Exit Sub
    
ErrH:
    Print &quot;Ошибка &quot; &amp; Error(Err) &amp; &quot; в строке &quot; &amp; Erl    
    Exit Sub
End Sub</code></pre></div>]]></summary>
			<author>
				<name><![CDATA[admin]]></name>
				<uri>https://itpmr.ru/profile.php?id=2</uri>
			</author>
			<updated>2025-08-06T06:19:27Z</updated>
			<id>https://itpmr.ru/viewtopic.php?id=1169&amp;action=new</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Отправка уведомлений в BIMOID с LotusScript.]]></title>
			<link rel="alternate" href="https://itpmr.ru/viewtopic.php?id=1167&amp;action=new" />
			<summary type="html"><![CDATA[<p>Вызываем в кнопке отправки документа функцию<br />&nbsp; &nbsp; Call BIMOID (curdoc, picklist, strukdb, user , db&nbsp; )</p><p>Создаем функцию&nbsp; BIMOID&nbsp; в какой-либо библиотеке, и передаем в неё параметры - для отправки уведомлений в мессенджер BIMOID через серверный агент BIMOID.</p><br /><div class="codebox"><pre><code>Sub BIMOID (curdoc As NotesDocument, picklist As Variant, strukdb As NotesDatabase, user As String, db As NotesDatabase )
    On Error GoTo Errh   &#039; для отправк уведомлений в месседжер BIMOID серез серверный агент
    Dim item As NotesItem
    Dim strukview As NotesView
    Set strukview = strukdb.GetView(&quot;notespeople&quot;)
    
    Dim paramid As String 
    Dim agent As NotesAgent    
    Dim docRequest As NotesDocument 
    Dim docstrukt As NotesDocument
    Dim BIMOID As Variant
    
    BIMOID =&quot;&quot;
    str1=&quot;&quot;
    ForAll v In picklist   &#039;Найти в БД Структура и взять chatid
        Set docstrukt =    strukview.GetDocumentByKey(v)
        BIMOID = BIMOID +  docstrukt.chatid(0) + Chr(10)
    End ForAll    
    Print &quot;BIMOID &quot; BIMOID
    
    mes= &quot;Вам пришел документ &quot; + CStr(curdoc.datereg(0)) + &quot; №&quot; + CStr(curdoc.fullregnom(0))   +Chr(10) + &quot; от  &quot;  + user
    
    Set docRequest = db.CreateDocument     
    Set item = docRequest.AppendItemValue(&quot;doc_mes&quot;, mes) 
    Set item = docRequest.AppendItemValue(&quot;FIO&quot;, BIMOID) 
    Call docRequest.save(True, False)
    
    Print &quot;stsrt agent BIMOID&quot;
    Set agent = db.GetAgent(&quot;BIMOID&quot;)
    paramid = docRequest.Noteid
    Print &quot;paramid=&quot; + paramid
    If Not agent.RunOnServer(paramid) = 0 Then
        Print &quot;не могу запустить агент&quot;
    End If
    Print &quot;end agent BIMOID&quot;

    Exit Sub
Errh:    
    Print &quot;Ошибка BIMOID: &quot; &amp; Error(Err) &amp; &quot; в строке &quot; &amp; Erl
    Exit Sub
End Sub</code></pre></div>]]></summary>
			<author>
				<name><![CDATA[admin]]></name>
				<uri>https://itpmr.ru/profile.php?id=2</uri>
			</author>
			<updated>2025-06-09T07:58:39Z</updated>
			<id>https://itpmr.ru/viewtopic.php?id=1167&amp;action=new</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Кнопки Скопировать / Вставить на форме документа.]]></title>
			<link rel="alternate" href="https://itpmr.ru/viewtopic.php?id=1165&amp;action=new" />
			<summary type="html"><![CDATA[<p>Нужно сделать две кнопки на форме, при нажатии &quot;Скопировать&quot;, в буфе попадает значение последнего поля.<br />А при нажатии &quot;Вставить&quot; - вставляется значение с последнего поля.</p><p>Вот реализация данного функционала на лотус-скркрипте.</p><p>Кнопка &quot;Скопировать&quot;</p><div class="codebox"><pre><code>Sub Click(Source As Button)
    Dim session As New NotesSession
    Dim ws As New notesuiworkspace
    Dim uidoc As NotesUIDocument
    Set uidoc = ws.CurrentDocument
    Dim st As String
    st=session.GetEnvironmentString( &quot;FieldDoc&quot;)
    Print &quot;Скопировано значение  &quot; st
    
    Call uidoc.FieldSetText(&quot;empty&quot;,st)
    
    
End Sub</code></pre></div>]]></summary>
			<author>
				<name><![CDATA[admin]]></name>
				<uri>https://itpmr.ru/profile.php?id=2</uri>
			</author>
			<updated>2025-02-14T09:39:55Z</updated>
			<id>https://itpmr.ru/viewtopic.php?id=1165&amp;action=new</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Преобразование с строки символов кириллицы в латиницу и наоборот.]]></title>
			<link rel="alternate" href="https://itpmr.ru/viewtopic.php?id=1162&amp;action=new" />
			<summary type="html"><![CDATA[<p>Функция, получает строку value&nbsp; на кириллице и возвращает строку на латинице.</p><div class="codebox"><pre><code>Function TranslitCyr2Lat(value As String) As String
    Const FUNC_NAME = {TranslitCyr2Lat}
    On Error GoTo errh
    
    Dim mas1 As Variant, mas2 As Variant
    Dim str1 As String, str2 As string
    
    str1 = &quot;А;Б;В;Г;Д;Е;Ё;Ж;З;И;Й;К;Л;М;Н;О;П;Р;С;Т;У;Ф;Х;Ц;Ч;Ш;Щ;Ъ;Ы;Ь;Э;Ю;Я&quot;
    str1 = str1 &amp; &quot;;&quot; &amp; LCase(str1)
    
    str2 = &quot;A;B;V;G;D;E;JE;ZH;Z;I;Y;K;L;M;N;O;P;R;S;T;U;F;KH;C;CH;SH;JSH;HH;IH;JH;EH;JU;JA&quot;
    str2 = str2 &amp; &quot;;&quot; &amp; LCase(str2)    
    
    mas1 = Split(str1, &quot;;&quot;)
    mas2 = Split(str2, &quot;;&quot;)
    
    TranslitCyr2Lat = Replace(FullTrim(value),mas1,mas2)

    Exit Function

errh:    
    Print {Ошибка: } &amp; LIB_NAME &amp; {--&gt;} &amp; FUNC_NAME &amp; {, строка } &amp; Erl &amp; {, } &amp; Error$
    Exit Function
End Function</code></pre></div>]]></summary>
			<author>
				<name><![CDATA[admin]]></name>
				<uri>https://itpmr.ru/profile.php?id=2</uri>
			</author>
			<updated>2024-09-05T07:38:43Z</updated>
			<id>https://itpmr.ru/viewtopic.php?id=1162&amp;action=new</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Вернуть ответные без главных к главным документам.]]></title>
			<link rel="alternate" href="https://itpmr.ru/viewtopic.php?id=1161&amp;action=new" />
			<summary type="html"><![CDATA[<p>В основной базе есть ответные документы без главных.<br />Так бывает, когда по какйм-то причинам главные документы попали в другие базы, а ответные - остались в основной.<br />Данный лотус-скрипт находит в базах, указанных в коде скрипта, главные документы и переносит к ним ответные - потеряшки.<br />Кнопка - &quot;Вернуть ответы&quot;<br /></p><div class="codebox"><pre><code>Декларации:
Dim newdoc  As NotesDocument
Dim doc As NotesDocument, maindoc As NotesDocument
Dim view As notesview, uniview As NotesView

Sub Click(Source As Button)
    Dim session As New NotesSession
    Dim ws As New NotesUIWorkspace        
    Dim db As NotesDatabase, db1 As NotesDatabase, db2 As NotesDatabase
    
    On Error Goto ErrH
    Dim str1 As String
    Dim i As Integer
    i=0
    
    Set db = session.CurrentDatabase
    
    Set db1 = session.GetDatabase(db.Server,&quot;promdoc\documents2021.nsf&quot;)
    Set db2 = session.GetDatabase(db.Server,&quot;promdoc\documents2022.nsf&quot;)
    
    Set view = ws.CurrentView.View
    
    Set doc = view.getfirstdocument
    
    While Not doc Is Nothing
        Print doc.fullregnom(0)
        
        Set uniview = db1.GetView(&quot;unids&quot;)
        Set maindoc = uniview.GetDocumentByKey(doc.parent(0))
        If Not maindoc Is Nothing Then  Call CreateOtvet(db1)
        
        Set uniview = db2.GetView(&quot;unids&quot;)
        Set maindoc = uniview.GetDocumentByKey(doc.parent(0))
        If Not maindoc Is Nothing Then  Call CreateOtvet(db2)
        
        Set doc=view.GetNextDocument(doc)
    Wend
    Exit Sub
ErrH:
    Print &quot;Ошибка   &quot; &amp; Error(Err) &amp; &quot; в строке &quot; &amp; Erl    
End Sub


Function CreateOtvet (db  As NotesDatabase)
    On Error Goto ErrH
    Print &quot;найден док по parent!  CreateOtvet  &quot; db.Title
    
    Set newdoc  = uniview.GetDocumentByKey(doc.id(0))
    If  newdoc Is Nothing Then &#039; нет копии потеряшки
        
        If    maindoc.responce(0)=&quot;&quot; Then
            Print &quot;главный  - создать ответ&quot;
            Set newdoc=db.CreateDocument        
            Call doc.CopyAllItems(newdoc,1)  &#039;   doc - в основной БД, без главного
            newdoc.UniversalID=doc.UniversalID
            Call newdoc.MakeResponse(maindoc)
            Call newdoc.ComputeWithForm(False, False)
            Print &quot;-1----&quot; 
            Call newdoc.Save(True,False)
            Print &quot;создали в &quot; db.Title
            Call doc.Remove(False)    
            Print &quot;удалили doc&quot; 
            Set doc = view.GetFirstDocument
        Else
            Print &quot;в архиве ответный (maindoc) &quot;  maindoc.fullregnom(0)
            Set maindoc  = uniview.GetDocumentByKey(maindoc.parent(0))
            If Not maindoc Is Nothing Then
                Print &quot;в архиве нашелся главный у ответного &quot;   maindoc.fullregnom(0)
                
                Set newdoc=db.CreateDocument        
                Call doc.CopyAllItems(newdoc,1)
                newdoc.UniversalID=doc.UniversalID
                Call newdoc.MakeResponse(maindoc)
                Call newdoc.ComputeWithForm(False, False)
                Print &quot;-2----&quot; 
                Call newdoc.Save(True,False)
                Print &quot;создали в &quot; db.Title
                Call doc.Remove(False)    
                Print &quot;удалили doc&quot; 
                Set doc = view.GetFirstDocument
            End If
        End If
        
    Else
        Print &quot;ЕСТЬ ДУБЛЬ&quot;
    End If
    
    Exit Function
ErrH:
    Print &quot;Ошибка ф-ции  CreateOtvet   &quot; &amp; Error(Err) &amp; &quot; в строке &quot; &amp; Erl    
End Function</code></pre></div>]]></summary>
			<author>
				<name><![CDATA[admin]]></name>
				<uri>https://itpmr.ru/profile.php?id=2</uri>
			</author>
			<updated>2024-08-20T05:36:00Z</updated>
			<id>https://itpmr.ru/viewtopic.php?id=1161&amp;action=new</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Обновление сервера domino с 9 до 11 версии]]></title>
			<link rel="alternate" href="https://itpmr.ru/viewtopic.php?id=1160&amp;action=new" />
			<summary type="html"><![CDATA[<p>1. quit domino server: в консоле сервера набрать quit</p><p>2. cсделать бекап server.id cert.id admin.id</p><p>3.cmd - командная строка от имени администратора</p><p>переходим в c:\program files\ibm\domino или другую где расположен домино и по очереди набрать команды<br />a) nfixup names.nsf<br />b) nfixup admin4.nsf<br />c) nupdall names.nsf<br />d)ncompact names.nsf<br />e) nupdall admin4.nsf<br />f) ncompact admin4.nsf</p><p>4. устанавливаем Domino 11</p><p>выбрать папку со старым сервером домино .</p><p>5. после установки domino 11 перегрузить виндоус</p><p>6. после перезагрузки зайти в службы и отключить HCL domino 11</p><p>7. Запустить с ярлыка hcl server в режиме Start domino as a regular application</p><p>откроется консоль сервера и если все ок то будет писать там запуск служб, обновление каких то баз и т.д.</p><p>подождать пока все запустит и обновит</p><p>8. в консоле сервера набрать quit - выключить сервер. и перегрузить виндоус .</p><p>9. после перезагрузки должен сам стартануть со службы , открыть домино администратор и посмотреть версию сервера и проверить открытие баз с документами.</p>]]></summary>
			<author>
				<name><![CDATA[admin]]></name>
				<uri>https://itpmr.ru/profile.php?id=2</uri>
			</author>
			<updated>2024-08-15T08:09:29Z</updated>
			<id>https://itpmr.ru/viewtopic.php?id=1160&amp;action=new</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Сжатие Pdf вложений в лотус документе.]]></title>
			<link rel="alternate" href="https://itpmr.ru/viewtopic.php?id=1158&amp;action=new" />
			<summary type="html"><![CDATA[<p>Есть проблема - к лотус докментам прикрепляют огромные по размерам Pdf приложения, которые совсем не оптимизированы по сжатию. Размеры файликов бывают 100-300 Мб.<br />Вот пока первый вариант сжатия таких вложений с помощью gswin64c.exe - Ghostscript, программа.</p><p>Вызов функции.<br /></p><div class="codebox"><pre><code>Print &quot;Вложение сжать: &quot; + datpatch$ &amp; oname$ 
If (obj.FileSize &gt; 10214400 ) Then &#039; БОРЯ 2024
If ws.Prompt (PROMPT_YESNO, &quot;Внимание&quot;,    &quot;Сжать ПДФ&quot;) = 1 Then     Call Pdf_compact (datpatch$ , oname$ )  
End If</code></pre></div><p>Функция.<br /></p><div class="codebox"><pre><code>Function Pdf_compact(datpatch As String, oname As String) As String
    On Error GoTo errh    
    Dim cmd As String
    Dim Namepdf As String
    Print &quot;Pdf_compact старт&quot;
    Namepdf = datpatch &amp; oname    

    If oname = &quot;456-output.pdf&quot; Then
        
        cmd = datpatch &amp; {gswin64c.exe}
        cmd = cmd &amp; { -sDEVICE=pdfwrite}
        cmd = cmd &amp; { -dCompatibilityLevel=1.7}
        cmd = cmd &amp; { -dNOPAUSE}
        cmd = cmd &amp; { -dBATCH}
        cmd = cmd &amp; { -sColorConversionStrategy=Gray}
        cmd = cmd &amp; { -dMonoImageResolution=60}        
        cmd = cmd &amp; { -o&quot;}  &amp; datpatch &amp; {tmpout.pdf&quot; -f&quot;} &amp; datpatch &amp; oname &amp; {&quot;}
        
        Print cmd
        
        Dim WShell As Variant, WshExec As Variant
        Dim OutStream As Variant, StdErr As String
        Set WShell=Nothing
        Set WshExec=Nothing
        
        Set WShell = CreateObject(&quot;WScript.Shell&quot;)
        Set WshExec = WShell.Exec(cmd)  &#039;запускаем прогу  
        Sleep 3
        While WshExec.Status=0 &#039;ждем закрытия проги
            Sleep 1
        Wend
        
        Set OutStream = WshExec.StdErr
        While Not OutStream.AtEndOfStream
            StdErr = StdErr &amp; Trim(OutStream.ReadLine()) &amp; Chr(13)
        Wend
        If Trim(StdErr)&lt;&gt;&quot;&quot; Then MsgBox StdErr
        Sleep 1
        Kill datpatch + oname
        Name datpatch + &quot;tmpout.pdf&quot; As datpatch + oname
        Sleep 1
    
        Print  &quot;ЗАКРЫЛИ&quot;
    End If
    Print &quot;Pdf_compact END&quot;
    Exit Function
ErrH:    
    Print &quot;Библиотека &#039;MED_XML&#039; ф-ция &#039;pdf_compact&#039;. Ошибка &quot; &amp; Error(Err) &amp; &quot; в строке &quot; &amp; Erl    
    Exit Function
End Function</code></pre></div>]]></summary>
			<author>
				<name><![CDATA[admin]]></name>
				<uri>https://itpmr.ru/profile.php?id=2</uri>
			</author>
			<updated>2024-06-03T07:12:07Z</updated>
			<id>https://itpmr.ru/viewtopic.php?id=1158&amp;action=new</id>
		</entry>
</feed>
