Показать сообщение отдельно
Старый 04.02.2010, 08:34   #18  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,443 / 1781 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
И стоило городить всё это ради такой ерунды? Ну да ладно, как говорится, опыт - сын ошибок трудных.
Для решения поставленной задачи вам необходимо в момент смены даты в InvetJournalTable (а совершенно гарантированно этот момент можно отловить в методе update() таблицы InvetJournalTable) синхронно (т.е. в одной транцакции) менять значения даты и в таблице InvetJournalTrans.
Например так:
X++:
public void update()
{
    InventJournalTrans InventJournalTrans;
    ;

    ttsbegin;
    if (this.TransDate != this.orig().TransDate)
    {
        update_recordset InventJournalTrans
        setting TransDate = this.TransDate
        where InventJournalTrans.JournalId == this.JournalId;
    }
    
    super();
    ttscommit;
}
Обратите внимание. Метод InvetJournalTable.update() будет вызываться как при штатном сохранении записи CTRL+S, так и при аварийном выходе при нажатии ESC. Более того, если по каким-нибудь причинам у пользователя появится возможность изменить дату журнала с како-либо другой формы, этот код также отработает. Т.е. синхранизация данных обеспечивается на уровне тригеров таблиц и не зависит от пользовательского интерфейса