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

maks00793

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

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

nvyush

Well-Known Member
Lotus team
22.04.2009
2 317
0
#2
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 - аналогично
 

Omh

Well-Known Member
Lotus team
04.07.2007
2 210
1
#3
Ну я бы делал что-то вроде агента по выделенным документам (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>)))
Как-то так :(
 

maks00793

Active Member
16.04.2009
30
0
#4
окей, щас поробую,

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

maks00793

Active Member
16.04.2009
30
0
#6
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, а какой обьект нужен?
 

nvyush

Well-Known Member
Lotus team
22.04.2009
2 317
0
#7
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 аналогично, только имя категории нужно выбирать из существующих (задание на дом :().
 

maks00793

Active Member
16.04.2009
30
0
#8
ок, щас попробуем, спасибо большое

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


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

maks00793

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

nvyush

Well-Known Member
Lotus team
22.04.2009
2 317
0
#10
maks00793
Определить категорию у отмеченных во вью документов в данном случае не получится (т.к. документ может содержаться в нескольких категориях). Объект NotesUIView позволяет определить категорию только выбранного (обведённого рамкой) документа (см. справку). Для "группового" изменения/удаления категории нужно выбирать изменяемую/удаляемую категорию из списка. Можно сформировать список, взяв все категории отмеченных документов, или же взять категории первого документа из отмеченных. Для вывода окна выбора из списка можно использовать метод Prompt объекта notesUIWorkspace (см. справку).