|
![]() |
#1 |
Участник
|
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; |
|