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

Тема в разделе "Lotus - Программирование", создана пользователем 1KIA, 14 окт 2010.

Статус темы:
Закрыта.
  1. 1KIA

    1KIA Гость

    скажите, а где (в каком поле) хранится дата создания присланного документа?
     
  2. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    notesDocument.Created
    @Created
     
  3. 1KIA

    1KIA Гость

    а скажите эту дату вообще можно программно поменять?
     
  4. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Разве что через DXL
     
  5. 1KIA

    1KIA Гость

    а можно хоть чуть-чуть подробней...
     
  6. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Экспортировать документ в DXL (domino xml), установить нужную дату, не забыв про поля с датами, например, $Revisions, импортировать обратно. Полагаю, что подпись документа при этом нарушится.
    Смотрите в справке NotesDXLExporter, NotesDXLImporter, на форуме поищите по DXL*.
     
  7. alik86

    alik86 Lotus team
    Lotus team

    Регистрация:
    20 ноя 2008
    Сообщения:
    465
    Симпатии:
    0
    1KIA, а обманывать нехорошо!
     
  8. 1KIA

    1KIA Гость

    :) я и не обманываю.... ставят задание, а мне уж делать...
     
  9. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Другой "дикий" способ пришёл в голову — создаём локальную реплику, переходим в автономный режим, переводим часы назад, запоминаем юнид документа, создаём его копию, удаляем документ, копии присваиваем юнид, корректируем поля времени ($Revisions и т.п.) сохраняем (в итоге получим "новый" "старый" документ), удаляем копию, возвращаем часы в исходное, переходим в он-лайн режим, реплицируемся. Чтобы не было мучительно больно, я б сперва поэкспериментировал на к-либо "учебном" документе.
    А вообще-то согласен с alik86, попахивает "подделкой документов".
     
  10. Klido

    Klido Гость

    почему именно это поле? введите искусственное поле "документ создан" его и используйте для представлений, меняйте сколько надо...
     
  11. dimat

    dimat Lotus team
    Lotus team

    Регистрация:
    31 июл 2008
    Сообщения:
    518
    Симпатии:
    0
    Возникла такая же необходимость поменять дату создания.

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

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

    dimat Lotus team
    Lotus team

    Регистрация:
    31 июл 2008
    Сообщения:
    518
    Симпатии:
    0
    Видимо он текущую дату где то кешировал, после перезапуска клиента стало все ок
     
  13. yerke

    yerke Well-Known Member

    Регистрация:
    28 авг 2007
    Сообщения:
    392
    Симпатии:
    0
    лови
    но подделовать не есть хорошо )))
    меняя юнид дока ты можешь поменять дату создания
    то есть юнид содержит время создания
    Код (LotusScript):
    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
     
  14. Мыш

    Мыш Lotus team
    Lotus team

    Регистрация:
    12 фев 2008
    Сообщения:
    1.021
    Симпатии:
    8
    Поле $Created, кажется, подделывало дату создания. Проверьте, если интересно...
     
  15. yerke

    yerke Well-Known Member

    Регистрация:
    28 авг 2007
    Сообщения:
    392
    Симпатии:
    0
    не понял мысли
    это поле просто для того чтобы запомнить реалное (изначальное) время создания документа.
    можете даже закомментить эту строчку, если не интересует изначальная дата

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

    Мыш Lotus team
    Lotus team

    Регистрация:
    12 фев 2008
    Сообщения:
    1.021
    Симпатии:
    8
    Нет, не просто. Это сиcтемное поле (доллар в названии ни о чем не говорит, не?).
     
  17. yerke

    yerke Well-Known Member

    Регистрация:
    28 авг 2007
    Сообщения:
    392
    Симпатии:
    0
    кажется мы говорим о разных полях

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

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Пользователи время создания обычно смотрят в свойствах документа. Искать его в UNID — это для ооочень продвинутых.
     
  19. Мыш

    Мыш Lotus team
    Lotus team

    Регистрация:
    12 фев 2008
    Сообщения:
    1.021
    Симпатии:
    8
    Млин, создайте такое поле (Имя - $Created, Тип - Дата) и посмотрите, устраивает ли оно Вас. Неужели так сложно проверить?
     
  20. yerke

    yerke Well-Known Member

    Регистрация:
    28 авг 2007
    Сообщения:
    392
    Симпатии:
    0
    и что ???
    создав на форме поле $Created с типом дэйттайм
    создав по этой форме док и указав в поле $Created нужную дату
    вы сможете изменить дату создания документа?
    а фиг.

    задача стояла как? изменить программно время создания дока, так чтобы поддельное время отражался на свойствах документа.
    этого можно добиться только поменять юнид дока, что указан высше на листинге.
     
Загрузка...
Похожие Темы - Дата создания документа
  1. lmike
    Ответов:
    11
    Просмотров:
    385
  2. Aluka
    Ответов:
    2
    Просмотров:
    896
  3. Boatswain
    Ответов:
    3
    Просмотров:
    902
  4. Cheburan
    Ответов:
    7
    Просмотров:
    661
  5. p1010
    Ответов:
    0
    Просмотров:
    966
Статус темы:
Закрыта.

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