С Новым годом! Форум программистов, компьютерный форум, киберфорум
HCL Notes: Программирование
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.91/47: Рейтинг темы: голосов - 47, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 20.03.2017
Сообщений: 12

Экспорт выделенных документов (для новичка)

19.11.2018, 19:13. Показов 10485. Ответов 22
Метки нет (Все метки)

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

Не ругайте сильно, если спрашиваю глупость. Буду благодарен всем, кто ответить более предметно, нежели отправит читать мануалы))

Итак, задача: есть сервер Лотуса. Там - куча разных документов. Необходимо УКАЗАННЫЕ документы экспортировать, чтобы в дальнейшем выкладывать их на сайт.

УКАЗАННЫЕ документы - это выбранные пользователем.

Как экспортировать: в идеале, желательно каждому документу добавить некий ПРИЗНАК, а скрипт будет сам искать документы, которые ещё не были экспортированы, и экспортировать из КУДА-ТО в КАКОМ-ТО формате (текстовый, Эксель, XML - не суть важно, тут я уже разберусь). КУДА экспортировать - тоже, как мне кажется, второй вопрос. А идеале, вызывать внешний URL-адрес и передавать туда, например, XML. Если так не получится - то хоть просто в какой-то каталог в виде отдельных файлов. Тоже не суть важно.

Это - в идеале. Но можно и так: пользователь в Notes выделяет галочками нужные документы, жмёт КНОПКУ и сохраняет файл, содержащий экспортированные документы в КАКОМ-ТО виде (см. выше) туда, куда укажет пользователь.

В общем, пока не важно КАК, но хоть КАК-ТО бы экспортировать данные)))

Если двигаться по второму варианту (когда пользователь выделяет нужные документы и жмёт кнопку), то вопросы такие:
1. Как создать СВОЮ кнопку, которую пользователь сможет нажать
2. Как на эту кнопку повесить обработчик, которые будет собираться все выделенные документы и преобразовывать их, например, в XML


Программированием занимаюсь давно, но вот Лотус неожиданно достался в наследство. Раньше с ним не работал. А сделать всё надо, как обычно, вчера. (((

И никак не могу в интернете найти толковое руководство по Lotus Script, с чего хотя бы начать! Я даже не пойму, где исходный код на Lotus Script вставлять! ))

Подскажите, пожалуйста! Не бросайте наедине с этим монстром))

Спасибо!
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.11.2018, 19:13
Ответы с готовыми решениями:

Экспорт выделенных документов в Xml
Помогите, я новичек в Lotuse. Нужно сделать следующее: В базе данных выделяю галочками нужные документы для экспорта. Создаю кнопку и...

Как снять метки с выделенных документов во вьюшке
Извиняюсь если вопрос глупый. Задача такая, есть скрипт на удаление документов, при котором проверяются некоторые права у пользователя,...

как формулами собрать ИД всех выделенных документов?
требуется помощь в следующей ситуации: есть база (у меня на нее прав недостаточно, чтоб без лишнего кариеса создать агент, поэтому...

22
528 / 91 / 43
Регистрация: 02.02.2013
Сообщений: 399
20.11.2018, 03:13
Здравствуйте, если быстро экспортировать с минимальными телодвижениями то у вас только один выход

- Выделить в представлении (view) нужные документы, которые хотите экспортировать
- Потом правой (!) кнопкой вызываете всплывающее меню и в меню есть пункт "Копировать как таблицу" - это в русском клиенте и после в буфер обмена будут помещены документы
- Потом вы можете их вставить через буфер обмена. например в excel или word или куда хотите вообще.

Недостаток этого копирования через буфер в том что в буфер будет помещены не все поля документа, а только видимые на экране (в представлении). Зато ничего программировать не нужно, быстро и универсально.

Это самое простое для вас и быстрое.

Если говорить о идеальном варианте, о котором вы спрашиваете с кнопочкой и обработчиком - то да вы правильно написали - это нужно уже программировать.

Для начала вам нужно установить рабочую станцию Lotus Domino Designer - с ней вы сможете работать с дизайном (разработкой) баз,
Не путайте с просто версиями станций Lotus Notes Standart или Basic - обычно их ставят пользователям там доступа к дизайну БД нет.
И потихоньку разбираться начать лучше с Создания агента с использованием @-команд и @-формул, затем переходите к LotusScript - он по синтаксисту похож на Basic - но не обманывайтесь такой простой аналогией - на самом деле lotusScript работает со всеми элементами БД lotus, так же поддерживает ООП.

В будущем если освоете базовый lotusScript - можете переходить в XPages - это более сложное можно уже разрабатывать приложения Lotus для Web.

Особо много книг на тему разработки нету, но из лучших которые были в свое время поищите такие:

Язык @-формул в Lotus Domino 6 справочник разработчика, Ru, Пояков Е.В.
- не смущайтесь что это для 6-ой версии - на самом деле там 100% актуально и для всех последующих

Разработка приложений в Lotus Designer 7 тот же Поляков Е.В.
"Разработка приложений в Lotus Domino 7" - это перевод IBM

Есть более старая, но так же актуальная версия на 100%
Программирование в Lotus Domino R5.

У меня они где-то были кажется в эл.виде - могу поискать если надумаете
1
0 / 0 / 0
Регистрация: 20.03.2017
Сообщений: 12
20.11.2018, 08:22  [ТС]
Добрый день.

Да, Дизайнер есть. И Админ есть. Всё есть))
В Дизайнере уже копался. Примерно понял, где формы для нужных изданий лежат и как выглядят.

