"Быстрый" перебор документов по счету за диапазон дат + некоторые доп.возможности

Автор:Sandy
Дата:26.02.2006
Просмотров:3154
Скачиваний:811
Оценка:, Оценок - 1
Скачать (ARJ-файл; Размер - 5564)

Обсудить в форуме

Описание

Часто нужно просмотреть по счету документы в требуемом диапазоне дат. Задача простая, но когда уж совсем становится лень прописывать проверки и тд и тп, стоит воспользоваться следующим классом: AccountInfo (для рублевых счетов/документов) или AccountCInfo (для валютных счетов/документов).
Перебор идет по архивным документам (arhdoc.dbt, arhdoc$.dbt) и документам текущего дня (document.dbt, documnt$.dbt). "Следы" архивных проводок (Result_Carry == 23) исключаются из перебора. Результат помещается в структуру архивного документа, в т.ч. и документы текущего дня - в этом случае коректно заполняется поле Date_Carry значением {curdate}.

Текст примера

 Пример использования:

import globals, acc_info;

/* {curdate} объявляется в globals ! */

var ai=AccountInfo();

ai.Clear();
ai.SetDateRange( date( 1, 11, 2005 ), {curdate} );
ai.getAccountInfo( "40702810900020000221" );
while ( ai.nextDocCr() ) /* по документам где в кредите (Real_Receiver) стоит требуемый счет */
  if ( substr( ai.rDocBuffer.rec.Real_Payer, 1, 5 ) == "42301" )
    println( ai.rDocBuffer.rec.Payer, " -> ", ai.rDocBuffer.rec.Date_Document, " -> ",
             ai.rDocBuffer.rec.Sum );
  end;
end;
ai.rewindDoc();
while ( ai.nextDocDb() ) /* по документам где в дебете (Real_Payer) стоит требуемый счет */
  if ( substr( ai.rDocBuffer.rec.Real_Receiver, 1, 5 ) == "42301" )
    println( ai.rDocBuffer.rec.Receiver, " -> ", ai.rDocBuffer.rec.Date_Document, " -> ",
             ai.rDocBuffer.rec.Sum );
  end;
end;

/* дополнительно */
println( ai.rClient.rec.Name_Client ); /* доступ к информации клиента счета */
println( ai.rAcc.rec.Account );    /* доступ к информации самого счета */

ai.Clear(); /* все сбросили в исходное состояние