Обновление грида детали

При добавлении, удалении или изменении записи детали "Бонусы", поле "Бонус по плану" каждой записи пересчитывается относительно суммы полей "Доля" всех записей. Пересчет реализован на сервере при событиях onSaved и onDeleted. Обновление грида детали происходит при помощи subscriber:

"SxProjectTeamBonus": {
"schemaName": "SxProjectTeamBonusDetailV2",
"entitySchemaName": "SxProjectTeamBonus",
"filter": {
"detailColumn": "SxProject",
"masterColumn": "Id"
},
subscriber:function(){
this.updateDetail(
{
detail: "SxProjectTeamBonus",
reloadAll: true
}
);
}
}
При удалении или изменении записи, в гриде детали на странице проекта отображаются верные значения. Но при добавлении правильные значения только у добавленной записи. Остальные же не обновляются. В базу заносятся правильные значения, но деталь просто отказывается обновляться.
Пробовал и this.updateDetail({detail: "SxProjectTeamBonus"}) и this.updateDetails() и при помощи SUBSCRIBE/PUBLISH.
Как заставить грид детали обновиться при добавлении новой записи?

Нравится

4 комментария

Решил проблему с помощью reloadEntity()
Но, может быть, все-таки есть способ обновить грид детали не обновляя страницу проекта?
Интересный факт - при нажатии на колонку грида, чтобы отсортировать по ней записи - данные обновляются.

Олег, добрый день!

Уточните, пожалуйста, версию, которую Вы используете.

Версия BPMOnline 7.5

Здравствуйте, Олег!

Рекомендую посмотреть процессы, реализованные в объекте "Продукт в заказе" - при добавлении или удалении записи запускается процесс, которые пересчитывает поле "Итого".
Аналогичным образом может быть реализована Ваша задача.

Важно! При добавлении/удалении записи, Вам необходимо (на сколько я понял), пересчитывать не только значение поля в самом разделе, но еще и все записи в объекте детали, у которых поле для связи с объектом содержит то же значение, что и у добавляемой/удаляемой записи.

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