• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы Antigo
  • Дата начала
A

Antigo

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

savl

Lotus Team
28.10.2011
2 597
310
BIT
179
Без пересоздания можно обойтись, но зависит от параметров папки, так что далеко не всегда.
С такой проблемой сталкивались все, да и на форуме было много обсуждений.

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

Antigo

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

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

Папка не меняется, просто нужно исправить небольшую ошибку, и чтоб изменения пронаследовались в личные папки пользователей.
Папка используется для показа списка отобранных документов в ws.picklistcollection
 

savl

Lotus Team
28.10.2011
2 597
310
BIT
179
В любом случае папку надо будет пересоздавать
Для разового удаления можно сделать агента, повесить его на кнопку.

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

Людям надо поморгать!
Lotus Team
06.12.2011
616
223
BIT
9
Код:
@UpdateViewDesign("viewPersonal";"viewPersonalTemplate");
@Prompt([Ok];"";"Перезайдите в БД");
@Command([CloseWindow]);
@All

Не?
 

savl

Lotus Team
28.10.2011
2 597
310
BIT
179
Domino-Designer
Прикольно, не знал о ней.
Действительно пишут, что работает.
 
A

Antigo

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

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

Lotus Team
28.10.2011
2 597
310
BIT
179
Antigo
Про обновление: Постом вышке предложили более простое решение, попробуй его.

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!