доступ на редактирвоание

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

  1. nadezdaMP

    nadezdaMP Гость

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

    вопрос - как сделать доступ, как сохранить изменения, сделанные пользователем из другой базы?
    подскажите идею пожалуйста :)
     
  2. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.046
    Симпатии:
    18
    принцып сохранения не важно в какой базе, всё одинаково
    я так понимаю что "доступ" вы делаете чисто скриптом а не через ридерс/авторс поля?
     
  3. nadezdaMP

    nadezdaMP Гость

    все верно. я просто не понимаю почему под админом изменения остаются, а под пользователем - нет, хотя у пользователя есть возможность редактирвоания своих данных из базы контактов. а как это можно сделать через ридерс/авторс поля?
     
  4. TIA

    TIA :-)
    Lotus team

    Регистрация:
    15 май 2009
    Сообщения:
    790
    Симпатии:
    0
    Пользователи по ACL, вероятно авторы, а админ -- редактор или выше. В этом случае пользователь может редактировать документ только если он указан в одном из авторских полей (или имеет роль, указанную в авторском поле). А на редактора по ACL или выше данное ограничение не распространяется. Вобщем, читайте в хелпе как AUTHORS/READERS поля работают.
     
  5. Klido

    Klido Гость

    +это по умолчанию достаточно хорошо реализовано в стандартной АК организации - можно изучить на примере
     
  6. nadezdaMP

    nadezdaMP Гость

    изучила) у каждого пользователя в контакте есть поле Owner типа Authors, где прписано его полное имя.
    доступ к базе по умолчанию Authors. это понятно. причем пользователь может редактировать только определенные поля своего контакта, не все.
    есть другая база данных. в ней по пользователь также может редактировать только свой контакт в АК, (там есть кнопочка - редактировать свой контакт) но изменения не сохраняются. ну не понимаю я почему и как сделать так чтоб сохранялось =) метод научного тыка не помог =)
     
  7. Klido

    Klido Гость

    как именно происходит редактирование? открывается док или диалог? "при выполнении скрипта" - можно кусок этого скрипта или полностью?
    в Save параметры правильно стоят? если диалогом - параметры диалога по изменению полей - правильные?
     
  8. nadezdaMP

    nadezdaMP Гость

    по кнопке открывается форма на редактирвоание, на форме поле SaveOptions = 0
    код кнопки следующий
    [codebox]
    Sub Click(Source As Button)
    ...
    Set s = New NotesSession
    Set ws = New NotesUIWorkspace
    Set db = s.CurrentDatabase

    Set tddb = s.GetDatabase("domino", "names")
    Set view = tddb.GetView("ForHomeBase")
    Set name = s.CreateName(s.UserName)
    If name.Abbreviated <>"" Then
    Set vdoc = view.GetDocumentByKey(name.Abbreviated, False)
    Set doc = db.CreateDocument
    Call vdoc.CopyAllItems(doc, True)
    Call ws.EditDocument(False, doc)
    End If
    End Sub
    [/codebox]

    на форме есть кнопа Сохранить, по которой выполняется код
    [codebox]
    Sub Click(Source As Button)
    ...
    Set s = New NotesSession
    Set workspace = New NotesUIWorkspace
    Set uid = workspace.CurrentDocument
    Set uidoc = uid.Document

    Set db = s.CurrentDatabase
    Set tddb = s.GetDatabase("domino", "names")
    Set view = tddb.GetView("ForHomeBase")
    Set nam = s.CreateName(s.UserName)
    If nam.Abbreviated <>"" Then
    Set vdoc = view.GetDocumentByKey(nam.Abbreviated, False)
    'ради эксперимента пытаюсь изменить доступное для пользователя поле в его контакте, но изменения не сохраняются
    Call vdoc.ReplaceItemValue("OfficeCity", "55555")
    ' вобще предполагается что то вроде Call uidoc.CopyAllItems(vdoc, true)
    ...
    Call vdoc.Save(True, False)
    End If
    Call uid.Close(True)

    End Sub[/codebox]

    подскажите пожалуйста как лучше изменить код? :)
     
  9. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    SaveOptions = 1! Иначе Лотус сохранять не будет хоть под дулом автомата
     
  10. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    Если "по кнопке открывается форма на редактирвоание", то тогда вместо
    Код (Text):
    Call ws.EditDocument(False, doc)
    надо вообще-то
    Код (Text):
    Call ws.EditDocument(True, doc)
     
Загрузка...

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