• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

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

  • Автор темы Автор темы Dragon108
  • Дата начала Дата начала
D

Dragon108

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

поищите, нечто подобное пробегало недавно на форуме:
тема link removed, например, замечания https://codeby.net/threads/33064.html?vi...st&p=154220
 
используй @GetDocField( documentUNID ; fieldName )
 
Не стоит использовать формулы. Потому-что все в результате сведется к неподдерживаемому коду, который невозможно отдебагить, в котором скорее всего не будет никаких комментариев и т.п.

На LS такая задача решается легко и модифицировать потом легко.
 
НУ дело в том что я стажёр ... вот дали такое задание :) , можно использовать только @-формулы
 
Алгоритм то ты представляешь как эту задачу сделать?
 
Сразу предупреждаю что то, что написано ниже это плод моей больной фантазии и я всецело осознаю что это извращение в самой его жесткой форме так что прошу ногами по лицу не бить.

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

Cname - название компании (наследуешь от родителя при создании)
DivName -название опдразделения
FullName -служебное компутед вен копозе поле с формулой (наследуеца от родителя)
FullName:@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:@GetDocField(NL;"DivName"); дергаем название добавляем
NameList:=@Subset(NameList;-(@Elements(NameList)-1)) - отрезаем
);
T

как-то так.

НУ дело в том что я стажёр ... вот дали такое задание , можно использовать только @-формулы

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

))) в точку, 2 кр, осталось только это доделать нормально

Добавлено:
Алгоритм то ты представляешь как эту задачу сделать?

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

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab