Мелкие Вопросы Rtfm

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

alexas1

Green Team
10.04.2014
1 202
225
BIT
41
На вскидку, исходя из того, как ты это представляешь, рисуешь вид с нужными доками и категорией ReadyMember.
Берёшь эту категорию по нужному юзеру навигатором и строишь коллекцию.
 
  • Нравится
Реакции: serko
S

serko

Если в DatabaseScript запретить ставить документ на редактирование (ws.currentdocument.editmode = true), то получается, программно я тоже не смогу изменить данные в документе? например, чтобы поменять статус документа, я ставлю док на редактирование, меняю поле, сохраняю и потом ставлю в режим чтения обратно.
 
S

serko

как выглядит процесс?
мну не нра изменение главного дока по "каждому чиху"
Ну, я решил так сделать...
Например, документ на регистрации.
регистратор нажимает "Зарегистрировать", выбирает нумератор, а затем...
генерируется номер дока, в поле главного дока ставится номер, в поле главного дока все указанные регистраторы заменяются зарегистрировавшим документ, а поле главного дока в поле ReadyMember добавляю текущего пользователя(т.к. после нажатия на кнопку он принял участие в обработке документа и для отображения поиска это поле нужно, наверно), в дочерний док ставится ФИО и нотес-имя регистратора, а также информация, когда документ был зарегистрирован, сохраняю все это дело...
Я решил сделать поиск таким:
Сначала нахожу все документы по критериям (включая всех пользователей), а затем формирую 2 коллекцию путем копирования в нее только тех доков, где автор документа совпадает с текущим и поле ReadyMember содержит имя текущего пользователя. Вторая коллекция получается результирующей, только меня смущает этап отсеивания. Боюсь, он громоздкий больно
 
Последнее редактирование:
S

serko

Это UI.
Бери Doc (а не UIdoc) и делай что хошь.
Хм. Хотите сказать, что если пользователь держит в данный момент открытый документ, то для замены значения поля мне достаточно doc.replaceitemvalue прописать и doc.Save ? Пользователь увидит изменения в документе?
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 980
611
BIT
427
я не вижу необходимости менять основной док, для его видимости добавляются все участники процесса сразу
и каждый участник создает свои доки (по процессу), кот ссылаются на основной
 
  • Нравится
Реакции: serko

alexas1

Green Team
10.04.2014
1 202
225
BIT
41
Хм. Хотите сказать, что если пользователь держит в данный момент открытый документ, то для замены значения поля мне достаточно doc.replaceitemvalue прописать и doc.Save ? Пользователь увидит изменения в документе?
Хочу сказать, что в бэкграунде можно изменять док полюбэ, и не важно, находится он щща на редактировании у кого-то или нет.
Для разруливания таких ситуаций (оббеспечения совместной работы с одним доком) существуют блокировки (флажки такие). Способ совсем не идеальный и не на все случаи жизни.
Можно совсем не давать юзеру редактировать САМ док в UI: работать с копией и писать изменения (или ВСЁ, если копия точная) в док в базе. Возможно с проверкой "а не изменился ли док во время редактирования" и реагировать соответственно.
Подходы от придуманной логики зависят.
 
  • Нравится
Реакции: serko
S

serko

я не вижу необходимости менять основной док, для его видимости добавляются все участники процесса сразу
и каждый участник создает свои доки (по процессу), кот ссылаются на основной
не знаю к кому обращаться, но на форуме небольшой баг заметил. Захожу на 12 страницу этого топика. Пишу сообщение на 12 странице. Отправляю. В итоге обновляется список сообщений (прогружается из последней 14 страницы), а текущая страница указана 12 (старая).
 

alexas1

Green Team
10.04.2014
1 202
225
BIT
41
doc.replaceitemvalue прописать и doc.Save ? Пользователь увидит изменения в документе?
Ничо пользователь не увидит, а может получить предупреждение при сохранении, что док был изменен и предложение сохранить док как "конфликтный документ". Дальше танцы с разруливанием конфликтов.
 
