Дата создания документа

  • Автор темы 1KIA
  • Дата начала
Статус
Закрыто для дальнейших ответов.
1

1KIA

Гость
#1
скажите, а где (в каком поле) хранится дата создания присланного документа?
 
1

1KIA

Гость
#3
а скажите эту дату вообще можно программно поменять?
 

nvyush

Well-Known Member
Lotus team
22.04.2009
2 317
0
#6
а можно хоть чуть-чуть подробней...
Экспортировать документ в DXL (domino xml), установить нужную дату, не забыв про поля с датами, например, $Revisions, импортировать обратно. Полагаю, что подпись документа при этом нарушится.
Смотрите в справке NotesDXLExporter, NotesDXLImporter, на форуме поищите по DXL*.
 

nvyush

Well-Known Member
Lotus team
22.04.2009
2 317
0
#9
Другой "дикий" способ пришёл в голову — создаём локальную реплику, переходим в автономный режим, переводим часы назад, запоминаем юнид документа, создаём его копию, удаляем документ, копии присваиваем юнид, корректируем поля времени ($Revisions и т.п.) сохраняем (в итоге получим "новый" "старый" документ), удаляем копию, возвращаем часы в исходное, переходим в он-лайн режим, реплицируемся. Чтобы не было мучительно больно, я б сперва поэкспериментировал на к-либо "учебном" документе.
А вообще-то согласен с alik86, попахивает "подделкой документов".
 

dimat

Well-Known Member
Lotus team
31.07.2008
516
0
#11
Другой "дикий" способ пришёл в голову — создаём локальную реплику, переходим в автономный режим, переводим часы назад, запоминаем юнид документа, создаём его копию, удаляем документ, копии присваиваем юнид, корректируем поля времени ($Revisions и т.п.) сохраняем (в итоге получим "новый" "старый" документ), удаляем копию, возвращаем часы в исходное, переходим в он-лайн режим, реплицируемся. Чтобы не было мучительно больно, я б сперва поэкспериментировал на к-либо "учебном" документе.А вообще-то согласен с alik86, попахивает "подделкой документов".
Возникла такая же необходимость поменять дату создания.

Делаю все так как сказал nvy

Работаю с лок репликой выставил нужную мне дату на компе, уже даже шнур сети выдернул, но все равно ставит сегодняшнюю дату при создании документа.
Вопрос откуда он эту дату берет?
 

dimat

Well-Known Member
Lotus team
31.07.2008
516
0
#12
Видимо он текущую дату где то кешировал, после перезапуска клиента стало все ок
 

yerke

Well-Known Member
28.08.2007
392
0
#13
а скажите эту дату вообще можно программно поменять?
лови
но подделовать не есть хорошо )))
меняя юнид дока ты можешь поменять дату создания
то есть юнид содержит время создания
Код:
Sub Initialize

Dim ss As String
Dim dt As NotesDateTime
Dim mydate As Variant
Dim mytime As Variant
Dim ses As New NotesSession
Dim cdb As NotesDatabase
Dim dcol As NotesDocumentCollection
Dim doc As NotesDocument
Dim unid As String
Dim DateOffSet As Integer
Dim nextdoc As NotesDocument
Dim oldunid As String
Dim tdoc As NotesDocument
Dim tdt As New NotesDateTime(Now)

ss = Trim(Inputbox$({Вводить в формате "04.01.2013 08:40:51 ZE5" или "15.03.1984 16:15:39 GMT":}, "Введите новое время создания документа", tdt.LocalTime))
If ss = "" Then Exit Sub

'=yerke 2013-01-04
'1)	Hеобходимо реализовать функционал перепривязывающий респонсы со старого дока на новый. 
'2)	На респонсах обновить все поля, содержащие юнид основного дока (или линк), для корректной работы на ембеддед вьюшках, например.
'3)	При этом учитывать дату создания респонсов, может получиться так что, респонс создался раньше основного дока.
'4) Если некорректно задано новое время создания документа, то оно принимает значение "30.12.1899 06:00:00 ZE<регионал>"

Set dt = New NotesDateTime(ss)
DateOffSet = Abs(Cint(Datevalue(dt.LSLocalTime) <> Datevalue(dt.LSGMTTime)))
mydate = Right$("00000000" + Hex$(2415019 + Datevalue(dt.LSLocalTime) + DateOffSet), 6)
mytime = Right$("00000000" + Hex$(Round((Cdbl(dt.LSGMTTime) - Datevalue(dt.LSLocalTime) - DateOffSet) * 24 * 60 * 60 * 100, 0)), 8)		
'=
Set cdb = ses.CurrentDatabase
Set dcol = cdb.UnprocessedDocuments
Set doc = dcol.GetFirstDocument
Do While Not doc Is Nothing
'=
Set nextdoc = dcol.GetNextDocument(doc)
'=
oldunid = doc.UniversalID
unid = doc.UniversalID
Mid$(unid, 19, 6) = mydate
Mid$(unid, 25, 8) = mytime
'=
doc.UniversalID = unid
doc.ReplaceItemValue "$Created$", doc.Created
doc.Save True, True, True
'=пока отключаю
Set tdoc = cdb.GetDocumentByUNID(oldunid)
tdoc.Remove True
'=
Set doc = nextdoc
Loop

End Sub
 

Мыш

Well-Known Member
Lotus team
12.02.2008
1 087
13
#14
Поле $Created, кажется, подделывало дату создания. Проверьте, если интересно...
 

yerke

Well-Known Member
28.08.2007
392
0
#15
Поле $Created, кажется, подделывало дату создания. Проверьте, если интересно...
не понял мысли
это поле просто для того чтобы запомнить реалное (изначальное) время создания документа.
можете даже закомментить эту строчку, если не интересует изначальная дата

а дату подделовает измененный юнид.
 

Мыш

Well-Known Member
Lotus team
12.02.2008
1 087
13
#16
не понял мысли
это поле просто для того чтобы запомнить реалное (изначальное) время создания документа.
Нет, не просто. Это сиcтемное поле (доллар в названии ни о чем не говорит, не?).
 

yerke

Well-Known Member
28.08.2007
392
0
#17
Нет, не просто. Это сиcтемное поле (доллар в названии ни о чем не говорит, не?).
кажется мы говорим о разных полях

мое поле "$Created$" - которое будет хранить (если я захочу этого) изначальное время создания.
а поле "$Created"...может быть есть служебное такое поле лотуса.
даже если б оно было, то все равно бы не хранил время создание, а просто показывал бы его из юнида (computed for display)
 

nvyush

Well-Known Member
Lotus team
22.04.2009
2 317
0
#18
даже если б оно было, то все равно бы не хранил время создание, а просто показывал бы его из юнида (computed for display)
Пользователи время создания обычно смотрят в свойствах документа. Искать его в UNID — это для ооочень продвинутых.
 

Мыш

Well-Known Member
Lotus team
12.02.2008
1 087
13
#19
кажется мы говорим о разных полях
Млин, создайте такое поле (Имя - $Created, Тип - Дата) и посмотрите, устраивает ли оно Вас. Неужели так сложно проверить?
 

yerke

Well-Known Member
28.08.2007
392
0
#20
Млин, создайте такое поле (Имя - $Created, Тип - Дата) и посмотрите, устраивает ли оно Вас. Неужели так сложно проверить?
и что ???
создав на форме поле $Created с типом дэйттайм
создав по этой форме док и указав в поле $Created нужную дату
вы сможете изменить дату создания документа?
а фиг.

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