• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

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

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

    Запись на курс до 25 апреля. Получить промодоступ ...

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

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

Dragon108

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

hosm

Желательно через @-формулы
а почему?
я б на скрипте делала отдельный агент или код обновления на постсейв измененного документа (выбор варианта зависит от требований по актуализации, активности изменения документов (предотвращение конфликтов) и наличия доступа на редактирование дочерних документов у того, кто правит подразделение)

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

RonTermit

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

K-Fire

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

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

Dragon108

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

K-Fire

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

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 случаем? )
 
D

Dragon108

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

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

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

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!