S

serko

Хочу сказать, что в бэкграунде можно изменять док полюбэ, и не важно, находится он щща на редактировании у кого-то или нет.
Для разруливания таких ситуаций (оббеспечения совместной работы с одним доком) существуют блокировки (флажки такие). Способ совсем не идеальный и не на все случаи жизни.
Можно совсем не давать юзеру редактировать САМ док в UI: работать с копией и писать изменения (или ВСЁ, если копия точная) в док в базе. Возможно с проверкой "а не изменился ли док во время редактирования" и реагировать соответственно.
Подходы от придуманной логики зависят.
Только что сделать кнопку, поместил в к остальным Actions. Запускаю. Поле меняется только когда документ на редактировании. Версия 8.5
Код:
Dim ws As New NotesUIWorkspace
Call ws.CurrentDocument.Document.ReplaceItemValue("DocView", "1")
Call ws.CurrentDocument.Document.Save(True,True)

====

Каюсь. Изменения вносит, но у пользователя не обновились просто поля
Не получается обновить поля, пока документ на чтении. Пробовал через notesuidocument и notesuiworkspace. Ладно. Поиграюсь с DatabaseScript
 
Последнее редактирование:

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 980
611
BIT
427
замысленная визуализация, в классической нотусне - головняк
изучайте xPages
 
  • Нравится
Реакции: serko

alexas1

Green Team
10.04.2014
1 202
225
BIT
41
Есть такая штука: notesUIDocument .Reload
Иногда может помочь.
Может быть на таймере.
Но что
замысленная визуализация, в классической нотусне - головняк
- эт точно.
Более-менее риалтаймно может быть только View. И то не всегда.
[DOUBLEPOST=1429796573,1429796277][/DOUBLEPOST]
Там тоже умудряются брать сам док (или даже несколько) на редактирование и получать конфликты (причём этому "учит" сама IBM ;))
 
  • Нравится
Реакции: serko
S

serko

А можно ли как-то запретить "трогать" файл (удалять/добавлять/изменять) в richtext поле, пока не будет исполнено конкретное условие?
 

alexas1

Green Team
10.04.2014
1 202
225
BIT
41
А можно ли как-то запретить "трогать" файл (удалять/добавлять/изменять) в richtext поле, пока не будет исполнено конкретное условие?
А что мешает сделать RTF computed и изменять его только программно (с кнопки), раз оно только для аттачей? Там и проверки делать.
 
  • Нравится
Реакции: serko
S

serko

Создал View. Прописал формулу (View Selection): SELECT Form = "IncomingMail" & DocAuthorNotes = @V3UserName
Создал документ. Зашел за другого юзера - создал документ. Удивился. Что за user1, что за user2 везде оба дока видны. Поля заполнены корректно. Вырезал формулу, заново вставил. Заработало нормально(виден только док, который создал пользователь), но неприятный след оставило. Это как-то можно заранее пресечь?
 
S

serko

В левом списке(список View) есть папка "Search".
После вызова поиска пытаюсь перейти к ней без открытия нового окна, но в итоге вообще ничего не происходит
Код:
Dim uidb As NotesUIDatabase
Set uidb = ws.Currentdatabase
Call uidb.Openview("Search", , False)
 

alexas1

Green Team
10.04.2014
1 202
225
BIT
41
Создал View. Прописал формулу (View Selection): SELECT Form = "IncomingMail" & DocAuthorNotes = @V3UserName
Создал документ. Зашел за другого юзера - создал документ. Удивился. Что за user1, что за user2 везде оба дока видны. Поля заполнены корректно. Вырезал формулу, заново вставил. Заработало нормально(виден только док, который создал пользователь), но неприятный след оставило. Это как-то можно заранее пресечь?
есть у меня подозрение, что въюшка не приватная. Я прав?
 
  • Нравится
Реакции: serko
Мы в соцсетях:

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