Обновление иерархии документов

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

  1. Dragon108

    Dragon108 Well-Known Member

    Регистрация:
    19 янв 2010
    Сообщения:
    264
    Симпатии:
    0
    Есть 3 документа , один корневой (Компания) и два респонс то респонс (Подразделение и Контакт). Создаётся иерархия из них, где Компания - корневой документ, Подразделение подчиняется Компании и "самому себе" (Подразделению), Контакт подчинятся только Подразделению , есть поле в Подразделении, которое при создании потомка (т.е. Контакта или Подразделения), заносится в поле создаваемого потомка ... необходимо в полученной иерархии сделать так, что бы при изменении поля в Подразделении на каком то из уровней , обновлялись все его потомки (обновлялись поля, в которые заносится значение из изменяемого поля в Подразделения на уровне , в его потомки (Подразделения и Контакты))
    Желательно через @-формулы
     
  2. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    а почему?
    я б на скрипте делала отдельный агент или код обновления на постсейв измененного документа (выбор варианта зависит от требований по актуализации, активности изменения документов (предотвращение конфликтов) и наличия доступа на редактирование дочерних документов у того, кто правит подразделение)

    поищите, нечто подобное пробегало недавно на форуме:
    тема обновление документа, например, замечания http://codeby.net/forum/threads/33064.html?vi...st&p=154220
     
  3. RonTermit

    RonTermit Гость

    используй @GetDocField( documentUNID ; fieldName )
     
  4. K-Fire

    K-Fire Гость

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

    На LS такая задача решается легко и модифицировать потом легко.
     
  5. Dragon108

    Dragon108 Well-Known Member

    Регистрация:
    19 янв 2010
    Сообщения:
    264
    Симпатии:
    0
    НУ дело в том что я стажёр ... вот дали такое задание :) , можно использовать только @-формулы
     
  6. K-Fire

    K-Fire Гость

    Алгоритм то ты представляешь как эту задачу сделать?
     
  7. iki

    iki Гость

    Сразу предупреждаю что то, что написано ниже это плод моей больной фантазии и я всецело осознаю что это извращение в самой его жесткой форме так что прошу ногами по лицу не бить.

    Итак решение:
    На форме заводишь поля

    Cname - название компании (наследуешь от родителя при создании)
    DivName -название опдразделения
    FullName -служебное компутед вен копозе поле с формулой (наследуеца от родителя)
    FullName:mad:Text(@DocumentUniqueID)

    CompanyID -служебное компутед вен копозе поле с Унидом Компании. (наследуеца от родителя)

    Hname - иерархическое имя подразделения (компутед поле с формулой):

    NameList:=FullName; берем иерархический список унидов
    NameList:=@Subset(NameList;-(@Elements(NameList)-1)); - отрезаем свой унид( он нам не нужен)
    NameList:=@Subset(NameList;(@Elements(NameList)-1)); - отрезаем название компании (верхинй уровень нам тоже не нужен)
    T:=@GetDocField(CompanyID;"CName"); -цепляем по ид навзание компании. запоминаем
    @While(@Elements(NameList)>=0; - идем по списку подразделений
    NL:=@Subset(NameList;1); -
    T:=T:mad:GetDocField(NL;"DivName"); дергаем название добавляем
    NameList:=@Subset(NameList;-(@Elements(NameList)-1)) - отрезаем
    );
    T

    как-то так.

    ПЫСЫ. Компания не EL случаем? )
     
  8. Dragon108

    Dragon108 Well-Known Member

    Регистрация:
    19 янв 2010
    Сообщения:
    264
    Симпатии:
    0
    ))) в точку, 2 кр, осталось только это доделать нормально

    Добавлено:
    Ну есть идея хранить в каком нить скрытом поле в Подразделении хранить айди родителя данного подразделения (с Контактами тож самое), сделать вьюшку (где брать всё из Подразделения), первый столбец (категорезированный ) - айдишники Подразделений, второй столбец - айдишники потомков данного подразделения, в форме Подразделение, в Постсейве, Дблукапом искать айдишник данного документа во вьюшке и по нему выцыплять все ему подчиняющиеся, и в цикле проставлять имя Подразделения всем его потомкам, но дело в том что в каждом подразделении храниться ирерахический список высших подразделений , вот как туда пихать изменённое имя подразделения, пока нет идей) ...
    Можно наверное хранить где нить старое имя подразделения, искать его в этом иерархическом списке, получать оттуда позицию
    этого имени, и записывать на эту позицию новое имя, но это так ... "мысли о высоком"
     
Загрузка...

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