Значение Поля $ref Скопировать В Другое Поле

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

  1. juk-777

    juk-777 Active Member

    Регистрация:
    5 авг 2013
    Сообщения:
    38
    Симпатии:
    0
    Доброго времени суток, уважаемые. Давно не создавал темы здесь, но без вас не могу почему-то справиться.
    Читал статью Как Lotus Notes поддерживает иерархию документов по адресу http://www.notesnet.ru/question/docid/060A08.
    Цитата из статьи:
    "Известен следующий приём, когда значение поля $Ref копируется в другое поле (допустим, Ref1), а само поле вычищается из документа
    В этом случае системная иерархия главный документ - документ-ответ отсутствует, она существует только в конкретном приложении, но разработчик может создать на основе этих значений иерархическое представление какой ему нужно иерархии сущностей"

    Собственно Вопрос: каким образом в лотус скрипте скопировать поле $ref в другое поле?

    Я просто делаю аналогичную задачу и хочу при создании потомка брать значение поля родителя, которое определяется собакой как @DocumentUniqueID (то есть в поле реальный унид, а не его текстовое значение).
    То есть из поля IDPodrazdelenie хочу при создании дочки взять его значение и перенести в поле UniRoditelya. НО че-то как-то не получается.
    Пока получилось сделать так:
    для поля UniRoditelya на собаках написал следующий код
    @If (HeadPodrazdelenie = ""; @Unavailable; @DbLookup (""; ""; "TempView-Podrazdelenie"; HeadPodrazdelenie; "IDPodrazdelenie"))
    где HeadPodrazdelenie - это поле документа отвечающее за название родительского подразделения
    TempView-Podrazdelenie - простая вьюшка с отбором подразделений
     
  2. oshmianski

    oshmianski Достойный программист
    Lotus team

    Регистрация:
    25 апр 2012
    Сообщения:
    512
    Симпатии:
    13
    Copyitem
    Removeitem
     
  3. juk-777

    juk-777 Active Member

    Регистрация:
    5 авг 2013
    Сообщения:
    38
    Симпатии:
    0
    спасибо огромное! элементарные вещи, а вылетели из головы!!
     
  4. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    простите, а зачем копировать? Можно просто переприсвоить значения
     
  5. juk-777

    juk-777 Active Member

    Регистрация:
    5 авг 2013
    Сообщения:
    38
    Симпатии:
    0
    каким образом? через replaceitemvalue ?
    если да - то таким методом в поле вставляется текстовое значение unida, а мне такое не подходит
     
  6. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    ну так а каким образом ты работать с юнидами собираешься?
     
  7. Serduko

    Serduko Well-Known Member

    Регистрация:
    11 окт 2011
    Сообщения:
    174
    Симпатии:
    0
    Можно еще проще doc.ref1 = doc.~$ref
     
  8. juk-777

    juk-777 Active Member

    Регистрация:
    5 авг 2013
    Сообщения:
    38
    Симпатии:
    0
    я работал с юнидами раньше в таком виде: делал поля вычисляемые при создании в родителе и дочке допустим IDDOC , писал формулу
    @text(@documentuniqueid)
    Потом при создании дочки из родителя писал в поле дочки universalid родителя (то есть curdoc.parentid=pardoc.universalid)
    Вот и получалась связь для дальнейшего использования.
    Но в поле получалось что записывался не реальный унид документа, а его текстовый вариант, который я так понимаю не подходит для того, чтобы сделать иерархическую вьюшку с использованием конструкции DEFAULT $REF:=parentid

    Вот поэтому и хотел как-то при создании дочки из рожителя передать реальный унид родителя в дочку, а не текстовый вариант ( то есть вместо curdoc.parentid=pardoc.universalid использовать надо другую какую-то конструкцию)
     
  9. ty3uk

    ty3uk Well-Known Member

    Регистрация:
    31 мар 2008
    Сообщения:
    169
    Симпатии:
    0
    из того что увидел...
    set z_item=z_doc.getfirstitem("$ref")
    call z_item.copyitemtodoucmnet(x_doc,"$ref")
    самый железный 100% способ (я его использую + использую подобный, когда один документ нужно сделать ответом к нескольким, естественно, что x_doc становиться документом источником + сохраняю не в $ref а в другое поле + для нормально работы, зачастую, в таких базах, у меня нет чистого $ref (особенность базы, когда в разных представлениях нужно документ прицепить ответом к разным документам, естественно что во вьюхе, не забываем выставить: default $ref:=$my_other_ref) )
    в реальных скриптах, выглядит примерно так (у меня даж ответные документы формируются через LS с ручной привязкой)
    Код (LotusScript):
    call new_doc.makeresponce(main_doc)
    set t_item=new_doc.getfirstitem("$ref")
    call t_item.copytodocument(new_doc,"$parent_ref")
    call t_item.remove()
     
  10. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    на форуме обсуждали [post="152664"]тут вот пример[/post] + ниже на 2 и 4 сообщения можно глянуть
     
Загрузка...

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