Объектные типы
Для удобной работы с хозяйственными операциями, проводками, счетами и базами данных в языке Инфо-Бухгалтера есть понятие объекта. С помощью объектов легче управлять структурированными данными. Объем формульного раздела бланков и типовых операций при использовании объектов сокращается.
Большинство функций, предназначенных для работы с журналом хозяйственных операций, планом счетов и базами данных, имеют аналоги в методах соответствующих объектов. В новых разработках предпочтительнее использование методов.
Сам объект является переменной одного из типов, которые описываются следующими ключевыми словами:
База данных | – | ТИП_БД |
База данных с поддержкой SQL | – | ТИП_SQL |
Операция | – | ТИП_ОПЕРАЦИЯ |
Проводка | – | ТИП_ПРОВОДКА |
Список | – | ТИП_СПИСОК |
Счет | – | ТИП_СЧЕТ |
Файл | – | ТИП_ФАЙЛ |
Фильтр | – | ТИП_ФИЛЬТР |
Фильтр ПС | – | ТИП_ФИЛЬТР_ПС |
Шрифт | – | ТИП_ШРИФТ |
График | – | ТИП_ГРАФИК |
Тип COM | – | ТИП_COM |
Объект идентифицируется, как и переменная, по имени.
Полями объекта называются его специфические признаки. Например, для проводки это будут коды дебета и кредита, сумма и количество. Каждое поле является, в свою очередь, переменной одного из стандартных типов. Обращение к полям происходит по их именам, которые определены для каждого объекта.
Так для объекта "Проводка" поля имеют следующие имена и типы:
дебет | – | ТИП_СТРОКА; |
кредит | – | ТИП_СТРОКА; |
сумма | – | ТИП_ЧИСЛО; |
количество | – | ТИП_ЧИСЛО. |
Полям объектов можно задавать и получать из них значения соответствующих типов. Следует отметить, что у объектов могут быть некоторые признаки, которые не являются полями из-за своего типа или возможности изменения. Например, у операции может быть любое количество проводок, поэтому эта структура не может быть представлена как поле.
Другой пример – это имя DBF-файла у базы данных. Он должен быть доступен только для чтения и поэтому не может быть полем. В этих случаях доступ к таким признакам осуществляется с помощью методов объекта.
Методы объектных типов
Методом называется функция, относящаяся к объекту определенного типа. С помощью методов информацию объектов можно изменять и получать. Методы бывают как встроенные, так и внешние. Внешние методы подобны функциям и содержатся в библиотеках. Для обращения к полям и методам объекта используется точка:
<имя объекта>.<имя поля или метода>
Чтобы создать объект, необходимо выполнить специальную функцию, которая называется конструктором. При создании переменной в языке Инфо-Бухгалтера не требуется предварительного описания, а лишь присвоение ей значения, которое определяет в дальнейшем ее тип. Для объекта же такой механизм не применим, т.к. у него нет значения. Поэтому, при создании объекта, необходимо явно указать, какого типа объект мы хотим получить.
Указание типа объекта осуществляется либо путем задания ключевых слов ТИП_ПРОВОДКА, ТИП_ФАЙЛ и т.п. в универсальном конструкторе СОЗДАТЬ, либо при использовании специальных конструкторов, присущих конкретному типу.
Пример:
Для создания переменной Оп типа "Операция" надо написать:
При использовании универсального конструктора СОЗДАТЬ поля объекта обнуляются. Дата становится равной текущей.
СОЗДАТЬ(Оп, ТИП_ОПЕРАЦИЯ)
При использовании специального конструктора хозяйственной операции ОПЕР_СЧИТАТЬ происходит загрузка полей объекта Оп в соответствии со второй операцией в журнале
Оп = ОПЕР_СЧИТАТЬ(2)
Если вторично встречается конструктор какого-либо объекта, то это не вызывает ошибки, новый объект не создается, а поля обнуляются. Объекты Инфо-Бухгалтера, как и другие переменные, существуют до окончания работы с бланком. Определение собственных типов объектов в языке Инфо-Бухгалтера не поддерживается.
Все объекты, кроме баз данных и файлов, можно присваивать друг другу. При этом копируются все поля объекта и необходимые невидимые признаки (например, ряд проводок у хозяйственной операции). Если существует объект тип счет Сч1, то запись
Сч2 = Сч1
создаст новый объект Сч2, все поля которого будут равны полям Сч1. Если объект Сч2 уже существовал, то его поля изменяются и становятся равными полям Сч1.
Присвоение файлов баз данных является недопустимым и приводит к ошибке.
Объекты можно сравнивать на равенство и неравенство. При этом сравниваются значения всех их полей. Для объекта операция, кроме полей сравниваются все проводки. Для баз данных сравниваются только имена DBF-файлов, а для объекта "Файл" сравниваются имена текстовых файлов.