В 3.3.2.* при изменении значения в ENUM-поле событие OnDatasetDataChange происходит некорректно
Здравствуйте, уважаемые коллеги!
Заметил серьёзную ошибку в поведении датасета.
В 3.3.2.262 (независимо подтверждено в 240 и в 198) при изменении значения в ENUM-поле событие OnDatasetDataChange происходит два раза. При изменении полей других типов это событие происходит как следует, один раз.
Воспроизвести очень легко: поставить debugger на DataChange. Стоит в карточке поменять поле enum - войдёт в отладчик дважды.
При этом проверка DataField.Value == DataField.OldValue оба раза возвращает false, отличить реальный DataChange от повторного срабатывания по этому признаку нельзя, приходится запоминать прежнее значение в глобальном объекте скрипта, чтобы обойти ошибку.
Пока ошибка не исправлена, один из возможных вариантов универсальной заглушки выглядит так:
function dlDataOnDatasetDataChange(DataField) {
var DataFieldName = DataField.Name;
var DataFieldValue = DataField.Value;
if (DataField.FieldType == dftEnum){//Для полей типа ENUM
if (ScriptObject[DataFieldName] == DataFieldValue){
return;//Если значение в действительности не менялось - выходим, это второй, ошибочный заход
} else {
ScriptObject[DataFieldName] = DataFieldValue;
}
}
// дальше сама обработка...
Нравится
В пост призываются специалисты технической поддержки с номером инцидента и сроками разрешения:smile:
Любопытная деталь: с этой ошибкой сталкивались очень многие разработчики, и я сам видел её не раз. Но поступал по принципу "не верь глазам своим". Собственно, мне указал на неё новый сотрудник, и реакция у меня была "не может быть, это ты что-то напутал". Пришлось преодолеть определённый психологический барьер чтобы убедиться: да, такая ошибка реально существует.
Анатолий, данная проблема уже была отмечена сотрудником Terrasoft Константином Пихало и исправлена начиная с версии 3.4.1.28
На 3.4.0. и 3.3.2 пока не переносили данные изменения.
Здравствуйте, коллеги!
Обходное решение есть, проблема исправлена в версии 3.4.1. К сожалению, перенос исправления на 3.4.0, и на 3.3.2 не планируется.
А что там с переходом с 3.4 на 3.4.1? А то как то неприятно получается актуальная версия уже без планов на исправление багов
Перенос исправления пусть не планируется, а исправить ошибку надо!
Предполагаю что билд 3.3.2.262 поновее чем 3.4.1, тем более что на 3.4.1 проекты можно по пальцам пересчитать.
По данному вопросу создан запрос на изменение, Deadline по запросу на изменение: 06.04.2012
Здравствуйте, коллеги
Исправление войдет в сборки начиная с:
- 3.3.2.266+
- 3.4.0.118+
- в 3.4.1 это исправление уже было.
Выслал Вам на почту ссылку на скачивание бинарных файлов 3.3.2.266
"Яворский Алексей" написал:
Спасибо за помощь и оперативность!