• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Не большая помощь

  • Автор темы maks00793
  • Дата начала
M

maks00793

Здравствуйте, помогите пожалуйста как и каким способом можно решить эту задачу, я новичок и еще многое не знаю в лотусе.

Задача: в обычной базе Lotus Notes есть представление, в котором документы разложены (категоризированы) по полю category.
Поле category - текстовое, множественное (списочное). Т.е. один и тот же документ может присутствовать в разных категориях в этом виде.
Имеется задача предоставить пользователю удобный инструмент для перегруппировки за один заход нескольких отмеченных документов в этом виде. Т.е. для изменения поля category сразу у нескольких отмеченных в виде документов.
Пользователю должны быть доступны следующие варианты изменения указанного поля:
1) включение документа в другую категорию - дополнение поля новым значением.
2) исключение документа из определенной категории.
3) замена в документе одной категории на другую.
 
N

nvyush

1)
Код:
Set docs = UIView.Documents
Set doc = docs.GetFirstDocument
Do Until doc Is Nothing
call doc.ReplaceItemValue(ArrayAppend(doc.GetItemValue("Category"), NewCategory))
call doc.Save(True, True)
Set doc = docs.GetNextDocument(doc)
Loop
2, 3 - аналогично
 
O

Omh

Ну я бы делал что-то вроде агента по выделенным документам (Target = Selected Documents), который показывает dialgobox с 3 частями:
1. Append category
2. Remove category
3. Replace category

В каждый части мы выбираем из списка всех категорий, существующих в базе (какой нить @DbColumn) обрабатываемые категории.

Потом бежим по документам и процессим примерно так:
Код:
1. ArrayUnique(ArrayAppend(CAT_FLD, <NEWCAT>))
2. ArrayUnique(Fulltrim(ArrayReplace(CAT_FLD, <REMCAT>, "")))
3. ArrayUnique(Fulltrim(ArrayReplace(CAT_FLD, <OLDCAT>, <NEWCAT>)))

Как-то так :(
 
M

maks00793

окей, щас поробую,

Добавлено: 1 . способ чегото не получаеться, а 2 способ я не догнал, если можна киньте больш розширенный код
 
M

maks00793

maks00793 эта делаеться в скрипте, да? но чтото он не хочет, если можеш напиши больш розширено


Добавлено:
1)
Код:
Set docs = UIView.Documents
Set doc = docs.GetFirstDocument
Do Until doc Is Nothing
call doc.ReplaceItemValue(ArrayAppend(doc.GetItemValue("Category"), NewCategory))
call doc.Save(True, True)
Set doc = docs.GetNextDocument(doc)
Loop
2, 3 - аналогично
эта делаеться в скрипте, да? но чтото он не хочет, если можеш напиши больш розширено

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

Добавлено: не получаеться то что пишет вот такую ошибку vavariant does not contain an object, а какой обьект нужен?
 
N

nvyush

maks00793
Создаём кнопку в панели задач представления, выбираем LotusScript, пишем код:
Код:
Sub Click(Source As Button)
Dim ws As New NotesUIWorkspace
Dim uiview As NotesUIView
Dim NewCategory As Variant
NewCategory = ws.Prompt(3, "Новая категория", "Введите имя категории") 'для 2, 3 - другой код
If Isempty(NewCategory) Then Exit Sub
Set uiview = ws.CurrentView
Dim docs As NotesDocumentCollection
Set docs = uiview.Documents
Dim doc As NotesDocument
Set doc = docs.GetFirstDocument
Do Until doc Is Nothing
Call doc.ReplaceItemValue(Arrayappend(doc.GetItemValue("Category"), NewCategory)) 'для 2, 3 - другой код, см. пост 3
Call doc.Save(True, True)
Set doc = docs.GetNextDocument(doc)
Loop
End Sub
Для п. 2, 3 аналогично, только имя категории нужно выбирать из существующих (задание на дом :().
 
M

maks00793

ок, щас попробуем, спасибо большое

Добавлено: Ну для первого все получилось, спасибо большое.
Ну а если не сложно, то для 2 и 3 можеш както подсказать


Добавлено: я просто не очень силён в скрипте, по этому для меня это сложновато, я тока начинаю в этом розбираться
 
M

maks00793

nvy Ну для первого все получилось, спасибо большое.
Ну а если не сложно, то для 2 и 3 можеш както подскажеш, а то нужно очень, а сам не получаеться.Огромное спаисбо за рание
я просто не очень силён в скрипте, по этому для меня это сложновато, я тока начинаю в этом розбираться
 
N

nvyush

maks00793
Определить категорию у отмеченных во вью документов в данном случае не получится (т.к. документ может содержаться в нескольких категориях). Объект NotesUIView позволяет определить категорию только выбранного (обведённого рамкой) документа (см. справку). Для "группового" изменения/удаления категории нужно выбирать изменяемую/удаляемую категорию из списка. Можно сформировать список, взяв все категории отмеченных документов, или же взять категории первого документа из отмеченных. Для вывода окна выбора из списка можно использовать метод Prompt объекта notesUIWorkspace (см. справку).
 
M

maks00793

Хорошо, спасибо, будем розбираться
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!