Убрать привязку документ-родитель - документ-ответ

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

  1. FixeR

    FixeR Гость

    Есть два документа, один является ответом на другой.
    Можно как нибудь эту связь разрушить?
    Т.е. нужно чтобы документ-ответ перестал быть ответом.

    Поменять родителя можно через MakeResponse, но это не подходит.
    Нужно чтобы родителя у документа не было совсем.

    Удалить поле $REF почему-то не получается.
     
  2. TIA

    TIA :-)
    Lotus team

    Регистрация:
    15 май 2009
    Сообщения:
    790
    Симпатии:
    0
    Всё же надо удалить $REF и сохранить документ.
     
  3. Klido

    Klido Гость

    кстати, а на что влияет в случае разрушения родительской связи респонсовость самой формы бывшего респонса? не стоит ли и форму поменять на main тип?
     
  4. FixeR

    FixeR Гость

    А других способов нет?

    П.С. проблему уже решил, но всё же хочется узнать
     
  5. TIA

    TIA :-)
    Lotus team

    Регистрация:
    15 май 2009
    Сообщения:
    790
    Симпатии:
    0
    Заметка. Если конфликтный документ (а он является респонсом к неконфликтоному) пересохранить в UI, то он перестаёт быть респонсом.
     
  6. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Ну я уже давненько ставлю на формы поле CFD поле $RefOptions с формулой
    Код (Text):
    @If(@IsAvailable($REF); "1"; "")
    , которое позволяет игнорировать респонсовость формы: т.е. пересохраннётый документ-респонс с Form Type = Document не перестаёт быть респонсом. :newconfus:
     
  7. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Переведи, плз :newconfus:
     
  8. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
  9. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Ну если у нас есть документ (сделаный респонсом методом MakeReponse, например) на форме, у которой Form Type = Document,
    то потом, при пересохранении через UI, документ теряет поле $REF и перестаёт быть респонсом.

    С этим полем, я могу строить иерархии из документов с Form Type = Document без страха, что при пересохранении что-то сломается.
    Т.е. у меня у всех форм в базе Form Type = Document.
    Но при этом так же присутсвуюет многоуровневые иерархии. :newconfus:

    Что такое Form Type не равная Document я уже и забыл.
     
  10. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
  11. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Я сам не помню, где это нашёл.
    Но штука рульная. :newconfus:
     
  12. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    думаю, эту тему можно и в FAQ, я вот сама название поля помнила примерно, так как встречала в коде на прошлой работе (вот тогда знала).
    Я еще посмотрю в КБ, если есть подходящая тема-помещу туда, если нет-была мысль сделать в FAQ разделе темку вроде мини-FAQ (после того, как народ начал обсмактывать по кругу свойство IsOnServer, всерьез задумалась о подобном)
     
  13. VladSh

    VladSh начинающий
    Lotus team

    Регистрация:
    11 дек 2009
    Сообщения:
    1.251
    Симпатии:
    2
    А я забыл, что такое Form Type РАВНАЯ Document :)

    Всё проще даже без поля $RefOptions.
    Формы, по которым планируется создание ответов делаются типом Response, доки создаются методом CreateDocument - никаких проблем с пересохранением в UI, "отцеплением" и "прикреплением" по новой, и никаких лишних полей типа $RefOptions..
     
  14. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    А если есть формы, по которым планируется создание как парентов, так и респонсов?
     
  15. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    Вот после вышеуказанного VladSh интересно узнать насчет выделенного в цитате, кто сталкивался - таки ругается? /* ссылка из темы, которую приводили выше */
     
  16. VladSh

    VladSh начинающий
    Lotus team

    Регистрация:
    11 дек 2009
    Сообщения:
    1.251
    Симпатии:
    2
    В том-то вся и прелесть, что работает абсолютно для любых типов! Только в форме обязательно должно стоять Response и док создавать CreateDocument. Все лаги при пересохранении от UI-функционала, т.е. от создания документа с помощью Compose.
    У меня для простых доков (справочники и т.п.) в форме установлено Document и эти доки я создаю с помощью Compose, а для сложных (где есть возможность "ответности") в форме установлено Response и док создаю CreateDocument, всё равно при создании более-менее сложных доков туда приходится прописывать какие-то поля. При уходе от Compose минуем ещё гору возможных ошибок + в новом доке сразу же доступен айтем Form, UniversaliD уже есть, к Source.Document можно обращаться уже на QO - плюсы налицо..
     
  17. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Только нужно помнить, что в данном случае в QuerySave будет Source.IsNewDoc = [strike]True[/strike] False, соответственно проверять нужно Source.Document.IsNewNote

    Кстати, не вижу проблем/противопоказаний использования $RefOptions — оно всё равно CFD и в доке не сохраняется/память не занимает.
     
  18. TIA

    TIA :-)
    Lotus team

    Регистрация:
    15 май 2009
    Сообщения:
    790
    Симпатии:
    0
    А о минусах можете рассказать?

    Кстати, UNID доступен всегда, в отличие от Noteid
     
  19. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    Source.IsNewDoc = False, насколько я помню, поправь
     
  20. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Насколько я понял, предлагаемый VladSh алгоритм:
    Код (Text):
    ...
    set doc = db.CreateDocument
    ...
    call ws.EditDocument(True, doc)
    ...
    Сам иногда так делаю, и мой опыт подсказывает, что в данном случае перед первым сохранением QuerySave покажет Source.IsNewDoc = False, а Source.Document.IsNewNote = True.

    OKEN Спасибо, что-то я стормозил, действительно наборот.
     
Загрузка...

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