Форум программистов, компьютерный форум, киберфорум
HCL Notes: Программирование
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.83/166: Рейтинг темы: голосов - 166, средняя оценка - 4.83
0 / 0 / 1
Регистрация: 30.06.2007
Сообщений: 2,153

Разделение RT на 2 отдельных: текст и аттачи

03.08.2011, 10:58. Показов 30506. Ответов 32
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Камрады, доброе утро!

Голова ещё не работает так хорошо, что бы усиленно думать (тем более отпуск скоро), но уже достаточно для того что бы создать тему

Есть задачка распилить ричтекст, содержащий аттачи и текст на 2 ричтекста:
- в одном только текст
- во втором только аттачи

С первым проблем нет: сопируем RT, пробегаемся по embedded objects -> remove

А вот второе надо решить не сохраняя аттачи на диск.
Т.е. по аналогии: копируем RT, пробегаемся по параграфам -> удалаяем.
Но, насколько я помню, при удалении параграфа оставалась пустая строка, т.е. в результирующем РТ останутся не только аттачи, но и куча лишних enterов.

Это я пока теоретизирую, сейчас, конечно, попробую, но мне кажется что было именно так.

А, ну так вопрос:
есть идеи как ещё полочуть то, что мне надо?
у меня всплывает в голове DXL например, можно и туда ткнуться попробовать.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.08.2011, 10:58
Ответы с готовыми решениями:

Разделение строки на массив строк из отдельных слов
Как разделить строку типа "У него было много друзей." на массив строк, состоящий из отдельных слов?

Хранить текст из ListBox и ComboBox в отдельных файлах
Написать программу которая будет хранить инфо c Listbox и Combobox в отдельных файлах.также должны быть кнопки внести и...

Прокси-сервер с возможностью блокирования отдельных сайтов. Текст на странице
Здравствуйте. Имеется задание - написать прокси-сервер с возможностью блокирования отдельных сайтов. В случае блокировки вывести...

32
1 / 1 / 0
Регистрация: 04.08.2006
Сообщений: 2,950
03.08.2011, 11:07
Цитата Сообщение от Omh
у меня всплывает в голове DXL например, можно и туда ткнуться попробовать
таже идея, и не надо на диск сохранять, и лишние пробелы если что подчистишь
0
0 / 0 / 1
Регистрация: 30.06.2007
Сообщений: 2,153
03.08.2011, 11:17
Morpheus
Ну я сначала попробую через NotesRichText... классы дёрнуть, если не выйдет красиво, попробую DXL.
0
0 / 0 / 0
Регистрация: 04.11.2007
Сообщений: 3,019
03.08.2011, 11:24
Цитата Сообщение от Omh
у меня всплывает в голове DXL например, можно и туда ткнуться попробовать.
походу тут даже без вариантов
0
0 / 0 / 1
Регистрация: 30.06.2007
Сообщений: 2,153
03.08.2011, 11:43
Не, похоже нет смысла даже пытаться делать через NotesRich.
Откупориваем DXL.
0
0 / 0 / 1
Регистрация: 30.06.2007
Сообщений: 2,153
03.08.2011, 12:51
Не, ещё не откупорил.
Пока играюсь с NotesRichTextRange.Remove
И даже неплохо работает, текст удаляет, аттачи оставляет.

Но проблема:
аттачи теряют Parent и отображаются внизу документа под чёрной чертой.
Что-то я не припоминаю, возможно их оттуда опять как-то вковырять обратно в нужное поле (без сохранения на диск)
0
0 / 0 / 0
Регистрация: 27.10.2011
Сообщений: 2,124
19.11.2012, 14:35
Можно попроще, без сохранения на диск.
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">код</div></div><div class="sp-body"><div class="sp-content">

LotusScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Sub CopyAttachments (db As NotesDatabase, docSource As NotesDocument, docTarget As NotesDocument)
Dim docTemp As NotesDocument
 
Remove all attachments from existing document
Call docTarget.RemoveItem ("$FILE")
 
Create a temporary document and use CopyAllItems from the current document
because I know that will include the attachment
Set docTemp = db.CreateDocument
Call docSource.CopyAllItems (docTemp)
 
Clear all items not named $File from the temp docSource, so that all thats left is the attachment
Forall item In docTemp.Items
If Not (Ucase(item.Name) = "$FILE") Then
docTemp.RemoveItem (item.Name)
End If
End Forall
 
