Войти
 
 
   
 
  
Новости Notes.ру Библиотека Биржа труда Вопрос - ответ Форум Регистрация Поиск О проекте
Разделы
О Notes
Советы
Шаблоны и примеры
Литература
Презентации
 
Всё о задаче AdminP. Часть вторая   Во второй части мы завершаем рассмотрение AdminP. В ней рассмотрены запросы междоменного администрирования и способы управления функциями AdminP с помощью настроек документа сервера, команд консоли сервера, файла Notes.ini и интервалов очистки базы данных. В этой статье предполагается, что вы опытный администратор Domino и прочитали первую часть
О Notes Читать статью
 
Всё о задаче AdminP. Proxy-действия в R5 и Domino 6   Приложение к статье об административном процессе
О Notes Читать статью
 
Всё о задаче AdminP. Часть первая   Перевод классической статьи 2003-его года о задаче административного процесса (AdminP). Очень полезна для понимания работы механизма этой задачи. В первой части статьи описаны компоненты задачи AdminP, как они работают, и как их использование помогает сделать работу администратора Domino проще. Задача AdminP (сакращённо от Administration Process, Административный процесс) работает с базой административных запросов (Administration Requests, admin4.nsf)
О Notes Читать статью
 


Советы

Главная   Библиотека   Советы

Как удалить из базы приватные представления, хранящиеся на сервере

Хранение на сервере SPOFU-представлений (общие представления, которые становятся личными при первом использовании) для каждого пользователя влечет за собой в большинстве случаев неоправданное увеличение объема базы. Сервер плохо перестраивает индексы таких представлений. Как удалить представления пользователей, которые (представления) стали не нужны?

Решение от Дмитрия Ковалева

Если private виды уже существуют, то код, удаляющий виды, следует разместить в обработке события закрытия базы пользователем.

Пример:
Sub Deleteprivateviews
Dim s As New NotesSession
Dim excerptdb As NotesDatabase
Dim doc As NotesDocument
Dim db As NotesDatabase
Dim view As NotesView
Set db = s.CurrentDatabase
nameslist = ... ' массив из частных представлений и папок, которые надо удалить
If Cstr(nameslist (0)) = "" Then Exit Sub

Forall v In db.Views
Set doc = db.GetDocumentByUnid (v.UniversalID)
Forall n In nameslist
If v.Name=Cstr(n) And Not(v.IsDefaultView) Then
If doc.GetItemValue ("$Readers") (0) <>"" And doc.GetItemValue ("$Readers") (0) <>s.UserName Then v.Remove
End If
End Forall
End Forall
End Sub


Если private виды еще не существуют, то в поле $Readers в этом представлении при создании ее надо вставить вторым значением имя сервера в каноническом формате (после имени пользователя), и тогда вышеприведенный код спокойно можно запускать серверным агентом на сервере. Удалить все private виды вообще

Дополнение от Ильи Клецера

Нет необходимости в модификации поля $Readers.

Пример:
Dim db As notesdatabase
Set db=ses.currentdatabase
Forall v In db.views
Dim doc As notesdocument
Set doc = db.GetDocumentByUnid (v.UniversalID)
If v.name = "Folder" And doc.GetItemValue ("$Readers") (0) <>"" Then
Print doc.GetItemValue ("$Readers") (0)
Call v.remove
End If
End Forall

Приведенный код подписывается от имени _сервера_, в логе видны имена всех пользователей, чьи папки созданы, папки благополучно удаляются
 
  Опубликовано — 04/14/2003 |    


Мероприятия
Пресс-релизы
Биржа труда
Последнее на форуме
 
А так же:
Как удалить профиль?
16.04.2016 00:08:51
Скопировать в буфер поле документа
24.05.2015 08:55:52
Импорт DXL-описания документов в Lotus Domino. Одноимённые поля
16.04.2015 16:49:58
 
© LOGOSPHERE.RU