Как лучше сделать в форме историю ответных документов?

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

  1. masyna

    masyna Гость

    Репутация:
    0
    Доброго всем вечера Господа!!!

    Такая проблемка, хочу чтобы в одной из главных форм отображались в виде истории ответы на эту форму, которые можно отрыть тут же из формы!! Я думаю что это делается с помощью встроенной вью, но как это сделать не знаю!! Помогите решить задачку, желательно со всем листингом, если он вообще будет))))

    И вот еще что хотелось бы у вас попросить, может кто скинуть пример базы с динамическим выбором документов, с помощью формы выбора??? Очень буду благодарен!!!

    Да Я забыл сказать. Я в этом деле новичок, поэтому может вопрос покажется и глупым)))))
     
  2. Akupaka

    Akupaka А че я?.. О.о

    Репутация:
    0
    Регистрация:
    4 окт 2007
    Сообщения:
    3.360
    Симпатии:
    2
    судя по всему, в изучении справочной системы ты тоже новичек? ))

    внедренный вид имеет свойство "Show single category" - это можно почитать в справке.
    работает это свойство в паре с видом таким образом, что вид фильтруется по первой категоризированной колонке.

    например, если по твоей задаче построить вид, который отбирает только дочерние документы к документам по заданной форме, то первая категоризированная колонка может быть сформированна по формуле:
    Код (Text):
    @Text($REF)
    а свойство внедренного вида "Show single category" на форме родительского документа может иметь значение:
    Код (Text):
    @Text(@DocumentUniqueID)
     
  3. TIA

    TIA :-)
    Lotus team

    Репутация:
    0
    Регистрация:
    15 май 2009
    Сообщения:
    790
    Симпатии:
    1
    Встроенная вью добавляется на форму через меню "Create\Embedded Element\View". В св-вах встроенной вьюшки на второй закладке есть галка "Show only current thread". Она означает, что должна отобразиться то дерево респонсных документов из указанного вью, в которой содержится текущий документ, открытый по данной форме. В качестве встроенной должны быть обычная вьюшка с отображением иерархии респонсов.
     
  4. Akupaka

    Akupaka А че я?.. О.о

    Репутация:
    0
    Регистрация:
    4 окт 2007
    Сообщения:
    3.360
    Симпатии:
    2
    ух ты! хороший вариант! я как-то его упустил в своей практике...

    единственное, как я понял, в этом внедренном виде будет отображаться и головной документ, и от этого не уйти (?), но, если это не помеха, то очень хороший вариант!
     
  5. masyna

    masyna Гость

    Репутация:
    0
    Большое спасибо очень помогло, но вот возник еще один вопрос!!!!

    Как сделать ответный документ сразу к нескольким основным документам одной формы???
    Поясню Вообще делаю базу данных учета технических средств, в которой есть основная форма описывающая характеристики одного технического средства. Это основная форма в которой хочу сделать историю ответных документов (накладная, акт перевода в другую категорию, акт списания и т.д.). Так вот как можно сделать Ответный документ (НАКЛАДНАЯ) сразу для нескольких технических средств?????

    Еще раз повторюсь, кому не жалко можно образец какой нибудь похожей базы данных!!!
     
  6. nvyush

    nvyush Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Ответный документ может иметь только одного родителя (ссылка на родителя хранится в поле $REF в особом формате).
    Можно сделать псевдо иерархию и хранить в накладной UNIDы техсредств в многозначном текстовом поле. В данном случае не будут работать штатные средства Лотуса по поддержке иерархии (doc.Responses, doc.ParentDocumentUNID), но это решаемо.

    Может чем поможет элегантная функция от Egor A. Ivanov; InterTrust 13.03.2007 17:24
    на входе псевдодочерний документ, имя поля заменяющего $REF и родительский UNID в строке.
    Код (Text):
    Sub SetRRLItem (note As NotesDocument, itemName As String, itemValue As String)
    Dim parent As New NotesDocument (note.ParentDatabase)
    Dim response As New NotesDocument (note.ParentDatabase)
    Let parent.UniversalID = itemValue
    Call response.MakeResponse (parent)
    Call response.GetFirstItem ("$REF").CopyItemToDocument (note, itemName)
    End Sub
    P.S. И не надо так кричать — люди здесь не глухие
     
  7. Akupaka

    Akupaka А че я?.. О.о

    Репутация:
    0
    Регистрация:
    4 окт 2007
    Сообщения:
    3.360
    Симпатии:
    2
    nvy

    а можно разъяснения получить по коду? в чем его суть?
    я вижу, что в итоге мы получаем как минимум одно поле $REF в note-документе, но для этого достаточно было вызвать метод MakeResponse у соответстующего объекта напрямую, т.е. без этого замысловатого способа.
    а если мы получим в note-документе два и более полей $REF, то чего этим добьемся?
     
  8. turumbay

    Репутация:
    0
    Регистрация:
    13 мар 2009
    Сообщения:
    625
    Симпатии:
    2
    поле $ref в note не создается.
    Call response.GetFirstItem ("$REF").CopyItemToDocument (note, itemName)
    суть: не нарушая родной иерархии - выстроить альтернативную по другому полю. Тип поля - Response Reference List, т.о. по нему можно строить вьюхи как по $ref
     
  9. Akupaka

    Akupaka А че я?.. О.о

    Репутация:
    0
    Регистрация:
    4 окт 2007
    Сообщения:
    3.360
    Симпатии:
    2
    а слона-то я и не заметил :rolleyes: спасибо
    а для чего сохранять тип поля (Response Reference List)?
    предполагается, что альтернативная иерархия в виде будет по Default строиться?
    тогда разве нужен тип RRL?
     
  10. nvyush

    nvyush Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Алгоритм следующий
    - создаём временный родительский документ
    - задаём ему unid актуального родительского документа
    - создаём временный дочерний документ
    - создаём в дочернем документе поле $REF к временному родительскому документу. Т.к. у временного родительского документа тот же unid, что и у настоящего, то после завершения кода и удаления временного родительского документа из памяти, данная ссылка будет указывать на настоящего родителя
    - копируем поле $REF под нужным именем в настоящий дочерний документ.

    Данная функция может использоваться для построения альтернативной иерархии. Если поля ссылок делать видимыми, они отображаются в виде ссылок на документы (как в рт-поле).
     
  11. Akupaka

    Akupaka А че я?.. О.о

    Репутация:
    0
    Регистрация:
    4 окт 2007
    Сообщения:
    3.360
    Симпатии:
    2
    только для этого тип RRL сохраняется?
     
  12. turumbay

    Репутация:
    0
    Регистрация:
    13 мар 2009
    Сообщения:
    625
    Симпатии:
    2
    это скорее бесплатный довесок.
    RRL нужен для default $ref := ...
    простого юнида, как мне помница, не хватало
     
  13. nvyush

    nvyush Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Если честно, сам я альтернативную иерархию пока нигде не использовал, нужды не было. Наткнулся на любопытный код, взял себе на заметку — может где пригодится. Возник вопрос по теме — я поделился (с указанием авторства). А уж использовать или нет — это каждый для себя сам решает.
     
  14. TIA

    TIA :-)
    Lotus team

    Репутация:
    0
    Регистрация:
    15 май 2009
    Сообщения:
    790
    Симпатии:
    1
    Без RRL не будет работать отображение документа во вьюхе как респонс.
     
  15. Akupaka

    Akupaka А че я?.. О.о

    Репутация:
    0
    Регистрация:
    4 окт 2007
    Сообщения:
    3.360
    Симпатии:
    2
    а не напомнишь как это дело в виде организовать? что-то не могу вспомнить :rolleyes:
     
  16. nvyush

    nvyush Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Akupaka
    Кажись, в формулу отбора надо добавить что-то типа Field $REF := MyREF;
     
  17. turumbay

    Репутация:
    0
    Регистрация:
    13 мар 2009
    Сообщения:
    625
    Симпатии:
    2
    дять, ну ты-то старый аксакал форума! :) заюзай посик.
    http://codeby.net/forum/threads/32230.html
     
  18. hosm

    hosm * so what *

    Репутация:
    0
    Регистрация:
    18 май 2009
    Сообщения:
    2.442
    Симпатии:
    8
    Мы перед селектом вьюхи делали DEFAULT $Ref:=myParent;
    Работало, так как в документах $Ref отсутствовало.
    С вариантом Field $REF не экспериментировали :rolleyes:
     
  19. Akupaka

    Akupaka А че я?.. О.о

    Репутация:
    0
    Регистрация:
    4 окт 2007
    Сообщения:
    3.360
    Симпатии:
    2
    дык, не такой уж и старый :discard:
    я юзал, и интертраст порыл, и даже по памяти вначале сам написал... но че-то не работает :)
    хочется инструкцию :rolleyes:

    и вот еще, как мне для одних доков этот дефолт заюзать, а для других нет? :)
    бо дефолт оператором в @IF не фухрычит... или я туплю по полной

    Добавлено: вопрос отпал. я все сделал правильно... но!
    но TIA прав :)
    тип поля обязательно RRL

    и да! код предложеный nvy весьма полезен

    к стати, вот, кому интересно очень хороший пример:
    http://techforum.intertrust.ru/site/itforu...33;OpenDocument
    (ищите вложение внизу страницы)
     
  20. TIA

    TIA :-)
    Lotus team

    Репутация:
    0
    Регистрация:
    15 май 2009
    Сообщения:
    790
    Симпатии:
    1
    Например так. Пишем во View Selection:

    FIELD $Ref := @If(@IsAvailable(MyRef) & OtherCondition; MyRef; $Ref);
     
Загрузка...

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