Решено Локальная Реплика Архива

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

  1. R4z0R

    R4z0R Well-Known Member

    Регистрация:
    6 авг 2009
    Сообщения:
    166
    Симпатии:
    0
    Приветствую, форумчане!
    Тоха подсказал, что локальную реплику архива можно сделать агентом. Я только с @-формулами знаком, поправьте если что не так.
    Есть сервер с архивами ARC/DOM/ORG и почтовый сервер MAIL/DOM/ORG, архивы в стандартном формате archives/a_familiaio.nsf, нужно при открытии ПЯ создать локальную реплику в папке Data/archives/a_familiaio.nsf
    За основу я взял пример.
    Код (Text):
    Sub Initialize

    Dim session As New NotesSession

    Dim adminp As NotesAdministrationProcess

    Set adminp = _

    session.CreateAdministrationProcess("ARC/DOM/ORG")

    noteid$ = adminp.CreateReplica("ARC/DOM/ORG", _

    "archives/a_familiaio.nsf", _

    "Local")

    If noteid$ <> "" Then

    Dim db As New NotesDatabase("ARC/DOM/ORG", "admin4")

    Dim ws As New NotesUIWorkspace

    Call ws.EditDocument(False, db.GetDocumentByID(noteid$))

    End If

    End Sub
     
  2. NickProstoNick

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

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    1. прекращай писать с "_"
    2. попробуй запустить и посмотреть что получится.

    Но думаю что ничего не получится. Если ничего не путаю - это метод междусерверной репликации.
    Думаю имеет смысл посмотреть другой метод
    Код (Text):
    Set notesDatabaseReplica = notesDatabase .CreateReplica( newServer$ , newDbFile$ )
     
  3. R4z0R

    R4z0R Well-Known Member

    Регистрация:
    6 авг 2009
    Сообщения:
    166
    Симпатии:
    0
    не нашел примера, как сделать локальную реплику. Подскажите код для агента (или кнопки), чтобы при открытии почты (нажатии на кнопку) архив с сервера реплицировался в аналогичную папку в Data у юзера на компе. Или ткните в пример
     
  4. erdi

    erdi Well-Known Member

    Регистрация:
    20 авг 2008
    Сообщения:
    261
    Симпатии:
    36
    Код (LotusScript):
     Dim ses As New NotesSession
    Dim db As NotesDatabase
    Dim replica As NotesDatabase
    Set db = ses.CurrentDatabase
    Set replica = db.CreateReplica( "", db.FilePath )
     
  5. R4z0R

    R4z0R Well-Known Member

    Регистрация:
    6 авг 2009
    Сообщения:
    166
    Симпатии:
    0
    для моего случая надо подредактировать так?:
    Код (Text):
    Dim ses As New NotesSession
    Dim db As NotesDatabase
    Dim replica As NotesDatabase
    Set db = ses.CurrentDatabase
    Set replica = db.CreateReplica( "ARC/DOM/ORG ", "archives\a_"+db )
    [DOUBLEPOST=1438346726,1438346553][/DOUBLEPOST]ругается на эту строчку
     
  6. duchan

    duchan Well-Known Member

    Регистрация:
    20 сен 2006
    Сообщения:
    105
    Симпатии:
    2
    во-первых, "db" - это объект типа NotesDatabase и плюсаовать его к строке нельзя (!)
    во-вторых, Вам реплика нужна на "ARC/DOM/ORG " или локально? если локально, то надо первый параметр "", а так вы пытаетесь создать реплику на "ARC/DOM/ORG ", где пользователю вероятно не даны права на создание реплик (ну и пробел убирите в конце на всякий случай)
     
    #6 duchan, 3 авг 2015
    Последнее редактирование модератором: 3 авг 2015
  7. R4z0R

    R4z0R Well-Known Member

    Регистрация:
    6 авг 2009
    Сообщения:
    166
    Симпатии:
    0
    т.е нужно так?
    Код (Text):
    Dim ses As New NotesSession
    Dim db As NotesDatabase
    Dim replica As NotesDatabase
    Set db = ses.CurrentDatabase
    Set replica = db.CreateReplica( "", "archives\a_"+ses.CurrentDatabase)
    мне нужно создать локальную реплику архива, находящегося на ARC/DOM/ORG в папке archives с префиксом "a_"
     
    #7 R4z0R, 3 авг 2015
    Последнее редактирование модератором: 3 авг 2015
  8. susinmn

    susinmn Well-Known Member

    Регистрация:
    16 окт 2007
    Сообщения:
    530
    Симпатии:
    8
    Если db - это и есть архив на сервере ARC/DOM/ORG, то
    Set replica = db.CreateReplica( "", db.FilePath)
     
  9. Baneslaer

    Baneslaer Well-Known Member

    Регистрация:
    25 янв 2011
    Сообщения:
    121
    Симпатии:
    0
    я же вам ответил на "соседнем" форуме про то каким должен быть алгоритм для решения этой задачи.

    Цитирую:

    Если ничего не забыл, то алгоритм будет выглядеть так:
    1. Получаем коллекцию архивных профайл документов из ПЯ пользователя
    2. Из этих документов получаем путь к архивному серверу, а также к архивным базам пользователя (их может быть далеко не одна).
    Для каких нужно делать реплику - решайте сами.
    3. Из нотес.ини пользователя получаем путь к data directory
    4. Создаем реплику по пути data directory + "путь к архивной бд"
    5. Исправляем в доке профайла архивный сервер на Local
    6. Добавляем обработчик ошибок.
     
  10. R4z0R

    R4z0R Well-Known Member

    Регистрация:
    6 авг 2009
    Сообщения:
    166
    Симпатии:
    0
    спасибо за ответ, но нужен не алгоритм, а код агента, т.к в программировании я не силен. Архив у всех один единственный, они все лежат в одной папке на сервере, префикс у всех одинаковый
     
  11. R4z0R

    R4z0R Well-Known Member

    Регистрация:
    6 авг 2009
    Сообщения:
    166
    Симпатии:
    0
    нет, вот тут для меня и загвоздка. Грубо говоря искомая база - это "a_"+текущая база. Они имеет имя a_familiaio.nsf, а текущая база familiaio.nsf
     
  12. erdi

    erdi Well-Known Member

    Регистрация:
    20 авг 2008
    Сообщения:
    261
    Симпатии:
    36
    Код (LotusScript):
     Dim ses As New NotesSession
    Dim db As NotesDatabase
    Dim dba As NotesDatabase
    Set db=ses.CurrentDatabase
    Set dba=New NotesDatabase(db.Server, "archives\a_"+db.FileName)
    If dba.Title="" Then Messagebox "БД не найдена"
    Call dba.CreateReplica("",dba.FilePath)
     
  13. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    БД сервера - уже обозначена (как объект) и какой её путь - уже не суть (после получения объекта)
    сервер задается по имени, в случае с "локальной" машиной - пустая строка
    имя БД - задаете сами - если есть на то определенное воззрение
    [DOUBLEPOST=1438609447,1438609359][/DOUBLEPOST]
    здесь чего-то напутано
     
  14. erdi

    erdi Well-Known Member

    Регистрация:
    20 авг 2008
    Сообщения:
    261
    Симпатии:
    36
    кнопка в ПЯ пользователя
    1) берем название ПЯ пользователя + префикс для архивной БД
    2) получаем архивную БД
    3) уже архивную БД реплицируем на локал
     
  15. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    @erdi, если БД не найдена - от чего будет реплика?
     
  16. erdi

    erdi Well-Known Member

    Регистрация:
    20 авг 2008
    Сообщения:
    261
    Симпатии:
    36
    звиняйте.....забыл exit sub
    Код (LotusScript):
    Dim ses As New NotesSession
    Dim db As NotesDatabase
    Dim dba As NotesDatabase
    Set db=ses.CurrentDatabase
    Set dba=New NotesDatabase(db.Server, "archives\a_"+db.FileName)
    If dba.Title="" Then
    Messagebox "БД не найдена"
    exit sub
    end if
    Call dba.CreateReplica("",dba.FilePath)
     
  17. R4z0R

    R4z0R Well-Known Member

    Регистрация:
    6 авг 2009
    Сообщения:
    166
    Симпатии:
    0
    на эту строку ругается
    Код (Text):
    If dba.Title="" Then Messagebox "БД не найдена"
     
  18. erdi

    erdi Well-Known Member

    Регистрация:
    20 авг 2008
    Сообщения:
    261
    Симпатии:
    36
    ругается, в смысле сообщение выводится или описание ошибки?
     
  19. duchan

    duchan Well-Known Member

    Регистрация:
    20 сен 2006
    Сообщения:
    105
    Симпатии:
    2
    Код (Text):
     Dim ses As New NotesSession
    Dim db As NotesDatabase
    Dim replica As NotesDatabase
    Set db = ses.CurrentDatabase
    Set replica = db.CreateReplica( "", "archives\a_"+db.FileName )
     
  20. erdi

    erdi Well-Known Member

    Регистрация:
    20 авг 2008
    Сообщения:
    261
    Симпатии:
    36
    пора вносить ясность....а то все понимают по-разному что требуется.....еще раз перечитал все что было написано......
    я понял, что есть 2 сервера: почтовый и архивный. На архивном уже содержится архив(ы) почтовых ящиков. Необходимо при открытии ПЯ пользователя - делать реплику с архивного сервера на локальный сервер.
    Я правильно описал задачу? А то мы все предлагаем правильные решения и в то же время они не правильные
    если я все правильно описал, то тогда мой ранее код необходимо подредактировать
    Код (LotusScript):
    Dim ses As New NotesSession
    Dim db As NotesDatabase
    Dim dba As NotesDatabase
    Set db=ses.CurrentDatabase
    Set dba=New NotesDatabase("ARC/DOM/ORG", "archives\a_"+db.FileName)
    If dba.Title="" Then
    Messagebox "БД не найдена"
    exit sub
    end if
    Call dba.CreateReplica("",dba.FilePath)
     
    2 пользователям это понравилось.
Загрузка...
Похожие Темы - Локальная Реплика Архива
  1. iivvnn
    Ответов:
    15
    Просмотров:
    952
  2. Experimentator
    Ответов:
    2
    Просмотров:
    2.078
  3. akisawa
    Ответов:
    0
    Просмотров:
    1.337
  4. R4z0R
    Ответов:
    5
    Просмотров:
    931
  5. astana2030
    Ответов:
    7
    Просмотров:
    1.166

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