Обычное дело: как в 7.8 менять цвет строки в зависимости от значения колонок
вот как тут: https://community.terrasoft.ru/forum/topic/12359
только для 7.8
Нравится
Есть статья на академии:
https://academy.terrasoft.ua/documents/technic-sdk/7-8/kastomizaciya-ot…
да, но как сделать в таком случае:
открыл запись, поменял состояние, сохранил, закрыл и цвет остался тот самый, как его обновить?
Виталий, здесь посмотрите - http://www.community.terrasoft.ru/forum/topic/12855
там тоже что уже решено у меня.
как перехватить событие, когда карточку закрыли(сюда нужно вставить обновление записи реестра)
Здравствуйте.
Чтобы среагировать на событие закрытие карточки, достаточно переписать метод onSaved карточки. Другое дело что это карточка, и код вы пишите в карточке, а чтобы секция об этом узнала, то вам необходимое использовать песочницу (сообщения). О песочнице читайте здесь:
http://www.community.terrasoft.ru/forum/topic/15210
Алгоритм:
Сохраняется карточка, в методе onSaved делаете публикацию сообщения.
В секции слушаете это сообщение и делаете reloadGridData
а разве нельзя переписать существующую функцию, ту что обновляет данные из колонок?
А как она узнает что запись изменилась? Никак, для этого и нужна песочница(сообщения).
"Радчук Виталий Владимирович" написал:а разве нельзя переписать существующую функцию, ту что обновляет данные из колонок?
Можно попробовать переопределить метод onCardModuleResponse в нужной схеме раздела (вычислил путем отладки). Этот метод изначально объявлен в схеме NUI.BaseSectionV2 и выглядит следующим образом (взял пример из 7.6):
[javascript]
/**
* Обрабатывает ответ карточки после сохранения записи.
* @param {Object} response
* @return {Boolean}
*/
onCardModuleResponse: function(response) {
this.set("IsCardInChain", response.isInChain);
this.loadGridDataRecord(response.primaryColumnValue);
return true;
}
[/javascript]
У метода loadGridDataRecord вторым параметром можно передать callback метод, который выполнится после обновления полей активной записи грида полями из сохраненной карточки редактирования этой записи. В этом callback-методе и проверять значение нужной вам колонки и менять подсветку записи при необходимости.
Пример реализации, если взять, что цвет записи в гриде зависит от значения кастомного поля TsSpecialFeature:
[javascript]
/**
* Обрабатывает ответ карточки после сохранения записи.
* @overridden
* @param {Object} response
* @return {Boolean}
*/
onCardModuleResponse: function(response) {
this.set("IsCardInChain", response.isInChain);
this.loadGridDataRecord(response.primaryColumnValue, this.onCardModuleResponseCallback);
return true;
},
/**
* Callback-функция обработки результата перечитывания указанной записи из базы данных
* @protected
*/
onCardModuleResponseCallback: function() {
var activeRow = this.getActiveRow();
if (activeRow) {
var tsSpecialFeature = activeRow.get("TsSpecialFeature");
if (tsSpecialFeature &&
tsSpecialFeature.value !== TSCConstants.TsSpecialFeature.None.value) {
activeRow.customStyle = { "background-color": lightTomatoColor};
} else {
activeRow.customStyle = null;
}
}
}
[/javascript]