DAX 3.0 SP3
Есть на таблице
А edit-метод, редактирующий одно ссылочное поле и возвращающий наименование из ссылочной таблицы
B, следующего вида :
X++:
edit Name groupName(boolean _set = false, InvestmentAccessGroupCode _id = this.InvestmentAccessGroupCode)
{
if(_set) this.InvestmentAccessGroupCode = _id;
return (select GroupName from InvestmentGroupAccess where this.InvestmentAccessGroupCode == InvestmentGroupAccess.GroupCode).GroupName;
}
У таблицы
А по этому полю прописан Relation на таблицу
B со свойством Validate = Yes.
Есть форма с гридом по таблице
А, один из контролов которого завязан на этот edit-метод.
Ситуация : встаем в форме на запись таблицы
А с корректным значением ссылки(и результатом edit-метода, естесственно) и, не вызывая lookup, удаляем в контроле , привязанном к edit-методу и доступному для редактирования, часть текста и делаем переход на соседнюю строку.
В оставленной нами строке результат edit-метода - пустой, значение ссылки на таблицу
B - кусок текста, являвшегося результатом нашего редактирования и кастрированного до размера EDT ссылочного поля.
Вопрос - где был обозначенный Relation в моменты изменения записи и перехода с нее и что он вообще делал ?
Конечно, подобную ситуацию можно исправить, добавив к проверке на булевский _set еще и проверку на наличие записи в ссылочной таблице через ее метод exist(), однако в таком случае не оставляет смутное ощущение, что меня где-то обманули .
P.S. В 4.0 SP2 FP2 EE аналогично ...