Now, docTemp only has the attachments left on it
CopyAllItems will copy the attachment, so use it to copy to docTarget
Call docTemp.CopyAllItems (docTarget)
Call docTarget.Save (True, False)
End Sub
0
1 / 1 / 0
Регистрация: 07.12.2009
Сообщений: 1,197
27.11.2012, 15:17
<!--QuoteBegin-savl+-->
<table border="0" cellpadding="0" cellspacing="0" align="center" width="98%"> [tr] <td class="vbquote"> <table border="0" cellpadding="0" cellspacing="0" width="100%"> [tr] <td class="vbquote" width="75" valign="bottom"> <table border="0" cellpadding="0" cellspacing="0" width="50px"> [tr] <td class="vbquote" width="28" valign="top"></td> <td class="vbquote" width="100%" style="background-image: url(style_images/ckr/quotes/quote-bg.gif); background-position: center;" valign="middle"><span class="vbquote">Цитата:</span></td> <td class="vbquote" valign="top"></td> [/tr] </table> </td> <td class="vbquote" align="left" style="background-image: url(style_images/ckr/quotes/quot-lr-bg.gif)" valign="bottom"></td><td class="vbquote" width="0" align="left" valign="bottom"> <table border="0" cellpadding="0" cellspacing="0" width="200"> [tr] <td class="vbquote" valign="top"></td> <td class="vbquote" width="100%" style="background-image: url(style_images/ckr/quotes/quot-bye-bg.gif)" align="left" valign="middle" nowrap="nowrap"><span class="vbquote">(savl)</span></td> <td class="vbquote" valign="top"></td> [/tr] </table> </td><td class="vbquote" width="100%" align="right" valign="bottom"> <table border="0" cellpadding="0" cellspacing="0" width="100%"> [tr] <td class="vbquote" width="100%"> <table border="0" cellpadding="0" cellspacing="0" width="100%"> [tr] <td class="vbquote" style="background-image: url(style_images/ckr/quotes/quot-top-bg.gif)" width="100%" valign="middle"></td> <td class="vbquote" align="left" valign="top"></td> [/tr] </table> </td> [/tr] </table> </td> [/tr] </table> <table border="0" cellpadding="0" cellspacing="0" width="100%"> [tr] <td class="vbquote" width="10" style="background-image: url(style_images/ckr/quotes/quoting-left.gif)"></td> <td class="vbquotemain" width="100%" valign="top"></td> <td class="vbquote" width="10" style="background-image: url(style_images/ckr/quotes/quoting-right.gif)"></td> [/tr] [tr] <td class="vbquote" width="10" style="background-image: url(style_images/ckr/quotes/quot-left-bg.gif)"></td> <td class="vbquotemain" width="100%" valign="top"><!--QuoteEBegin-->Перенести Аттачи без сохранения на диск<!--QuoteEnd--></td> [/tr] [tr] [/tr] </table> </td> [/tr] </table>
<!--QuoteEEnd-->Стрёмный код.
1. Строка

LotusScript
1
Call docTarget.RemoveItem ("$FILE")
а если аттачи, которые уже были в документе нужны?
2. Код будет работать только для файлов, приатаченных к документу, т.к. при таком условии при удалении RT-поля, в которое вложен файл, автоматом удаляются его вложения-спутники-$FILE, т.е. информация о вложениях в RT-полях будет потеряна.

В итоге, код для каких-то очень узко специализированных случаев. Но я бы такое не рекомендовал; чего стоит хотя бы


