2 года назад была проблема с дублежами товаров/клиентов/брендов/..
Сделал еще тогда (сейчас наверное скажи написать на память - не смогу) код, который "мержит" данные.
Сейчас полной БД нет, чтобы достать объект, поэтому пишу почти полную МОЮ (ненужное - просто выкинуть) часть кода:
Цитата:
OnAfterGetRecord=VAR
Cust@1210000 : Record 18;
BEGIN
IF (OldCustomer <> '') AND (NewCustomer <> '') THEN
WITH Customer DO BEGIN
Cust.GET(NewCustomer);
CommentLineTmp.RESET;
CommentLineTmp.DELETEALL;
CommentLine.RESET;
CommentLine.SETRANGE("Table Name", CommentLine."Table Name"::Customer);
CommentLine.SETRANGE("No.", Cust."No.");
IF CommentLine.FINDFIRST THEN
REPEAT
CommentLineTmp.INIT;
CommentLineTmp.TRANSFERFIELDS(CommentLine);
CommentLineTmp.INSERT;
CommentLine.DELETE;
UNTIL CommentLine.NEXT = 0;
TmpCustomer.INIT;
TmpCustomer.TRANSFERFIELDS(Cust);
Cust.DELETE;
IF DefaultDimension.GET(DATABASE::Customer, OldCustomer, 'LAND') THEN BEGIN
TmpDefaultDimension.INIT;
TmpDefaultDimension.TRANSFERFIELDS(DefaultDimension);
DefaultDimension.DELETE;
END;
IF GUIALLOWED THEN
Window.UPDATE(1, Text002);
IF RENAME(NewCustomer) THEN BEGIN
TRANSFERFIELDS(TmpCustomer);
MODIFY;
IF GUIALLOWED THEN
Window.UPDATE(1, Text003);
IF CommentLineTmp.FINDFIRST THEN BEGIN
CommentLine.SETRANGE("No.", "No.");
IF CommentLine.FINDLAST THEN
LineNo := CommentLine."Line No."
ELSE
LineNo := 0;
REPEAT
LineNo += 10000;
CommentLine.INIT;
CommentLine.TRANSFERFIELDS(CommentLineTmp);
CommentLine."Line No." := LineNo;
CommentLine.INSERT;
UNTIL CommentLineTmp.NEXT = 0;
END;
END
ELSE BEGIN
TmpCustomer.INSERT;
TmpDefaultDimension.INSERT;
IF GUIALLOWED THEN
Window.UPDATE(1, Text004);
IF CommentLineTmp.FINDFIRST THEN
REPEAT
CommentLine.INIT;
CommentLine.TRANSFERFIELDS(CommentLineTmp);
CommentLine.INSERT;
UNTIL CommentLineTmp.NEXT = 0;
END;
SLEEP(200);
END;
END;