Цитата:
Сообщение от
S.Kuskov
У вас сама вставка записи в t2 происходит? Метод t2_ds.write() не перекрыт?
Вставка записи происходит в коде, напрямую в таблицу без участия датасорса. Потом датасорс основной таблицы, t1 в форме рефрешится (дерганием метода формы из класса), так что новая запись t2 тоже перерисовывается. Но после завершения работы класса в create() курсор t2 уже не имеет признака модификации (что вполне логично).
X++:
public void create(boolean _append = false) //create a rec in t1
{
super(_append);
SomeRunBaseClass::DoWork(...);
if (t2.RecId != 0)
{
t2_DS.forceWrite(true); // не вызывает валидации при последующем уходе с записи t1
//t2.SoeField = "blablabla" ; // так валидация будет вызвана
}
}
Я же хочу этот признак ему выставить принудительно, чтобы попытка уйти с текущей записи основной таблицы (t1) сопровождалась вызовом valildatewrite() для записи подцепленной (t2) таблицы. Не понятно, почему переприсвоение значения любого поля выставляет признак модификации, а forseWrite() - нет.