Достоверный способ определения режима в котором открыта карточка (Combined/Separated)

7.8 - 7.10

this.getHistoryStateInfo().workAreaMode;

по прежнему дает противоречивые результаты:
"1" в Separate режиме, и в Combined режиме (при закрытом вертикальном реестре).
"2" - только в случае если вертикальный реестр в Combined режиме открыт.

Иметь возможность достоверно определить режим - очень важна, но других способов пока не обнаружено.

примерный юзкейс:
Есть некие проверки доступности кнопок/полей/пунктов вертикального меню, пунктов меню "Действия", основанные на принадлежности текущего пользователя к орг.юнитам, функц.полям.
Если мы имеем Combined режим - нам достаточно провести их единожды на уровне секции, после переключаясь по карточкам через событийную модель контролировать уже рассчитанные значения аттрибутов. В самой-же карточке такой функционал так же обязан быть, на случай если она будет открыта в Separate режиме, но так же и желательно иметь возможность определить режим, иначе в Combined режиме каждый раз при загрузке схемы (переключение карточек) эта логика будет выполняться.
А вот например определение принадлежности пользователя к функ.ролям, орг.юнитам - это запросы в БД

Нравится

6 комментариев

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

Добрый день, Илья!

Дело в том, что workAreaMode завязан на ссылку в адресной строке, а она меняется при скрытии реестра, что и вызывает данное поведение. К сожалению, других способов определить режим пока что нет, но архитектурные работы в этом направлении ведутся, возможно, для этого случая добавят новый mode == 3.

"Кот Владимир Владимирович" написал:добавят новый mode == 3.

Это будет выглядеть разумно:
workAreaMode = 1 (Separate Mode)
workAreaMode = 2 (Combined Mode without Section Registry) Вертикальный реестр скрыт
workAreaMode = 3 (Combined Mode with Section Registry) Вертикальный реестр открыт

Хотя на самом деле непонятно зачем собственно различать между собой 2 и 3 :)

Как временный "лайфхак"
оказалось есть вот такой (возможно косвенный, но судя по именоваию атрибута - это и есть его предназначение)

this.values.IsSeparateMode

Принимает соответственно true и false (Проверил, вроде работает корректно)

PS: Кто ни будь из официальной поддержки - можете подтвердить надежность этого признака ?

Илья, уточнил у разработчиков ядра - да, можно использовать это значение.

Отлично. Большое спасибо за оперативное подтверждение.
Эх, если-б раньше знать сей "трюк", скольких костылей - можно было бы избежать.

Показать все комментарии