не отрабатывает бизнес-правило проверки вводимого значения в мобильном приложении
Здравствуйте!
Добавил бизнес-правило проверки вводимого значения. Оно то работает, то нет. Иногда появляется сообщение, что значение некорректно, но, если кликнуть на другое поле, то сообщение исчезает и система позволяет сохранить объект с некорректным значением. Прошу помочь разобраться.
Нравится
Terrasoft.sdk.Model.addBusinessRule("ScpObject", { name: "ScpObjectAreaValidatorRule", ruleType: Terrasoft.RuleTypes.Custom, triggeredByColumns: ["ScpObjectArea"], events: [Terrasoft.BusinessRuleEvents.Save, Terrasoft.BusinessRuleEvents.ValueChanged], executeFn: function (record, rule, column, customData, callbackConfig) { var isValid = false; var ssArea=0; var curArea = record.get("ScpObjectArea"); if(Terrasoft.SysSettings.MinScpObjectArea !== undefined) { ssArea=Terrasoft.SysSettings.MinScpObjectArea; } isValid = curArea>=ssArea; record.changeProperty("ScpObjectArea", { // Установка признака корректности колонки. isValid: { value: isValid, message: Terrasoft.LocalizableStrings.InvalidScpArea + ssArea } }); // Асинхронный возврат значений. Ext.callback(callbackConfig.success, callbackConfig.scope); } });
Сергей, а Вы не проверяли, как будет работать, если заменить проверку системной настройки на константу с таким же значением? Может, в некоторых случаях оно не считывалось, из-за чего валидация работала неправильно?
Добрый день, Александр!
Как хорошо, что Вы ответили. Я уже начал отчаиваться. Итак, прописал жестко цифру - и результат тот же. Кроме того, еще явно пробовал указать в коллбэк функции результат: Ext.callback(callbackConfig.success, callbackConfig.scope, [isValid]);, но это тоже не помогло. В отладчике видно, что isValid=false, однако, сообщение о некорректно заполненном поле и отмены сохранения не происходит.
Сергей, так пока не нашли причину, не особо хорошо.
Сравниваю Ваш фрагмент с академией, на первый взгляд, особых отличий и нет. Разве только другой синтаксис локализируемых строк в значении message, чем у Вас.
А если добавить правило такое же, как в том примере для раздела активностей, оно будет работать всегда или так же само, как Ваше?
Сергей, как Вам будет удобнее, мне кажется, лучше попробовать именно так. Ведь Вы свой вариант делали по образцу написанного.
Если и там неправильное поведение повторится, то будет понимание, что дело либо в Вашей системе (например, бинарных файлах), либо в примере.
Сергей, извините, не увидел сразу ответа. Получается, проблема конкретно в Вашей карточке или её объекте, конфликтующей с добавленными правилами? Может, стоит обратиться к поддержке, предоставить доступ к системе для анализа?
Здравствуйте.
Перетряс код, провел тестирование. В результате замечено следующее: при попытке внести значения, которые не удовлетворяют ограничениям, в режиме просмотра - значение вносится, сообщение об ошибке не показывается, но при выходе из элемента и повторном входе - значения остаются прежними (теми, которые были до попытки изменить). Если же зайти в режим редактирования элемента и попытаться внести недопустимые значения, то появляется сообщение об ошибке и сохранить не удается. Получается, что на данный момент есть только проблема с отображением сообщения о некорректном значении в режиме просмотра. Само некорректное значение сохранить система не позволяет.