Синхронизация таблиц м/у 2-мя компаниями
Уважаемые Гуру, добрый день.
Есть небольшая проблемка, думается коллективный раз должен справиться с оной.
Вообщем суть такова:
Реализовываю синхронизацию различных таблиц м/у компаниями. Все это делаю путем модификации табличных методов insert, update, delete в компании источнике.
с методом insert успешно справился:
данный метод был вызван в методе insert() компании источника, в котором было сделано changeCompany
void insertRec(Common _tableRec)
{
DictTable dt = new DictTable(_tableRec.TableId);
DictField dictField;
FieldId fieldId;
int cnt = dt.fieldCnt(); //кол-во полей в таблице
int i,cntFld=0,cntFldsys=0;
int id;
boolean flag;
;
ttsbegin;
commonRec = dt.makeRecord();
flag = false;
for (i=1; i<=cnt; i++)
{
dictField = new dictField(_tableRec.TableId,dt.fieldCnt2Id(i));
fieldId = dt.fieldCnt2Id(i);
if (!dictField.isSystem())
{//если поле не системное
if (dictField.name(dt.fieldCnt2Id(i)))
{//если поле имеет наименование
id =fieldName2Id(_tableRec.TableId,dictField.name(dt.fieldCnt2Id(i)));
if(id)
{
commonRec.(Id) = _tableRec.(fieldId);
flag = true;
}
}
}
}
if(flag)
{
commonRec.insert();
ttscommit;
}
else
ttsabort;
}
а вот "проблемка" с update. Не охота также тупо перебирать ВСЕ поля таблицы, переприсваивать и потом апдейтить.
Думается мне есть какое-то свойство у поля, по которому можно определить было изменено оно или нет. Если есть то можно получить список этих самых смодифицированных полей и работать ТОЛЬКО с ними.
проблема собственно: Есть ли такой признак и как его правильно юзать (если он все-таки есть) ???
будут желающие поделиться опытом?
|