Вопрос По Папкам

Antigo

Active Member
16.02.2012
40
0
#1
Всем привет!
Вот такой вопрос:
Есть у меня такая папка "Общая, личная при открытии". То есть при первом использовании этой папки создается ее личная копия. Все бы вроде хорошо, работает, документы туда попадают, много пользователей ей пользуются, у каждого, соответственно, своя копия. Но понадобилось мне изменить дизайн этой папки. Например, добавить столбец. И нужно мне, чтобы у всех пользователей этот столбец в их личные копии папки пронаследовался. Но не тут то было. Дизайн не наследуется, если только эту папке не пересоздать.
Вот что написано в справкеЖ "После создания пользователем личной копии представление или папка не может наследовать изменения структуры, как остальное приложение. Для обновления изменений структуры общего или личного представления следует удалить личную копию представления и заменить ее обновленным представлением."
Как быть? кто-то сталкивался с такой проблемой? Как-то можно обойтись без пересоздания личной копии?
 

savl

Well-Known Member
Lotus team
28.10.2011
2 116
157
32
#2
Без пересоздания можно обойтись, но зависит от параметров папки, так что далеко не всегда.
С такой проблемой сталкивались все, да и на форуме было много обсуждений.

Я бы не создавал папки, которые должны часто меняться. В чем смысл?
Отчетную часть строить? Да проще в Excel по параметрам выгрузить.
 

Antigo

Active Member
16.02.2012
40
0
#3
Без пересоздания можно обойтись, но зависит от параметров папки, так что далеко не всегда.
С такой проблемой сталкивались все, да и на форуме было много обсуждений.

Я бы не создавал папки, которые должны часто меняться. В чем смысл?
Отчетную часть строить? Да проще в Excel по параметрам выгрузить.
Папка не меняется, просто нужно исправить небольшую ошибку, и чтоб изменения пронаследовались в личные папки пользователей.
Папка используется для показа списка отобранных документов в ws.picklistcollection
 

savl

Well-Known Member
Lotus team
28.10.2011
2 116
157
32
#4
В любом случае папку надо будет пересоздавать
Для разового удаления можно сделать агента, повесить его на кнопку.

1. Агент получает папку
2. Собирает все документы из этой папки в коллекцию
3. Удаляет эту папку
4. Открывает её же (но новую уже) и тут же закрывает (чтобы она создалась)
5. Помещает коллекцию документов в эту папку.

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

Открыть и закрыть папку можно так, вариант для Windows:
Код:
' В (Declarations)
Declare Function NEMGetCurrentSubprogramWindow Lib "nnotesws.dll" () As Long
Declare Function NEMStopSubprogramWindow Lib "nnotesws.dll" (ByVal wHandle As Long) As Integer

' В коде агента
Call uidb.OpenView( <Имя папки>,"",True )
wHandle = NEMGetCurrentSubprogramWindow
Call NEMStopSubprogramWindow(wHandle)
 

Domino-Designer

Well-Known Member
Lotus team
06.12.2011
394
100
#5
Код:
@UpdateViewDesign("viewPersonal";"viewPersonalTemplate");
@Prompt([Ok];"";"Перезайдите в БД");
@Command([CloseWindow]);
@All
Не?
 

savl

Well-Known Member
Lotus team
28.10.2011
2 116
157
32
#6
Domino-Designer
Прикольно, не знал о ней.
Действительно пишут, что работает.
 

Antigo

Active Member
16.02.2012
40
0
#7
В любом случае папку надо будет пересоздавать
Для разового удаления можно сделать агента, повесить его на кнопку.

1. Агент получает папку
2. Собирает все документы из этой папки в коллекцию
3. Удаляет эту папку
4. Открывает её же (но новую уже) и тут же закрывает (чтобы она создалась)
5. Помещает коллекцию документов в эту папку.

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

Открыть и закрыть папку можно так, вариант для Windows:
Код:
' В (Declarations)
Declare Function NEMGetCurrentSubprogramWindow Lib "nnotesws.dll" () As Long
Declare Function NEMStopSubprogramWindow Lib "nnotesws.dll" (ByVal wHandle As Long) As Integer

' В коде агента
Call uidb.OpenView( <Имя папки>,"",True )
wHandle = NEMGetCurrentSubprogramWindow
Call NEMStopSubprogramWindow(wHandle)
у меня каждый раз при нажатии на кнопку собирается коллекция документов и кидается в папку.
при нажатии на кнопку, я пытаюсь взять папку по имени через db.getview(<имя папки>). Если папку не нахожу, то открываю ее первый раз в БД через ws.OpenDatabase, закрываю БД вывожу сообщение, что произошла инициализация папки и нужно еще раз нажать кнопку. Ну а дальше папка уже создана и я собирю документы и кидаю в папку. затем вывожу ее для пользователя через picklistcollection, затем удаляю все документы из нее.
Можно ли как-то открыть и закрыть папку первый раз незаметно для пользователя для любой ОС?
 

savl

Well-Known Member
Lotus team
28.10.2011
2 116
157
32
#8
Antigo
Про обновление: Постом вышке предложили более простое решение, попробуй его.

А про первое обращение к папке:
незаметно открыть это как сказать. либо во фрейме размером 2 пикселя, либо моргнет, если на LS как я предложил.