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

Тема в разделе "Lotus - Программирование", создана пользователем maks00793, 22 янв 2010.

  1. maks00793

    maks00793 Active Member

    Регистрация:
    16 апр 2009
    Сообщения:
    30
    Симпатии:
    0
    Здравствуйте, помогите пожалуйста как и каким способом можно решить эту задачу, я новичок и еще многое не знаю в лотусе.

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

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    1)
    Код (Text):
    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 - аналогично
     
  3. Omh

    Omh Lotus team
    Lotus team

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

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

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

    maks00793 Active Member

    Регистрация:
    16 апр 2009
    Сообщения:
    30
    Симпатии:
    0
    окей, щас поробую,

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

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Что не получается? Покажите код.
     
  6. maks00793

    maks00793 Active Member

    Регистрация:
    16 апр 2009
    Сообщения:
    30
    Симпатии:
    0
    maks00793 эта делаеться в скрипте, да? но чтото он не хочет, если можеш напиши больш розширено


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

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

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

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    maks00793
    Создаём кнопку в панели задач представления, выбираем LotusScript, пишем код:
    Код (Text):
    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 аналогично, только имя категории нужно выбирать из существующих (задание на дом :().
     
  8. maks00793

    maks00793 Active Member

    Регистрация:
    16 апр 2009
    Сообщения:
    30
    Симпатии:
    0
    ок, щас попробуем, спасибо большое

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


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

    maks00793 Active Member

    Регистрация:
    16 апр 2009
    Сообщения:
    30
    Симпатии:
    0
    nvy Ну для первого все получилось, спасибо большое.
    Ну а если не сложно, то для 2 и 3 можеш както подскажеш, а то нужно очень, а сам не получаеться.Огромное спаисбо за рание
    я просто не очень силён в скрипте, по этому для меня это сложновато, я тока начинаю в этом розбираться
     
  10. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    maks00793
    Определить категорию у отмеченных во вью документов в данном случае не получится (т.к. документ может содержаться в нескольких категориях). Объект NotesUIView позволяет определить категорию только выбранного (обведённого рамкой) документа (см. справку). Для "группового" изменения/удаления категории нужно выбирать изменяемую/удаляемую категорию из списка. Можно сформировать список, взяв все категории отмеченных документов, или же взять категории первого документа из отмеченных. Для вывода окна выбора из списка можно использовать метод Prompt объекта notesUIWorkspace (см. справку).
     
  11. maks00793

    maks00793 Active Member

    Регистрация:
    16 апр 2009
    Сообщения:
    30
    Симпатии:
    0
    Хорошо, спасибо, будем розбираться
     
Загрузка...

Поделиться этой страницей