Сейчас главный вопрос - как добавить СВОЮ кнопку, чтобы редактор, который занимается добавлением статей в Лотус, мог галочками выделить нужные статьи и нажать эту кнопку.

И как потом на эту кнопку обработчик повесить.

За вариант с копированием в буфер обмена - спасибо. На первых порах, по всей видимости, придётся так и делать. Но просто это работа не разовая и заниматься этим будет другой человек. У нас достаточно много статей пишется, много аналитики (финансовые рынки, банкинг), 75% из них идёт для внутреннего использования и для клиентов. А вот ЧАСТЬ статей должны выкладываться на сайт (http://www.wiki-ins.ru/) Сейчас редактор, по сути, делает двойную работу: сначала пишет статьи в Лотусе, а затем открывается Админку на указанном сайте и там их тоже добавляет. Это отнимает много времени.

Изначально я рассматривал вариант работы через Lotus Notes SQL. Так, кажется, называется?. В общем, чтобы обращаться к Лотусу через SQL-запросы. Да, я знаю, что вариант во многом ущербный, но, судя по описанию возможностей, мне было бы достаточно. Проблема только в том, что я не нашёл драйвера под Linux (у нас Lotus установлен на Linux-е). Может быть у вас есть где-то ссылка на этот драйвер?

И по поводу литературы - скиньте, пожалуйста! Буду очень благодарен!

И если можно быстро подсказать, то намекните про создание кнопки и "повешение" на неё обработчика.

Спасибо!
0
528 / 91 / 43
Регистрация: 02.02.2013
Сообщений: 399
20.11.2018, 19:43
Лучший ответ Сообщение было отмечено play1981 как решение

Решение

Здравствуйте

Код посадить на кнопку нужно так

Открываете базу в дизанейре - или шаблон из которога база наследует дизайн)
переключаетесь в список представлений (views)
Находите нужное представление и открваете его
Когда попадаете в коструктор конкретного представления с правой стороны будет вертикалоьный список дествий - это и есть те кнопочки которые Отображатюся в панели дестви в представлении
В этот список вы можете добавить действие (Actions) - за каждому дествию будет соответстовваа кнопка.

Далее программный код кнопки по разному будет доступе в зависимости от того какое у вас дествие с @-коммандами или c LotusScript

Прикладываю картинку - там все стрелками показал !
Миниатюры
Экспорт выделенных документов (для новичка)  
1
528 / 91 / 43
Регистрация: 02.02.2013
Сообщений: 399
20.11.2018, 19:49
Если вы хотите, чтобы действие работало только с выделенными пользователем документами, то это вам нужно использовать агенты. Создаете сначала агент , и в свойствах агента задать например что он обрабатывает тольк5о выделенные документы а в кнопке выполняете вызов агента команда кажется называется @RunToolsMacro("Название Агента"). И когда агент запускается агент сам уже фильтрует и обратабывает только выделенные длокументы.
1
0 / 0 / 0
Регистрация: 20.03.2017
Сообщений: 12
21.11.2018, 07:58  [ТС]
Спасибо! Сегодня попробую ваш алгоритм действий.
Но, думаю,это то, что надо))
0
0 / 0 / 0
Регистрация: 20.03.2017
Сообщений: 12
21.11.2018, 20:45  [ТС]
Попробовал.
Да, то, что надо!
Вы, можно сказать, открыли мне окно в Лотус! )) А то я было совсем отчаялся, так как не мог ни в чём разобраться ))
Дальше уже сам с экспортом буду думать.