Call docTarget.Save (True, False)
0
0 / 0 / 0
Регистрация: 04.11.2007
Сообщений: 3,019
28.11.2012, 01:08
Цитата Сообщение от VladSh
В итоге, код для каких-то очень узко специализированных случаев. Но я бы такое не рекомендовал; чего стоит хотя бы
а что с doc.Save(True..... - не так?
0
1 / 1 / 0
Регистрация: 07.12.2009
Сообщений: 1,197
28.11.2012, 13:43
ToxaRat
Легче спросить "что так"? Такой ответ я бы послушал.
0
0 / 0 / 0
Регистрация: 04.11.2007
Сообщений: 3,019
29.11.2012, 10:19
Цитата Сообщение от VladSh
ToxaRat
Легче спросить "что так"? Такой ответ я бы послушал.
"что так" - работает, проблем не выявлено

а что НЕ так?
0
1 / 1 / 0
Регистрация: 07.12.2009
Сообщений: 1,197
29.11.2012, 13:36
Цитата Сообщение от ToxaRat
"что так" - работает, проблем не выявлено
Странно, а по моим наблюдениям это грозит конфликтами.
А если учесть то, что документ при любом изменении прекрасно сохраняется и при Save(False, то использование True становится, мягко выразиться, непонятным. Разве что из мазохизма.
0
0 / 0 / 0
Регистрация: 04.11.2007
Сообщений: 3,019
30.11.2012, 21:10
Цитата Сообщение от VladSh
А если учесть то, что документ при любом изменении прекрасно сохраняется и при Save(False, то использование True становится, мягко выразиться, непонятным. Разве что из мазохизма.
аааа.... сохраняется, как же
то ты просто не разобрался
0
1 / 1 / 0
Регистрация: 07.12.2009
Сообщений: 1,197
02.12.2012, 13:30
Да, забыл сказать. Тохе и всем остальным, таким же разобравшимся, Save(True даже рекомендуется.
0
0 / 0 / 0
Регистрация: 18.08.2008
Сообщений: 1,698
20.12.2012, 14:08
Всем привет!
Возникла необходимость копирования нодов из одного документа в другой.
В идеале конечно было бы не плохо получить xml-строку нода со всеми потомками и атрибутами.
Кто-то занимался таким? Какие пути решения?
0
0 / 0 / 0
Регистрация: 23.08.2008
Сообщений: 6,252
20.12.2012, 15:18
КМК удобнее будет VDT (ввиду меньшего оверхеда по памяти)
DOM накладно получится
0
1 / 1 / 0
Регистрация: 07.12.2009
Сообщений: 1,197
20.12.2012, 15:32
Если ноды itemов, то проще всё-таки копировать сами itemы.

Если обрабатывать xml обычных лотусовских доков, то, может хватить и DOM.
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Пару маленьких функций на LS (DOM)</div></div><div class="sp-body"><div class="sp-content">

LotusScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
%REM
Function SearchFirstNodeByName
Description: возвращает первую попавшуюся ноду по имени
Пример: передаётся родительская нода структуры и ищется первая нода, к примеру, filedata
<created>...</created>
<modified>...</modified>
<filedata>...</filedata>
%END REM
Function SearchFirstNodeByName(sourceDOMNode As NotesDOMNode, sNodeName As String) As NotesDOMNode
Dim DOMNodeEntry As NotesDOMNode
 
Set DOMNodeEntry = sourceDOMNode.FirstChild
Do While Not DOMNodeEntry.IsNull        проход по самым верхним элементам
 
If DOMNodeEntry.NodeName = sNodeName Then
Set SearchFirstNodeByName = DOMNodeEntry
Exit Function
End If
 
Set DOMNodeEntry = DOMNodeEntry.NextSibling
Loop
 
End Function
 
%REM
Sub SetNextXMLEntry
Description: установка следующего элемента (item, par и т.п.)
%END REM
Sub SetNextXMLEntry(parDOMNode As NotesDOMNode)
Set parDOMNode = parDOMNode.NextSibling     #text
If Not parDOMNode.IsNull Then
Set parDOMNode = parDOMNode.NextSibling     следующий элемент
End If
End Sub
0
0 / 0 / 0
Регистрация: 18.08.2008
Сообщений: 1,698
20.12.2012, 16:43
VladSh
Не, item не пойдет.
Идея скопировать аттачи из документа в документ минуя детач
0
0 / 0 / 0
Регистрация: 15.03.2009
Сообщений: 615
20.12.2012, 17:31
Цитата Сообщение от NickProstoNick
Идея скопировать аттачи из документа в документ минуя детач
item.copyToDocument?
0
0 / 0 / 0
Регистрация: 18.08.2008
Сообщений: 1,698
20.12.2012, 17:42
Цитата Сообщение от savl
Можно попроще, без сохранения на диск.
Оно-то проще, только этим методом копируются все поля со всем содержимым. Мне же нужны сугубо приатаченные файлы с сохранением ссылок в RT поле.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.12.2012, 17:42
Помогаю со студенческими работами здесь

Аттачи в Web
Прошу поделиться опытом и наработками в отображении аттачей в вебе. Кто как делает? Чтобы было красиво и удобно...

аттачи в письме
Привет всем! есть письмо в почтовой бд по кнопке из вида срабатывает печать писем в котором лежит .doc файлы нужно определять...

Аттачи: программно конвертить
Привет всем! Сталкивался ли кто нибудь с задачкой: уменьшить размер базы путем пережатия картинок (bmp-&gt;jpg и т д) через конверток,...

опять про аттачи :(
Есть необходимость вставлять аттачи (вордовские файлы) в документы. что-то вроде тех.библиотеки. типа 1 аттач - один документ. аттачей...

не отображаются аттачи в письме
Привет всем! в почтовой бд есть письма у которые аттачи не отображаются, был код на сохранении письма - уже убрали - он вероятно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной почты. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru