0
Голосовать

Отслеживание факта возвращения на карточку по Chain и обновление данных загруженных в lookupListConfig -> columns

Создано:

Суть:
Есть некая карточка (н/п MyCustomPageV2) которая содержит справочное поле (н/п Owner).
В бизнес-логике карточки, необходимо значение поля (н/п Status) сущности экземпляр которой выбран в справочном поле Owner
используем для этого штатный механизм конфигурирования поля как атрибута, lookupListConfig и его свойства columns

attributes: {
...
"Owner": {
        lookupListConfig: {
                columns: ["Status"],
        }
}

...
}

Что позволяет организовать как-бы "просмотр внутрь" справочного поля и предоставление значения колонки Status выбранного значения.
Проблема:
Юзер открывает карточку MyCustomPageV2, в модели для поля Owner было загружено так же поле Status (к примеру оно содержит значение "X").
Теперь пользователь через гиперссылку справочного поля перешел на карточку сущности Owner изменил там значение Status (к примеру на значение "Y"), нажал "Сохранить", и тем самым вернулся в MyCustomPageV2 (из Chain). Теперь если мы обратимся к полю Owner и его колонке Status
this.get("Owner").Status

то оно по прежнему содержит значение "X"
Вопросы:

  1. Это баг ? или так и должно быть ?
  2. Если так и должно быть, то вероятно есть способ акутализировать данные колонок полей указанных в lookupListConfig -> columns? Как это сделать ?
  3. Как вообще можно отреагировать на "возвращение в карточку" при переходе из Chain (по "Закрыть" или "Сохранть" и т.д. открытых "поверх" карточек других сущностей) ? В таком случае, в виде "костыля" можно было бы хоть сделать ESQ запрос и актуализировать данные вручную

вот...

Комментарии

Артем Гура

Добрый день!
Это не баг. У вас в первой карточке своя модель, которая загрузила значение Х. Изменения этого значения в БД не приведет к изменению значения в модели (Именно это вы и делаете из другой карточки - сохраняете в БД).
Задача в 2 этапа:
1. Нотификация изменений
2. Загрузка актуальных значений

Варианты решений:
1. Можно сделать обмен сообщениями между модулями
2. Загрузка актуальных...у всех наследников BasePage есть метод reloadEntity - он актуализирует данные

Севостьянов Илья Сергеевич

Хорошо, про reloadEntity мне известно,
но как мне инициировать его в момент когда пользователь "вернулся" в карточку,
есть ли какая-то событийная модель на этот случай, какой-то прием который позволит этот самый reloadEntity запустить тогда когда он нужен ?