Трюки программирования (A->B->A)
В Codeunit 12404 есть такой фрагмент:
LOCAL PROCEDURE CheckTransaction@6();
BEGIN
{
Уничтожаются все записи во временной таблице "Фин. Корресп. Буфер Учета" [12402], для которых поля "Фин. Книга Сумма" и "Фин. Корресп. Сумма" не равны. Если были потерты все записи, то выход.
}
WITH DoubleEntryBufferTemp DO BEGIN
IF NOT FIND('-') THEN
EXIT;
REPEAT
IF "G/L Amount" = "G/L Corresp. Amount" THEN
DELETE;
UNTIL NEXT = 0;
IF NOT FIND('-') THEN
EXIT;
END;
// А вот что это за цирк:
WITH DoubleEntryBuffer DO BEGIN
LOCKTABLE();
REPEAT
DoubleEntryBuffer := DoubleEntryBufferTemp;
IF FIND THEN
DELETE;
DoubleEntryBuffer := DoubleEntryBufferTemp;
INSERT;
UNTIL DoubleEntryBufferTemp.NEXT = 0;
END;
END;
Кажется, что запись копируется, запись стирается и на ее место вставляется только что скопированная запись. Казалось бы, код совершенно лишний. В чём тонкость и что делает этот кусок кода?
|