поле Log

Тема в разделе "Lotus - Программирование", создана пользователем oxystile, 29 окт 2007.

  1. oxystile

    oxystile Гость

    кто как работает с полем лог-протокол, куда заносятся все изменения с документом,все пользовательские действия?
    В частности интересует обработка, ведь если поле Log-текстовое, то его вместимость ограничена.
    Если кто использует в качестве Log-ричтекст, то на каком этапе заносятся туда записи?
     
  2. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Хде поле log? <_<
     
  3. oxystile

    oxystile Гость

    во всех документах, с которыми усиленно работают пользователи у меня заведено поле Log,
    куда при сохранении записывается кто и какие изменения сделал с документом
     
  4. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Тебе его во view показывать не надо, ведь верно?
    Оставляй его текстовым и ставь проперти IsSummary в False.
    После этого ограничение чудесным образом должно исчезнуть <_<
     
  5. Sandr

    Sandr Гость

    Тока фигня одна есть... после ReplaceItemvalue или AppendItemValue оно опять будет тру... :(
     
  6. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Для: Sandr
    Это да, но ведь это контролируемо :)
    Хотя мне самому этот способ не очень нравиться.
     
  7. oxystile

    oxystile Гость

    IsSummary = False задала в Postopen, заполняю поле до предела, последние пару строк в поле не влезли, переоткрываю док, вижу сообщение типа Field is too much&32k , после этого данные в поле просто исчезают.

    тут пробовала еще вариант, на querysave делаю проверку
    size_=Lenb(doc.Log(0))
    size_> 30000 Then
    то добавляю содержимое поля Log в поле Log_Big(рич текст)
    кажись, нормально работает


    п.с. содержимое поля во вьюхе не отображаю
     
  8. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Для: oxystile
    Скорее ставь на QuerySave, а не на PostOpen.

    Или вообще для аудита документов создать отдельный документик/базу.
    Зачем засирать полезные документы полем, которое может превысить 32k.
     
  9. oxystile

    oxystile Гость

    поставила IsSummary = False на QuerySave, уже на размер поля не ругается, но видимо у поля все же есть предел, т.к. я добила до того момента, когда оно просто не дополняется.
    добавить поле лог в отдельный документик/базу нельзя в связи со спецификой работы.
    Если и будет переполнение log за 32К, то будет это случаться не часто(по крайней мере в этой базе),поэтому хочу предусмотреть этот случай на будущее. Вариант с IsSummary в принципе устраивает, но не везде.
    Есть одна БД, в кот. необходимо строго вести протокол, и полностью, и часто величина 32 к там будет превышена, так если я добавлю в такие документы поле rich text для протокола, то это сильно загрузит базу??
     
  10. Sandr

    Sandr Гость

    А что мешает каждую запись протокола делать отдельным документом? так ведь даже удобней потом читать.. Или сделать так как в стандартной log.nsf... Так записываеться определенное количество записей в один документ, потом создается другой... и так дальше.. ИМХО удобней...
     
  11. oxystile

    oxystile Гость

    кстати да, попробовала логи хранить в отдельных документах, но только и в отдельной БД.
    т.о. когда документы придется переносить из БД в архив, то с логами не придется ничего делать.

    протестила и как итог:
    -если БД незначительная и поле Log выйдет за пределы 32К только в исключительных случаях, то достаточно поставить на QuerySave IsSummary = False для Log.
    -если БД значимая и Log будет переполняться довольно часто, то для документов такой БД рационально протокол вести как отдельный документ в отдельной БД, где поле Log будет уже Rich Text
     
Загрузка...

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