При попытке удалить ACLentry пишет ошибку 4005, которая не имеет описания.

Автор Тема: При попытке удалить ACLentry пишет ошибку 4005, которая не имеет описания.  (Прочитано 13827 раз)

Sergey_st85

  • Старший специалист
  • ****
  • Сообщений: 181
  • Только вперед!
    • Просмотр профиля
    • Личный сайт.
Что делать? сервак указан как манагер в базе, я - тоже. Вылетает сразу же после попытки удаления. Думал, что на Defaut попадаю - нифига.

Задача - затереть ACL.

Set newACLentry=newACL.GetFirstEntry
      Set newACLentry=newACL.GetNextEntry(newACLentry) ' Пропускаем Default.
      While Not newACLentry Is Nothing
         Set ACLentryToDel=newACLentry
         Set newACLentry=newACL.GetNextEntry(newACLentry)
         Call ACLentryToDel.Remove
      Wend
      Call newACL.Save()

Zinych

  • Специалист
  • ***
  • Сообщений: 71
    • Просмотр профиля
а подробнее ошибка как звучит?
код вроде рабочий
агент запускается вручную или на сервере?

Sergey_st85

  • Старший специалист
  • ****
  • Сообщений: 181
  • Только вперед!
    • Просмотр профиля
    • Личный сайт.
Пускаю из дизайнера, руками.

Как я и писал: в лотусе описания данной ошибки нет. Она может возникать, к примеру, если копирование базы делаем в существующий файл.

ВОт, вывел агентом:

 Access control list must contain at least one Manager (wfsAgents2010_mopKPF_kuban.nsf), линия 135, код 4005

Но там ЕСТЬ манагер! Я манагер. Сервак манагер. Админы манагеры...

Zinych

  • Специалист
  • ***
  • Сообщений: 71
    • Просмотр профиля
я так понимаю в процессе работы агента удаляются все записи ACL, а default по всей видимости не manager, поэтому сохранить ACL он не может.

Sergey_st85

  • Старший специалист
  • ****
  • Сообщений: 181
  • Только вперед!
    • Просмотр профиля
    • Личный сайт.
Да не на сохранении ошибка воникает, а на УДАЛЕНИИ записи. Причем самой первой. И даже если я пропускаю 1-ю - и беру 2-ю -- он и 2-ю не может удалить.

Zinych

  • Специалист
  • ***
  • Сообщений: 71
    • Просмотр профиля
тогда удаляемая запись является последним манагером в этой БД,
попробуйте поставить default манагером, если вы оставляете его одного

Sergey_st85

  • Старший специалист
  • ****
  • Сообщений: 181
  • Только вперед!
    • Просмотр профиля
    • Личный сайт.
Вфяснил. Все записи записаны в полном формате записи записи, а не в кратком как "Воробьев В. А./Pens" например.

Вот код, который выставит манагером сервак и дефаулт в ноакесс только с репликацией правом.

Set ACL=db.ACL
      Set newACL=newdb.ACL
      
      Set newACLentry=newACL.GetFirstEntry
      While Not newACLentry Is Nothing
         Set ACLentryToDel=newACLentry
         Set newACLentry=newACL.GetNextEntry(newACLentry)
         If Ucase(ACLentryToDel.Name)<>Ucase("CN=MopSrv01/O=IFDK") Then
            If Instr(Ucase(ACLentryToDel.Name),Ucase("DEFAULT"))=0 Then
               Call ACLentryToDel.Remove
            Else
               ACLentryToDel.CanCreateDocuments=False
               ACLentryToDel.CanCreateLSOrJavaAgent=False
               ACLentryToDel.CanCreatePersonalAgent=False
               ACLentryToDel.CanCreatePersonalFolder=False
               ACLentryToDel.CanCreateSharedFolder=False
               ACLentryToDel.CanDeleteDocuments=False
               ACLentryToDel.CanReplicateOrCopyDocuments=True
               ACLentryToDel.IsAdminReaderAuthor=False
               ACLentryToDel.IsAdminServer=False
               ACLentryToDel.IsGroup=False
               ACLentryToDel.IsPerson=False
               ACLentryToDel.IsPublicReader=False
               ACLentryToDel.IsPublicWriter=False
               ACLentryToDel.IsServer=False
               ACLentryToDel.Level=0
               Forall xxx In ACLentryToDel.Roles
                  If xxx<>"" Then Call ACLentryToDel.EnableRole(xxx)
               End Forall
            End If
         Else
            ACLentryToDel.CanCreateDocuments=True
            ACLentryToDel.CanCreateLSOrJavaAgent=True
            ACLentryToDel.CanCreatePersonalAgent=True
            ACLentryToDel.CanCreatePersonalFolder=True
            ACLentryToDel.CanCreateSharedFolder=True
            ACLentryToDel.CanDeleteDocuments=True
            ACLentryToDel.CanReplicateOrCopyDocuments=True
            ACLentryToDel.IsAdminReaderAuthor=True
            ACLentryToDel.IsAdminServer=True
            ACLentryToDel.IsGroup=False
            ACLentryToDel.IsPerson=False
            ACLentryToDel.IsPublicReader=True
            ACLentryToDel.IsPublicWriter=True
            ACLentryToDel.IsServer=True
            ACLentryToDel.Level=6
            Forall xxx In ACLentryToDel.Roles
               Call ACLentryToDel.EnableRole(xxx)
            End Forall
         End If
      Wend
      Set newACLentry=newACL.CreateACLEntry("Anonymous",0)
      newACLentry.CanReplicateOrCopyDocuments=True
      Call newACL.Save()

Sergey_st85

  • Старший специалист
  • ****
  • Сообщений: 181
  • Только вперед!
    • Просмотр профиля
    • Личный сайт.
И тут же другой вопрос: че за шняга:
newACLentry.EnableRole
newACLentry.DisableRole

дизаблю - в асл не увижу, или что?

Zinych

  • Специалист
  • ***
  • Сообщений: 71
    • Просмотр профиля
это функции,
ставят и снимают галочки соответственно с ролей:
call newACLentry.EnableRole("роль")

Sergey_st85

  • Старший специалист
  • ****
  • Сообщений: 181
  • Только вперед!
    • Просмотр профиля
    • Личный сайт.
Но ведь нет галочек в ACL, если ее в GUI смотреть. Есть запись. Есть роли. Усё. Нет галочки ДЛЯ ЗАПИСИ...

Zinych

  • Специалист
  • ***
  • Сообщений: 71
    • Просмотр профиля
у роли же есть куда галочку поставить

Sergey_st85

  • Старший специалист
  • ****
  • Сообщений: 181
  • Только вперед!
    • Просмотр профиля
    • Личный сайт.
ПРОШУ ПРОЩЕНИЯ.

Протупил.

Zinych

  • Специалист
  • ***
  • Сообщений: 71
    • Просмотр профиля