Спасибо огромное!!!
0
0 / 0 / 0
Регистрация: 20.03.2017
Сообщений: 12
10.12.2018, 11:41  [ТС]
Добрый день.

Ещё раз спасибо за подробное объяснение!
Всё сделал, всё получилось! )) При нажатии на кнопку выбранные статьи экспортируются на сайт.

Однако, появился новый вопрос: не совсем пойму, как взять статью именно в HTML-формате. Просто в виде текста - пожалуйста! Но, как оказалось, в статьях есть таблицы и рисунки, которые в плоском тексте просто отсутствуют либо в виде несуразного набора символом присутствуют.

Подскажите, пожалуйста, как взять текст статьи именно с разметкой?

Вроде есть что-то про HTML, но там какой-то тип данных, который я никак не могу преобразовать в текст с разметкой. А может это и не оно вообще.

Спасибо на наводку!
0
528 / 91 / 43
Регистрация: 02.02.2013
Сообщений: 399
10.12.2018, 16:40
Здравствуйте.

Я хотел уточнить - у вас статъи в Лотус базе хранятся в документах лотус и далее в поле RichText - и в rich-text поле уже теги HTML картинками ? или по другому как-то ? Просто что-то не соображу никак .

Можете показать пример как у вас html- код хранится ? и тип поля.
0
0 / 0 / 0
Регистрация: 20.03.2017
Сообщений: 12
10.12.2018, 19:33  [ТС]
В статье есть поле NS_TextView. У него тип просто TEXT. Его я сейчас беру.
Вот для выбранной статьи это поле имеет размер чуть больше 2 кБ.

И есть поле NS_Text. У него тип Rich Text. И размер этого поля 40 кБ.
Но когда я пытаюсь взять это поле и присвоить его переменной, Лотус выдаёт ошибку: Variant does not contain a container

Как я понимаю, с данным типом поля как-то по-другому надо работать, чтобы вытащить из него данные.
Только как - не пойму.
Уже погуглил, разные преобразования типов попробовал - что-то не то...
0
528 / 91 / 43
Регистрация: 02.02.2013
Сообщений: 399
10.12.2018, 20:03
Для работы с ricthtext - полями моэжно использовать один из вдуух классов notesItem или NotesRichTextItem
У вас, я подозреваю, просто ошибка в алогитме работы с объектами. раз выдает "Variant does not contain a container"
Для получения данных поля в формет html досточно notesItem это будут просто строки с тегами html
Вам то нужно ? и картинки просто как строка с путем к имени фала или данными . Или у вас что то другое ?
0
0 / 0 / 0
Регистрация: 20.03.2017
Сообщений: 12
11.12.2018, 01:08  [ТС]
Попробовал вот так:

Dim Item As NotesItem
Set Item = doc.GetFirstItem("NS_Text")
Msgbox Item.Text

Выдаёт пустое окошко.

Наверное, что-то не так опять)))
0
528 / 91 / 43
Регистрация: 02.02.2013
Сообщений: 399
11.12.2018, 15:20
Код верный. у вас по карйней мере этот кусчек.

Попробуйте использовать проверки

PureBasic
1
if ... is Nothing Then
это поможет вам найти где проблема.

Visual Basic
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
35
36
37
38
Sub Initialize
    Dim Session As New NotesSession
    Dim Db As NotesDatabase
    'Получаем базу
    Set Db = Session.CurrentDatabase
    
    If db Is Nothing Then
        Print "Нету базы"
        Exit Sub
    End If
    
    Dim Collection As NotesDocumentCollection
    Set Collection = Db.UnprocessedDocuments
    
    If Collection Is Nothing Then
        Print "Нет коллекции документов "
    Else
        'Получаем документ
        Dim Doc As NotesDocument
        Set Doc = Collection.GetFirstDocument
        
        If doc Is Nothing Then
            Print "Нет документа"
        Else
            'Получаем поле
            Dim Item As NotesItem
            Set Item = Doc.GetFirstItem("Title")
            If Item Is Nothing Then
                Print "Нет запрошенного поля Title"
            Else
                Print Item.Text
            End If
        End If
    End If
    
    Print "Конец"
    
