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

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

Наш партнер Genesis Hackspace
  1. FixeR

    FixeR Гость

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

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

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

    TIA :-)
    Lotus team

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

    Klido Гость

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

    FixeR Гость

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

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

    TIA :-)
    Lotus team

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

    Omh Well-Known Member
    Lotus team

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

    nvyush Well-Known Member
    Lotus team

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

    hosm * so what *

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

    Omh Well-Known Member
    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 Well-Known Member
    Lotus team

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

    Omh Well-Known Member
    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 Well-Known Member
    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 Well-Known Member
    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
    Симпатии:
    1
    А о минусах можете рассказать?

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

    hosm * so what *

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

    nvyush Well-Known Member
    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 Спасибо, что-то я стормозил, действительно наборот.
     
Загрузка...

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