Показать сообщение отдельно
Старый 27.02.2013, 00:39   #10  
RedFox is offline
RedFox
Участник
 
1,441 / 10 (0) +
Регистрация: 28.12.2004
Адрес: Киев
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;