Показать сообщение отдельно
Старый 27.09.2011, 20:18   #12  
coolibin is offline
coolibin
Участник
 
264 / 68 (3) ++++
Регистрация: 07.04.2005
Navision
Цитата:
Сообщение от 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() - нет.