Обычное дело: как в 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):
/** * Обрабатывает ответ карточки после сохранения записи. * @param {Object} response * @return {Boolean} */ onCardModuleResponse: function(response) { this.set("IsCardInChain", response.isInChain); this.loadGridDataRecord(response.primaryColumnValue); return true; }
У метода loadGridDataRecord вторым параметром можно передать callback метод, который выполнится после обновления полей активной записи грида полями из сохраненной карточки редактирования этой записи. В этом callback-методе и проверять значение нужной вам колонки и менять подсветку записи при необходимости.
Пример реализации, если взять, что цвет записи в гриде зависит от значения кастомного поля TsSpecialFeature:
/** * Обрабатывает ответ карточки после сохранения записи. * @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; } } }