Звери!Спасибо всем )) Вы так оперативно отвечаете, будто сидите и обновляете страницу каждую минуту. Мне даже не по себе![]()
Ну!!!
Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе
Звери!Спасибо всем )) Вы так оперативно отвечаете, будто сидите и обновляете страницу каждую минуту. Мне даже не по себе![]()
да вот, прям, фрагмент где напрашивается обработчик (он точно не мембер, если не пустой, можно было по ошибке вывалить @Return(@False))@isNotMember(DocValue;AcceptValues)
Не нужно всех этих Морган-преобразований...
Это, всего лишь , частный случай и, вообще, иллюстрация. Разговор об упрощении сложного выражения (да, тут не этот случай). Можешь упростить - упрости. ИМХО.Убрав отрицание, получим перечень условий, когда объект виден. Чего проще-то?...
Уже не скажуСам себе спасибо через год скажешь
Если придерживаться правила "отрицание видимости", то код, скорее всего, будет самодокументированным.@Shandrik, ИМХО надо документировать.
должны пропасть в большей мере, так как всегда есть что требовалось и что было реализовано.заказчик оплатил доработку, и я всё проклял, пытаясь понять, что там изначально закладывалось.
tmp1:=@Trim(ProcessAdministratorsAccessDP:ProcessAdministratorsAccessDP_1:ProcessAdministratorsAccessDP_2:ProcessAdministratorsAccessDP_3:ProcessAdministratorsAccessDP_4:ProcessAdministratorsAccessDP_5:ProcessAdministratorsAccessDP_6:ProcessAdministratorsAccessDP_7:ProcessAdministratorsAccessDP_8:ProcessAdministratorsAccessDP_9:ProcessAdministratorsAccessDP_10);
tmp2:=@Trim(ProcessOwnersAccessDP:ProcessOwnersAccessDP_1:ProcessOwnersAccessDP_2:ProcessOwnersAccessDP_3:ProcessOwnersAccessDP_4:ProcessOwnersAccessDP_5:ProcessOwnersAccessDP_6:ProcessOwnersAccessDP_7:ProcessOwnersAccessDP_8:ProcessOwnersAccessDP_9:ProcessOwnersAccessDP_10);
tmp3:=@Trim(StageAdministratorsAccessDP:StageAdministratorsAccessDP_1:StageAdministratorsAccessDP_2:StageAdministratorsAccessDP_3:StageAdministratorsAccessDP_4:StageAdministratorsAccessDP_5:StageAdministratorsAccessDP_6:StageAdministratorsAccessDP_7:StageAdministratorsAccessDP_8:StageAdministratorsAccessDP_9:StageAdministratorsAccessDP_10);
tmp4:=@Trim(StageExecutorsAccessDP:StageExecutorsAccessDP_1:StageExecutorsAccessDP_2:StageExecutorsAccessDP_3:StageExecutorsAccessDP_4:StageExecutorsAccessDP_5:StageExecutorsAccessDP_6:StageExecutorsAccessDP_7:StageExecutorsAccessDP_8:StageExecutorsAccessDP_9:StageExecutorsAccessDP_10);
tmp5:=@Trim(StagePExecutorsAccessDP:StagePExecutorsAccessDP_1:StagePExecutorsAccessDP_2:StagePExecutorsAccessDP_3:StagePExecutorsAccessDP_4:StagePExecutorsAccessDP_5:StagePExecutorsAccessDP_6:StagePExecutorsAccessDP_7:StagePExecutorsAccessDP_8:StagePExecutorsAccessDP_9:StagePExecutorsAccessDP_10);
tmpA:=@UserNamesList;
tmp1A:=@Trim(@Replace(tmpA; tmp1; ""));
tmp2A:=@Trim(@Replace(tmpA; tmp2; ""));
tmp3A:=@Trim(@Replace(tmpA; tmp3; ""));
tmp4A:=@Trim(@Replace(tmpA; tmp4; ""));
tmp5A:=@Trim(@Replace(tmpA; tmp5; ""));
CurrentStageStatusDP != "Visa" | !((@IsMember("Owner"; StageAdmin01VDP) & @Elements(tmpA) != @Elements(tmp2A)) | (@IsMember("Admin"; StageAdmin01VDP) & @Elements(tmpA) != @Elements(tmp1A)) | (@IsMember("StageAdmin"; StageAdmin01VDP) & @Elements(tmpA) != @Elements(tmp3A)) | (@IsMember("Exec"; StageAdmin01VDP) & @Elements(tmpA) != @Elements(tmp4A)) | (@IsMember("ExecP"; StageAdmin01VDP) & @Elements(tmpA) != @Elements(tmp5A)) )
да - надо было в CFD поле вынести списки и их пересечениеНо смысл, во всяком случае масштаб бедствия, ясен.
вот это переделать под структуру @if и уже более удобно и понятно следить что и как, если ничего не перепуталКод:CurrentStageStatusDP != "Visa" | !((@IsMember("Owner"; StageAdmin01VDP) & @Elements(tmpA) != @Elements(tmp2A)) | (@IsMember("Admin"; StageAdmin01VDP) & @Elements(tmpA) != @Elements(tmp1A)) | (@IsMember("StageAdmin"; StageAdmin01VDP) & @Elements(tmpA) != @Elements(tmp3A)) | (@IsMember("Exec"; StageAdmin01VDP) & @Elements(tmpA) != @Elements(tmp4A)) | (@IsMember("ExecP"; StageAdmin01VDP) & @Elements(tmpA) != @Elements(tmp5A)) )
n5:=@if(@IsMember("ExecP"; StageAdmin01VDP) & @Elements(tmpA) != @Elements(tmp5A);1;0)
n4:=@if(@IsMember("Exec"; StageAdmin01VDP) & @Elements(tmpA) != @Elements(tmp4A);1;n5);
n3:=@if(@IsMember("StageAdmin"; StageAdmin01VDP) & @Elements(tmpA) != @Elements(tmp3A);1;n4);
n2:=@if(@IsMember("Admin"; StageAdmin01VDP) & @Elements(tmpA) != @Elements(tmp1A);1;n3);
n1:=@if(@IsMember("Owner"; StageAdmin01VDP) & @Elements(tmpA) != @Elements(tmp2A);1;n2);
n0:=@if(n1;0;1);
@if(CurrentStageStatusDP != "Visa";1;n0)
Обучение наступательной кибербезопасности в игровой форме. Начать игру!