При добавлении, удалении или изменении записи детали "Бонусы", поле "Бонус по плану" каждой записи пересчитывается относительно суммы полей "Доля" всех записей. Пересчет реализован на сервере при событиях 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.
Как заставить грид детали обновиться при добавлении новой записи?
Нравится
Решил проблему с помощью reloadEntity()
Но, может быть, все-таки есть способ обновить грид детали не обновляя страницу проекта?
Интересный факт - при нажатии на колонку грида, чтобы отсортировать по ней записи - данные обновляются.
Олег, добрый день!
Уточните, пожалуйста, версию, которую Вы используете.
Здравствуйте, Олег!
Рекомендую посмотреть процессы, реализованные в объекте "Продукт в заказе" - при добавлении или удалении записи запускается процесс, которые пересчитывает поле "Итого".
Аналогичным образом может быть реализована Ваша задача.
Важно! При добавлении/удалении записи, Вам необходимо (на сколько я понял), пересчитывать не только значение поля в самом разделе, но еще и все записи в объекте детали, у которых поле для связи с объектом содержит то же значение, что и у добавляемой/удаляемой записи.