EnableFolder

Тема в разделе "Lotus - Программирование", создана пользователем Zeka, 11 июл 2012.

  1. Zeka

    Zeka Well-Known Member

    Регистрация:
    1 сен 2009
    Сообщения:
    219
    Симпатии:
    0
    Есть SPOFU фолдер - "A".
    Есть кнопка которая должна этот приватный фолдер инициализировать:
    Код (Text):
    Sub Click(Source As Button)
    Dim session As New NotesSession
    Dim db As NotesDatabase
    Set db = session.CurrentDatabase   
    Call db.EnableFolder("A")      
    End Sub
    При нажатии кнопки получаю - "Can't move document to shared Private On First Use folder (A)".
    Что за ерунда? Какой ещё документ? Права у меня все есть. База пустая, только создана.
    Кто-нибудь сталкивался?
     
  2. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Вроде бы, такие папки можно только вручную инициализировать.
     
  3. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Сталкивался с тем, что пока не откроешь в клиенте SPOFU представление/папку, из скрипта к ним не достучишься.
     
  4. Zeka

    Zeka Well-Known Member

    Регистрация:
    1 сен 2009
    Сообщения:
    219
    Симпатии:
    0
    Есть. Manager и все галочки.

    А зачем тогда этот метод - db.EnableFolder()?

    Мне ж как раз по описанию и надо инициализировать этот самый приватный фолдер перед тем как положить в него результаты FTSearch.
     
  5. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
  6. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Судя по всему — для создания неприватной папки перед вызовом doc.PutInFolder.
    Можно попробовать кодом найти ноту SPOFU папки, создать её копию и вручную прописать нужные поля, в частности $Readers. Сам не пробовал.

    Добавлено
    Если у пользователя в ACL не стояло разрешения на создание SPOFU, то при открытии в уи создаётся SDPOFU. Последующие попытки достучаться до неё из кода вызовут ошибку. Чтобы её снести, нужно удалить ярлык базы из рабочей области.
     
  7. Zeka

    Zeka Well-Known Member

    Регистрация:
    1 сен 2009
    Сообщения:
    219
    Симпатии:
    0
    Спасибо, NickProstoNick, но это сработает только в Ноутсах. Мне же надо в xPages. А xp:viewPanel инициализировать SPOFU фолдер не умеет...


    Добавлено:
    Ааааа.... Хочу в отпуск!!!!
     
  8. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Видел твою тему в пейджах... у меня вообще ничего там не получилось :)

    Добавлено: а если действительно попробовать создать фолдер кодом?
    Думаю через DXL
     
  9. Zeka

    Zeka Well-Known Member

    Регистрация:
    1 сен 2009
    Сообщения:
    219
    Симпатии:
    0
    Есть функция database.createView(). Но нет database.createFolder()!!! Где-то мелькало, что надо сделать вью, а потом убрать у него SelectionFormula. Попробывал. Нифига. Вью, как был вьювом, так им и остался. Потом попробую ещё покопать в этом направлении. А сейчас решил попробывать через DXL.

    До сих пор с DXL не работал. Но попробовал...

    Сделал экспорт SPOFU фолдера. Получил стринг:
    Код (Text):
    <?xml version='1.0'?> <!DOCTYPE folder SYSTEM 'xmlschemas/domino_8_5_2.dtd'>
    <folder name='a' xmlns='http://www.lotus.com/dxl' version='8.5' maintenanceversion='2.0' replicaid='C2257A3900283295' showinmenu='false'
    noreplace='true' privatefirstuse='true' publicaccess='false' designerversion='8.5.2' unreadmarks='none'
    onopengoto='lastopened' onrefresh='displayindicator' headers='beveled' opencollapsed='false' showresponsehierarchy='true'
    showmargin='true' shrinkrows='false' extendlastcolumn='false' showhierarchies='false' unreadcolor='black'
    rowlinecount='1'
    headerlinecount='1' rowspacing='1' bgcolor='white' totalscolor='black' headerbgcolor='white' boldunreadrows='false' evaluateactions='false'
    allownewdocuments='false' allowcustomizations='true' hidemarginborder='false' marginwidth='0px'
    marginbgcolor='white' uniquekeys='false' noserverindex='true' initialbuildrestricted='false' noemptycategories='false'>
    <noteinfo noteid='192' unid='7264956A902737F3C2257A3900286A43' sequence='3'>
    <created>
    <datetime dst='true'>20120712T102126,43+03</datetime>
    </created>
    <modified>
    <datetime dst='true'>20120712T102130,74+03</datetime>
    </modified>
    <revised>
    <datetime dst='true'>20120712T102130,73+03</datetime>
    </revised>
    <lastaccessed>
    <datetime dst='true'>20120712T102133,82+03</datetime>
    </lastaccessed>
    <addedtofile>
    <datetime dst='true'>20120712T102126,43+03</datetime>
    </addedtofile>
    </noteinfo>
    <updatedby>
    <name>CN=XXX/O=Compidea/C=LT</name>
    </updatedby>
    <wassignedby>
    <name>CN=XXX/O=Compidea/C=LT</name>
    </wassignedby>
    <column hidedetailrows='false' itemname='$0' width='10' resizable='true' separatemultiplevalues='false' sortnoaccent='true' sortnocase='true' showaslinks='false'>
    <columnheader title='#'>
    <font size='9pt' style='bold' />
    </columnheader>
    <code event='value'>
    <formula>@DocNumber</formula>
    </code>
    </column>
    <item name='$Name' sign='true'>
    <text>a</text>
    </item>
    </folder>
    Сделал импорт - как и задумывалось, получил в базе второй SPOFU фолдер.
    Сделал экспорт приватного фолдера.
    Получил стринг:
    Код (Text):
    <?xml version='1.0'?> <!DOCTYPE folder SYSTEM 'xmlschemas/domino_8_5_2.dtd'>
    <folder name='a' xmlns='http://www.lotus.com/dxl' version='8.5' maintenanceversion='2.0' replicaid='C2257A3900283295' showinmenu='false'
    noreplace='true' privatefirstuse='true' publicaccess='false' designerversion='8.5.2' private='true'
    unreadmarks='none' onopengoto='lastopened' onrefresh='displayindicator' headers='beveled' opencollapsed='false' showresponsehierarchy='true'
    showmargin='true' shrinkrows='false' extendlastcolumn='false' showhierarchies='false' unreadcolor='black'
    rowlinecount='1'
    headerlinecount='1' rowspacing='1' bgcolor='white' totalscolor='black' headerbgcolor='white' boldunreadrows='false' evaluateactions='false'
    allownewdocuments='false' allowcustomizations='true' hidemarginborder='false' marginwidth='0px'
    marginbgcolor='white' uniquekeys='false' formatnoteid='7264956A902737F3C2257A3900286A43'>
    <noteinfo noteid='1c6' unid='28EF1B97A1C1E1F0C2257A39002B57C8' sequence='1'>
    <created>
    <datetime dst='true'>20120712T105325,20+03</datetime>
    </created>
    <modified>
    <datetime dst='true'>20120712T105325,22+03</datetime>
    </modified>
    <revised>
    <datetime dst='true'>20120712T105325,21+03</datetime>
    </revised>
    <lastaccessed>
    <datetime dst='true'>20120712T105325,28+03</datetime>
    </lastaccessed>
    <addedtofile>
    <datetime dst='true'>20120712T105325,22+03</datetime>
    </addedtofile>
    </noteinfo>
    <updatedby>
    <name>CN=XXX/O=Compidea/C=LT</name>
    </updatedby>
    <wassignedby>
    <name>CN=XXX/O=Compidea/C=LT</name>
    </wassignedby>
    <column hidedetailrows='false' itemname='$0' width='10' resizable='true' separatemultiplevalues='false' sortnoaccent='true' sortnocase='true' showaslinks='false'>
    <columnheader title='#'>
    <font size='9pt' style='bold' />
    </columnheader>
    <code event='value'>
    <formula>@DocNumber</formula>
    </code>
    </column>
    <item name='$Readers' sign='true' readers='true'>
    <text>CN=XXX/O=Compidea/C=LT</text>
    </item>
    <item name='$Authors' sign='true' authors='true'>
    <text>CN=XXX/O=Compidea/C=LT</text>
    </item>
    <item name='$Name' sign='true'>
    <text>a</text>
    </item>
    <item name='$ViewInheritedFrom'>
    <text>a</text>
    </item>
    </folder>
    Приватный фолдер удаляю и пытаюсь сделать импорт DXL.
    Получаю:
    Код (Text):
    12.07.2012 11:23:18  HTTP JVM: NotesException: DXL importer operation failed
    12.07.2012 11:23:18  HTTP JVM:  at lotus.domino.local.DxlImporter.importDxl(Unknown Source)
    12.07.2012 11:23:18  HTTP JVM:  at utils.Util.create(Util.java:18)
    12.07.2012 11:23:18  HTTP JVM:  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    12.07.2012 11:23:18  HTTP JVM:  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:48)
    12.07.2012 11:23:18  HTTP JVM:  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
    12.07.2012 11:23:18  HTTP JVM:  at java.lang.reflect.Method.invoke(Method.java:600)......
    any ideas?
     
  10. alexas

    alexas Well-Known Member

    Регистрация:
    10 июн 2009
    Сообщения:
    215
    Симпатии:
    0
    Приватный фолдер можно инициализировать только открыв в UI - это 100%
    Например, в Вашей кнопке - @Command([OpenView];"A"); @Command([CloseWindow])
    Но фолдер "моргнет".
    Или, до применения фолдера, открыть его в маленьком фрейме, типа скрытом, с размерами не меньше 2х2 пикселя.
    Если SPOFU несколько - удобно этот фрейм использовать и для их инициализации.
     
  11. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Все усложняется тем, что это все надо в xpages
     
  12. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Стесняюсь спросить... если уж пошел такой изврат... может имеет смысл озвучить цель, которая преследуется?
    Может есть какой-то другой путь?
     
  13. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    если надо открывать пользователю его собственный фолдер...
    Ну как вариант - создавать обычные фолдеры и именовать их например по Abbreviate имени пользователя (убрать/заменить "/" )
    Ну или что-то в этом роде... не знаю
     
  14. Zeka

    Zeka Well-Known Member

    Регистрация:
    1 сен 2009
    Сообщения:
    219
    Симпатии:
    0
    Цель - юзер делает поиск, результаты складываются в фолдер.
    Далее Юзер может:
    1 - выполнить поиск по другим критериям и результат добавить к ранее найденым.
    2 - начать новый поиск.
    3 - искать в ранее найденых - откинуть документы не сооветствующие новым критериям.
    Можно, но это тоже как-то убого...
     
  15. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Ну либо убого... либо с геморроем :(
     
  16. RAJ

    RAJ Well-Known Member

    Регистрация:
    17 янв 2007
    Сообщения:
    440
    Симпатии:
    0
    как идея:
    1. Имеем одну ОБЩУЮ папку "SearchResult"
    2. По найденным докам создавать документы-линки на документ+в реадерс поле прописывать автора запроса

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

    как-то так
     
  17. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Думаю самый достойный вариант
     
  18. Zeka

    Zeka Well-Known Member

    Регистрация:
    1 сен 2009
    Сообщения:
    219
    Симпатии:
    0
    Вообщем, из 4-ёх вариантов (сделать убого, сделать с гемороем, просто уволиться и вариантом предолженым RAJ) пока выбрал этот:
    Вроде работает.
    Всем спасибо :(
     

Поделиться этой страницей