использование значений категорезированной колонки

Тема в разделе "Lotus - Программирование", создана пользователем kilcher, 5 фев 2009.

  1. kilcher

    kilcher Гость

    Всем добрый день!

    существует вьюшка,где первая колонка это имена пользователе(должников). Эта колонка категоризирована,т.к. у пользователя могут быть долги по нескольким док-там.
    Вопрос следующий: можно ли разослать уведомления используя имена из этой колонки? Если делать это,используя поля в документах,то одному человеку прридет несколько уведомлений.
     
  2. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    можно, если имена пользователей это имена в Domino.
    Иначе - надо делать сопоставления.

    и колонка должна быть отсортирована, а не только категаризована

    см. хелп Set notesDocumentCollection = notesView.GetAllDocumentsByKey( keyArray [, exactMatch% ] )
     
  3. kilcher

    kilcher Гость

    Да,это лотус имена. А как,не подскажете? <_<
     
  4. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    ой... нет. немного не то

    смотри классы NotesViewEntry, NotesViewEntryCollection
    NotesViewEntry - по моему возвращает данные по первому категоризованому столбцу
    NotesViewEntryCollection - по любому столбцу

    это если я ничего не путаю.
    Подробней см. хелп
     
  5. Constantin A Chervonenko

    Constantin A Chervonenko Well-Known Member

    Регистрация:
    30 май 2006
    Сообщения:
    1.291
    Симпатии:
    0
    Категоризация - разновидность сортировки. Категоризовать не сортируя - невозможно
     
  6. Gor

    Gor Well-Known Member

    Регистрация:
    7 июн 2005
    Сообщения:
    517
    Симпатии:
    2
    Можно собрать нужную коллекцию, собрать нужный массив значений для отправки писем со всей информацией по долгам, фамилии итд, там есть замечательные функции типа Arrayunique() и уведомления один раз приходить будут....
     
  7. kilcher

    kilcher Гость



    А можно по подробней? Я в принципе понимаю как это можно сделать. Т.е. проверять по каждому из сотрудников есть ли он поле "не согласовали". Но вся проблема в том что в нашей организации нет пока даже справочника сотрудников! А вот эту задачу уже надо выполнить ;)


    С помощью этих классов я вытащю доки из категории,а мне надо само значение. Я думала импользовать NotesViewNavigator,но что то не выходит.
    Вот пример вида

    >Aleksandr S Gogolevski
    02-152 02. Этап 02 Согласован
    .............
    >Alla L Ilyina
    02-153 02. Этап 01 Черновик
    .............
    ............
     
  8. Gor

    Gor Well-Known Member

    Регистрация:
    7 июн 2005
    Сообщения:
    517
    Симпатии:
    2
    Опишите задачу поподробней. Какая у вас выборка во вьюхе? Кому необходимо посылать уведомление по какому признаку? Что должно содержать уведомление? Или это просто обычный ремайндер без информации из документов в письме?
     
  9. kilcher

    kilcher Гость

    Если в документе поле "не согласовали" не пустое,то доки попадают в этот вид.
    В каждом документе в поле "не согласовали" может содержатся несколько человек.Это поле многозначное.
    Затем я сделала категоризацию первого столбца,в нем и выводятся имена должников.(и уже при раскрытии категории человек видит по каким документам у него долги). Формула для столбца такая @Name([Abbreviate];ne_soglasovali)
    Разослать уведомления я должна всем этим людям. В уведомлении можно просто указать ссылку на вид.(У вас есть долги в базе,нажмите сюда->"ссылка на вид" )
    Вобщем вот так как то. Я тут попробовала сделать с помощью NotesViewColumn,но видимо так как колонка категоризирована выдает ошибку



    Ой! Я кажись сделала ;) Только вот уточню,на всякий случай куда рассылку пихать

    Dim session As New NotesSession
    Dim db As NotesDatabase
    Set db = session.CurrentDatabase
    Dim view As NotesView
    Set view = db.GetView("5.Не ознакомились")
    Dim nav As NotesViewNavigator
    Set nav = view.createViewNav
    Dim entry As NotesViewEntry
    Set entry = nav.GetFirst
    While Not (entry Is Nothing)
    If entry.IsCategory Then
    If entry.ColumnValues(0) <> "" Then
    REM Индекс в массиве - номер столбца - 1
    Messagebox Cstr(entry.ColumnValues(0))
    '''''Вот сюда? вместо сообщения

    End If
    End If
    Set entry= nav.GetNext(entry)
    Wend




    Я просто не верю своему счастью!
     
  10. alb

    alb Well-Known Member

    Регистрация:
    13 июл 2005
    Сообщения:
    212
    Симпатии:
    0
    чето не пойму вы пытаетесь уведомления рассылать или по требованию показать на экране?
    похоже на последнее.
     
  11. Gor

    Gor Well-Known Member

    Регистрация:
    7 июн 2005
    Сообщения:
    517
    Симпатии:
    2
    хех=) ну если так, просто ссылка на вид если есть долги, тогда

    получаете коллекцию поиском по вашей форме и по полю не согласовали типа
    Set coll = db.Search({Form = "ваша форма" & (ne_soglasovali <> "")},Nothing,0)

    собираете всех должников из поля ne_soglasovali в цикле по всем полученным документам в некую Variant переменную предположим reciptiens.
    А дальше делаете ResultRecipt = Arrayunique(reciptiens,0) и mail.Recipients = ResulTRecipt
     
Загрузка...

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