End Sub
Либо так же можете так же включить отладку в меню через F10 Tools-Debug LotusScript и запустить агент и тогда по построчно сможете двигаться и тогда в отладчике увидите какой объект отсутствует.
0
0 / 0 / 0
Регистрация: 20.03.2017
Сообщений: 12
12.12.2018, 19:25  [ТС]
Сделал, как вы написали.
Поле есть. Но выводит всё равно ПУСТОЕ значение.

Прикрепляю два скриншота, как выглядит статья, и её свойства.
Как видите, есть два поля: NS_Text и NS_TextView.

NS_TextView - просто текст.
NS_Text - RichText размером 40 кБ против 2 кБ у NS_TextView. Сдаётся мне, там и прячется эта табличка!
Но всё равно почему-то ПУСТО выводит.

Командой Messagebox(item.ValueLength) выводит 40054, а item.text - всё равно пусто, блин!
Миниатюры
Экспорт выделенных документов (для новичка)   Экспорт выделенных документов (для новичка)  
0
528 / 91 / 43
Регистрация: 02.02.2013
Сообщений: 399
12.12.2018, 20:22
Может быть там используется MIME формат ?
0
0 / 0 / 0
Регистрация: 20.03.2017
Сообщений: 12
13.12.2018, 19:53  [ТС]
Не знаю. Как проверить, какой формат используется?

Вообще создаются и редактируются статьи в Word-е. То есть он запускается автоматом, когда в Лотуса наживаешь РЕДАКТИРОВАТЬ или ДОБАВИТЬ.
0
528 / 91 / 43
Регистрация: 02.02.2013
Сообщений: 399
13.12.2018, 20:22
Тогда скорее всего OLE Obect - хотя можно по другому. Вообщем нужно смотреть тогда дизанйрен. типя полей и код что делается события. Так иначе будет одни предпроложаения и угадывания.
0
0 / 0 / 0
Регистрация: 20.03.2017
Сообщений: 12
13.12.2018, 20:36  [ТС]
Да, по всей видимости, это OLE-объект и есть.
Хм. Получится из него вытащить информацию?
0
528 / 91 / 43
Регистрация: 02.02.2013
Сообщений: 399
14.12.2018, 02:14
Если это OLE- объект -То вы можете с ним рабоать из lotusScript используя OLD-classes и тогда можете вытягивать тест из Word.
Но если вы хотите имено работать с html-разметкой нужно понять тогда как текст из Word трансформируется в HTML. Это может например отдельно где-то сохраняется например в каком-то поле скрытом которое в форме не видно. И понять в какой момент происходит преоборозование в HTML и понять куда в какое место трансформируется куда кладется заранее полученный html-код Или у вас как-то по другому ?
0
0 / 0 / 0
Регистрация: 20.03.2017
Сообщений: 12
14.12.2018, 09:06  [ТС]
Так-с. Докладываю, с чем разобрался.
Поле действительно OLE.

Значит, надо, как вы говорите, работать с OLE-классом.

Каким образом это делать? Всё-таки, сначала получаем Item?

Visual Basic
1
2
Dim Item As NotesItem
Set Item = Doc.GetFirstItem("Title")
И с ним уже потом какие-то манипуляции проводим.

Или надо сразу из DOC (который ....Set doc = docs.GetFirstDocument()...) OLE-объект вытягивать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.12.2018, 09:06
Помогаю со студенческими работами здесь

Быстрый способ сохранить все вложения из выделенных документов
Самое простое решение, сохранить все вложения из выбранных документов в представлении: - помечаем документы в представлении - на...

Экспорт документов в Word
Доброго дня. Лотусом только начал заниматься, заранее спасибо за помощь. Суть: имеется Родительский документ и Responce, возникла...

Вывод в печатную форму несколько выделенных документов
Доброе время суток Уважаемые профи 1С! Ребят помогите новичку разобраться! Задача стоит такая: Печать из выделенных документов ...

Экспорт выделенных строк из dataGridView в Excel
Доброго времени суток. На форме имеется dataGridView в который загружено 1000 строк записей из БД. SelectionMode установлено на...

Экспорт / Импорт документов
В типовую конфигурацию входят две обработки - экспорт и импорт доков и справочников через текстовый файл. Вопрос: при импорте справочник...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru