Вывод Deletion Stub во взгляд?

puks

Lotus team
03.02.2007
1 971
8
#1
Сразу уточню, что речь не идет о восстановлении удаленного документа в целом. Задача заклюается в следующем.

Есть в базе удаленные документы и можно без проблем найти нужный документ по его UNID и посмотреть дату его удаления при помощи NotesPeek или ScanEz. Но для этого этот софт должен быть установлен и люди должны уметь с ним работать.

Соответственно, появился вопрос: "Возможно ли сделать агента, чтобы пройтись по базе и преобразовать эти стабы в обычные документы с сохранением информации, которую стаб имеет?". Тогда эти документы можно было бы вывести в обычный взгляд.
 

puks

Lotus team
03.02.2007
1 971
8
#3
nvy
Ну это уже что-то для начала. Чего же Костя-то молчал, как партизан? :)
 

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 231
17
#4
эти доки можно найти через set col = db.alldocuments - по флагу is deleted
но на мой взгялд правильнее было бы создать событие на удалении и помещать их в свою "корзину" чем гемороиться с постфактом
 

puks

Lotus team
03.02.2007
1 971
8
#5
ToxaRat
Есть условия, кторые мы изменить не можем. Как-то, исходная база с удаленными документами и неизменным дизайном у заказчика. Мы можем (и хотим) все что угодно делать с полученной от заказчика базой. Особенно, хочется вывести все стабы, чтобы не было необходимости в другом софте типа пика. Фактически, от стаба надо только UNID, NoteID and DeletedTime.
 

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 231
17
#6
Есть условия, кторые мы изменить не можем. Как-то, исходная база с удаленными документами и неизменным дизайном у заказчика. Мы можем (и хотим) все что угодно делать с полученной от заказчика базой. Особенно, хочется вывести все стабы, чтобы не было необходимости в другом софте типа пика. Фактически, от стаба надо только UNID, NoteID and DeletedTime.
1) создай другую базу
2) в ней агентом проходись и копируй внутрь доки
3) с указанием оригинального UNIDа потом береёшь из єтой базы доки и сравниваешь какой удалён
4) копии кидаешь в папку - Удалённые

Как результат базу оригинал лишь дёргаешь на предмет чтения доков и ничего в ней не меняешь

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

puks

Lotus team
03.02.2007
1 971
8
#7
Вроде получается достучаться и забрать UNID.

А Deletion Time пока никак.
 

puks

Lotus team
03.02.2007
1 971
8
#9
ToxaRat
эти доки можно найти через set col = db.alldocuments - по флагу is deleted
Вроде, alldocuments не возвращает стабов.

бери последнюю дату модификации
Это-то понятно. Вроде получилось. Просто со временными значениями пришлось разбираться как в API работать.
 

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 231
17
#10
Вроде, alldocuments не возвращает стабов.
возвращает тебе даже доки, которые ты не имеешь право видеть :)

имеено db.alldocuments.Count и есть то число, которое в свойстве базы показывает сколько там доков
 

nvyush

Lotus team
22.04.2009
2 317
0
#11
имеено db.alldocuments.Count и есть то число, которое в свойстве базы показывает сколько там доков
Всегда считал, что это число неудалённых документов. Согласен, что db.alldocuments может вернуть удалённый документ, но, кмк, только в случае, когда его удалил кто-то другой уже после открытия коллекции.
 

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 231
17
#12
Всегда считал, что это число неудалённых документов. Согласен, что db.alldocuments может вернуть удалённый документ, но, кмк, только в случае, когда его удалил кто-то другой уже после открытия коллекции.
тоже так думал раньше
но как показывает практика серверный агент умудряется находить доки удалённый очень давно
конечно фикс и компакт помогает временно решить эту проблему
но везде пришлось лепить проверки на isValid & isDeleted

что-то у IBM там не всё гладко с db.alldocuments
 

puks

Lotus team
03.02.2007
1 971
8
#13
Может он, конечно, иногда и возвращает, но периодически. Я на тестовой базе ни разу не получил удаленных. Поэтому этот метод не прокатил. Я все сделал через вызовы C API.