Глава 12. РАЗРАБОТКА ОКОННОГО ИНТЕРФЕЙСА
Компонент запроса балансов TBalance
Этот компонент используется самой системой Allegro для запроса Баланса компании
и Разверток. Вы можете также с успехом использовать этот
компонент для своих целей, например, для построения косвенных
отчетов на основе балансовых показателей.
Свойства Published |
|
ObjectBalance |
Имеет значение при запросе балансов аналитических регистров. Если установлено
True, то баланс запрашивается для аналитического объекта, предварительно
указанного в свойстве Object_id. Если False,
то баланс запрашивается для всех объектов. |
Transaction |
Транзакция |
События |
|
OnProgress |
TProgessEvent = procedure(Sender: TObject; const Position
, Max: Integer) of object; |
Свойства Public |
тип |
readonly |
|
Dates |
свойство-массив элементов типа TDateTime |
readonly |
при вызове метода QueryBalance для каждого элемента массива будет запрошен
отдельный баланс на дату, указанную в этом элементе. |
DateCount |
integer |
readonly |
Количество элементов в свойстве-массиве Dates |
Object_id |
integer |
|
ID аналитического объекта, используется для запроса баланса аналитического регистра
для одного объекта |
Методы, подготовки запросов |
|
function AddDate(Value: TDateTime): integer; |
Добавляет значение в свойство-массив дат Dates. Возвращает
номер добавленного элемента. |
procedure ClearTotals(acc_id: integer); |
Освобождает внутренний буфер, в котором хранятся результаты запроса итогов
, сгруппированных по объектам счета acc_id |
procedure ClearAllTotals; |
Освобождает все буферы, в которых хранятся результаты итогов,
сгруппированных по объектам |
procedure Clear; |
Очищает все буферы и массив дат Dates |
function SaldoToReg(Acc_id: integer): integer
; |
возвращает по acc_id сальдо-счета acc_
id его регистра |
Методы, запрашивающие данные |
|
procedure QueryRates; |
Запрашивает курсы слоев, ближайшие к датам в массиве Dates |
procedure QueryBalance; |
Запрашивает балансы на даты, хранящиеся в массиве Dates |
procedure QueryTotals(acc_id: integer; differential
: boolean); |
Запрашивает итоги по объектам счета acc_id на даты
, хранящиеся в массиве Dates. Если differential=True
, то запрашиваются дифференциальные итоги (разницы между итогами на
соседние даты в Dates) |
Методы для чтения данные из внутренних буферов компонента |
|
|
|
function RateOfExchange(Index, layer_id: integer
): Extended; |
|
function CheckRates(layer_id: integer): integer
; |
Проверяет, присутствуют ли в результатах запроса курсов курсы слоя
layer_id на все даты, хранящиеся в Dates
. Если все в порядке, возвращается –1.
Если какой-то курс отсутствует или равен нулю,
то возвращается его индекс |
5 методов для чтения из внутреннего буфера готовых результаты запроса
для элемента массива дат с индексом Index, для счета
acc_id, слоя layer_id, типа
сальдо saldo_kind. Если SumLayers = True,
то суммирует все слои, конвертируя по кросс-курсам
в валюту слоя layer_id.
Параметр saldo
_kind = 0 используется для счетов дебетового развернутого сальдо
, saldo_kind = 1 для счетов кредитового развернутого
сальдо, а
saldo_kind = -1
для всех обычных счетов |
. |
function Debit(Index, acc_id, layer
_id, saldo_kind: integer; SumLayers
: boolean): Extended; |
Значение дебет-оборота от начала периода. |
function Credit(Index, acc_id, layer
_id, saldo_kind: integer; SumLayers
: boolean): Extended; |
Значение кредит-оборота от начала периода. |
procedure DebitAndCredit(Index, acc_id, layer
_id, saldo_kind: integer; SumLayers
: boolean; var ADebit, ACredit: Extended); |
Значение дебет и кредит-оборотов от начала периода. |
function Balance(Index, acc_id, layer
_id, saldo_kind, root_saldo
: integer; SumLayers: boolean): Extended; |
Значение остатка по счету.
Используйте root_saldo
= 1 для «правых» счетов.
Если
параметр root_saldo = 1, то возвращается разница
кредит-оборот минус дебет-оборот от начала периода
. Если параметр root_saldo <> 1, то
возвращается дебет-оборот минус кредит-оборот от начала
периода. |
procedure Totals(Index, acc_id, layer
_id, saldo_kind, aobject_id
: integer; SumLayers: boolean;
var ADebit
, ACredit: Extended); |
Значение итогов для конкретного объекта object_id на счете
acc_id. Во внутреннем буфере хранятся результаты запроса
для всех объектов этого счета. |
Последовательность работы с компонентом TBalance следующая.
Подготовка:
- Очистить все буферы методом Clear,
- Подготовить массив дат вызовами метода AddDate,
- Запросить курсы всех слоев метода QueryRates,
- Проверить наличие курсов для каждого слоя в отдельности вызовами метода
CheckRates,
Далее,
Если нужно получить баланс(ы) :
- Запросить все балансы методом QueryBalance,
- Считать результаты какими-нибудь методами чтения, например,
DebitAndCredit
Если нужно получить запрос итогов, сгруппированных по объектам,
то для каждого счета следует:
- Очистить буфер методом ClearTotals
- Вызвать QueryTotals для конкретного счета
- Считать результаты вызовами метода Totals
- Желательно потом очистить буфер методом ClearTotals, чтобы не занимать
лишнюю память.
Для работы с компонентом TBalance нужно заранее иметь список счетов
и объектов, для которых Вы хотите получить финансовые данные
. Для этой цели конфигурирующий может использовать обычные запросы к
системным таблицам.
Как правило компонент TBalance используется для построения косвенных отчетов на
основе данных из баланса, например, Отчета о движении
денежных средств или Отчета о движении капитала.
|