Цитата:
Сообщение от
miklenew
Тоже надоела ненужная синхронизация.
В результате переписал метод вот так:
X++:
boolean dbSynchronize(tableId tableId = 0, // 0 = all tables, non-zero is a valid table handle
boolean syncAsNeeded = true, // true = objects touched in the AOT, false = unconditional synchronize
boolean continueOnError = true,
boolean showProgress = true ) // true = report all problems, but throw only after all tables are synchronized, false = stop synchronize after first error/problem
{
SqlSyncPending sqlSyncPending = new SqlSyncPending();
boolean ok;
;
setPrefix("@SYS22807");
if (SQLSyncPending.databaseTouched() &&
Box::yesNo("Синхронизировать?", DialogButton::Yes) == DialogButton::Yes)
ok = super(tableId, syncAsNeeded, continueOnError, showProgress);
else
{
new SQLSyncPending().databaseTouched(false);
ok = true;
}
if (ok && this.isRunningMode())
{
SysApplicationSetup::saveApplicationVersion(SysApplicationSetupMode::Synhronize);
// HansBred - SP4 - PS #5544
SysSQLInitDbTriggers::CheckExistsDBTriggers();
}
return ok;
}
Но теперь если я просто хочу встать на любую таблицу и синхронизировать её, то никаких действий не происходит.
Может кто знает как довести до ума?
Это из-за вот этого
if (SQLSyncPending.databaseTouched() &&
Когда просто синхронизиться таблица "по требованию" то "точед"==false и у вас синхронизация никогда не выполняется. В случае же изменения EDT там будет true.
Т.е. надо спрашивать только тогда когда SQLSyncPending.databaseTouched()==true (ну или вообще всегда

)