Руководство разработчика

Объектные типы

Для удобной работы с хозяйственными операциями, проводками, счетами и базами данных в языке Инфо-Бухгалтера есть понятие объекта. С помощью объектов легче управлять структурированными данными. Объем формульного раздела бланков и типовых операций при использовании объектов сокращается.

Большинство функций, предназначенных для работы с журналом хозяйственных операций, планом счетов и базами данных, имеют аналоги в методах соответствующих объектов. В новых разработках предпочтительнее использование методов.

Сам объект является переменной одного из типов, которые описываются следующими ключевыми словами:

База данныхТИП_БД
База данных с поддержкой SQLТИП_SQL
ОперацияТИП_ОПЕРАЦИЯ
ПроводкаТИП_ПРОВОДКА
СписокТИП_СПИСОК
СчетТИП_СЧЕТ
ФайлТИП_ФАЙЛ
ФильтрТИП_ФИЛЬТР
Фильтр ПСТИП_ФИЛЬТР_ПС
ШрифтТИП_ШРИФТ
ГрафикТИП_ГРАФИК
Тип COMТИП_COM

Объект идентифицируется, как и переменная, по имени.

Полями объекта называются его специфические признаки. Например, для проводки это будут коды дебета и кредита, сумма и количество. Каждое поле является, в свою очередь, переменной одного из стандартных типов. Обращение к полям происходит по их именам, которые определены для каждого объекта.

Так для объекта "Проводка" поля имеют следующие имена и типы:

дебетТИП_СТРОКА;
кредитТИП_СТРОКА;
суммаТИП_ЧИСЛО;
количествоТИП_ЧИСЛО.

Полям объектов можно задавать и получать из них значения соответствующих типов. Следует отметить, что у объектов могут быть некоторые признаки, которые не являются полями из-за своего типа или возможности изменения. Например, у операции может быть любое количество проводок, поэтому эта структура не может быть представлена как поле.

Другой пример – это имя DBF-файла у базы данных. Он должен быть доступен только для чтения и поэтому не может быть полем. В этих случаях доступ к таким признакам осуществляется с помощью методов объекта.

Методы объектных типов

Методом называется функция, относящаяся к объекту определенного типа. С помощью методов информацию объектов можно изменять и получать. Методы бывают как встроенные, так и внешние. Внешние методы подобны функциям и содержатся в библиотеках. Для обращения к полям и методам объекта используется точка:

<имя объекта>.<имя поля или метода>

Чтобы создать объект, необходимо выполнить специальную функцию, которая называется конструктором. При создании переменной в языке Инфо-Бухгалтера не требуется предварительного описания, а лишь присвоение ей значения, которое определяет в дальнейшем ее тип. Для объекта же такой механизм не применим, т.к. у него нет значения. Поэтому, при создании объекта, необходимо явно указать, какого типа объект мы хотим получить.

Указание типа объекта осуществляется либо путем задания ключевых слов ТИП_ПРОВОДКА, ТИП_ФАЙЛ и т.п. в универсальном конструкторе СОЗДАТЬ, либо при использовании специальных конструкторов, присущих конкретному типу.

Пример:

Для создания переменной Оп типа "Операция" надо написать:

При использовании универсального конструктора СОЗДАТЬ поля объекта обнуляются. Дата становится равной текущей.

СОЗДАТЬ(Оп, ТИП_ОПЕРАЦИЯ)

При использовании специального конструктора хозяйственной операции ОПЕР_СЧИТАТЬ происходит загрузка полей объекта Оп в соответствии со второй операцией в журнале

Оп = ОПЕР_СЧИТАТЬ(2)

Если вторично встречается конструктор какого-либо объекта, то это не вызывает ошибки, новый объект не создается, а поля обнуляются. Объекты Инфо-Бухгалтера, как и другие переменные, существуют до окончания работы с бланком. Определение собственных типов объектов в языке Инфо-Бухгалтера не поддерживается.

Все объекты, кроме баз данных и файлов, можно присваивать друг другу. При этом копируются все поля объекта и необходимые невидимые признаки (например, ряд проводок у хозяйственной операции). Если существует объект тип счет Сч1, то запись

Сч2 = Сч1

создаст новый объект Сч2, все поля которого будут равны полям Сч1. Если объект Сч2 уже существовал, то его поля изменяются и становятся равными полям Сч1.

Присвоение файлов баз данных является недопустимым и приводит к ошибке.

Объекты можно сравнивать на равенство и неравенство. При этом сравниваются значения всех их полей. Для объекта операция, кроме полей сравниваются все проводки. Для баз данных сравниваются только имена DBF-файлов, а для объекта "Файл" сравниваются имена текстовых файлов.


См. также