Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе
Такое тоже есть. Но это не замена; папки чаще используют для возможности полнотекстового поиска.а я ушел на встроенное представление + сингл категории по @username
А можно этот момент поподробнее?Программно переоткрываю БД
Тут речь про фолдеры или вьюшки?Я с приватных вьюх ушёл на шаредные из-за того, что их можно создавать программно. Есть папка-шаблон (с ключиком), на её основе с помощью EnableFolder создаю папку
Я папки создаю фоновым открытием-закрытием по 4005 ошибке.Я про папки писал.
Option Public
Option Declare
Use "libCachedObjects"
Use "libTracer"
Sub Initialize
registerModule "libFolderHelper"
End Sub
Public Sub putCollectionToFolder( coll As NotesDocumentCollection, argTargetFolderName As String )
On Error GoTo catch
If coll Is Nothing Then
GoTo finally
End If
If coll.Getfirstdocument() Is Nothing Then
GoTo finally
End If
On Error GoTo catchPutAllInFolderFailed
Call coll.PutAllInFolder( argTargetFolderName, True )
On Error GoTo catch
logDebug "collection sent to folder in one step"
GoTo finally
catchPutAllInFolderFailed:
logWarn "error: " & CStr( Err ) & " on line " & CStr( Erl ) & " " & Error
Call putCollToFolderDocsInLoop( coll, argTargetFolderName )
Resume finally
catch:
throwException
finally:
End Sub
Private Sub createSPFUFolder( argFolderName As String )
On Error Resume Next
Dim ws As New NotesUIWorkspace
Dim uidb As NotesUIDatabase
Set uidb = ws.Currentdatabase
Call uidb.OpenView( argFolderName )
Dim uiview As NotesUIView
Set uiview = ws.CurrentView
If Not uiview Is Nothing Then
Call uiview.Close()
End If
End Sub
Public Sub cleanFolder( folderName As String )
On Error GoTo catch
On Error 4005 GoTo catchSPFUFolderDoesNotExist
Dim argFolder As NotesView
Set argFolder = getDB( DB_CURRENT ).getView( folderName )
Call argFolder.Allentries.Removeallfromfolder( folderName )
GoTo finally
catchSPFUFolderDoesNotExist:
Call createSPFUFolder( folderName )
Resume finally
catch:
throwException
finally:
End Sub
Private Sub putCollToFolderDocsInLoop( coll As NotesDocumentCollection, argTargetFolderName As String )
On Error GoTo catch
logDebug "putting docs in folder one-by-one"
Dim docNext As NotesDocument
Set docNext = coll.Getfirstdocument()
While Not docNext Is Nothing
Dim doc As NotesDocument
Set doc = docNext
Set docNext = coll.Getnextdocument( doc )
Call doc.Putinfolder( argTargetFolderName )
Wend
GoTo finally
catch:
Resume finally
finally:
End Sub
А самое главное, как бд переоткрыть?
'переоткрываем БД, чтобы вновь созданная папка отобразилась в слева в мини-вью "Мои папки"
Call nuiws.CurrentDatabase.Close()
Call nuiws.OpenDatabase(ndb.Server, ndb.FilePath, "", "", True)
MsgBox "Папка '" + sFolderName + "' успешно создана." + Chr(13) + "Если она не отобразилась, переоткройте БД.", 64, MSGT_PRODUCT
Провел следственный эксперимент - действительно работает! Спасибо, почему-то был уверен что так нельзя.Код:Call nuiws.CurrentDatabase.Close() Call nuiws.OpenDatabase(ndb.Server, ndb.FilePath, "", "", True)
А вот тут эксперимент показал, что достаточно Author + Create personal folders/views. Без галки создаются десктопные папки - вот они не подходят для работы.Чтобы это работало на клиенте, нужно давать пользователям доступ Editor и галку "Create SHARED folders/views".
Если не хочется - создавать папку на сервере, но тогда при создании папки из Basic-клиента и переоткрытии БД папка в аутлайне мигает, но сразу же исчезает, - нужно только вручную переоткрывать БД.
Руки чешутся попробовать. Интересно как себя индексер поведет. Ведь если индекс в папках обновлять не надо, то в видах все наоборот. Боюсь, что для большого количества пользователей совсем не вариант.VladSh сказал(а):для видов всё должно быть проще - EnableFolder там не нужен, достаточно скопировать элемент дизайна, переименовать и дать доступы.
индекс для всего обновляется, зависит от того - где (сервер/клиент)Ведь если индекс в папках обновлять не надо, то в видах все наоборот. Боюсь, что для большого количества пользователей совсем не вариант.
Это точная инфа? Там же нет формулы отбора?индекс для всего обновляется, зависит от того - где (сервер/клиент)
Отбор документов не должен обновляться (хотя что насчет удаленных документов?), а значения в колонках - хз.Это точная инфа? Там же нет формулы отбора?
Индекс для папок должен обновляться только в случае добавления или удаления документа в/из папки.
Такое тоже используем, но пара моментов напрягает:зависит от задачи - для пользователей возможно сделать категоризированную вьюшку (по его имени) и выводить её в форме, по имени пользователя (embedded view)
а отображение колонок (если док изменился)?Индекс для папок должен обновляться только в случае добавления или удаления документа в/из папки.
про то как можно сделать я недавно описывал...некоторые кнопки вместо документов во вьюшке видят форму, в которую она встроена
вполне устраивает Find, есть БД с 2лямами доков (вместе с респонсами), по основным 10ок тысяч - сотрудники не пользуют ничего кроме Ctrl-F во вьюшках (обычных) и не сортируют, им так удобнее- нет search this view
Вечный спор, что лучше самолёт или бульдозерсотрудники не пользуют ничего кроме Ctrl-F во вьюшках (обычных) и не сортируют, им так удобнее
зато снимает весь гимор с папками и приватными вьюшками
справедливо, но я так ниразу и не захотел использовать (в срезе индивидульно для юзера) ни папки, ни приватные вьюшки (эти ваще даже не пытался из-за известных особенностей)Вечный спор, что лучше самолёт или бульдозерОба имеют право на жизнь; выбрать что-нибудь можно только для конкретных условий и требований, а не как панацея.
Обучение наступательной кибербезопасности в игровой форме. Начать игру!