Top.Mail.Ru
25 июля в 17:00 по МСК
Регистрируйся!
Онлайн-митап по 1С «Типовой механизм многопоточности БСП»

1С. DBF файлы и работа с ними

Формат DBF (Data Base File) был введен в обиход компанией Ashton-Tate в 1980 году, в первой СУБД семейства систем управления базами данных dBase — dBase II.

Открытый формат данных и популярность изначальной системы привели к появлению множества различных аналогов СУБД, таких как FoxPro, dbFast, XBase++ и других. При этом разработчики вносили различные изменения в базовый формат связанные с функциональностью (добавление новых типов данных, изменение структуры заголовка или структуры полей таблицы и т.д.).

Отсутствие какой-либо жесткой стандартизации и подобные изменения повлекли за собой отсутствие гарантий что разрабатываемая программа сможет корректно выполнить операцию чтения/записи с любым dbf-файлом. Тем не менее, сохраняется базовая совместимость между различными форматами DBF.

DBF-файл состоит из 2 разделов: заголовок и непосредственно сама таблица данных. Заголовок содержит общую информацию о dbf-файле: структуру файла, количество записей, используемая версия dbf, объем памяти занимаемый заголовком и таблицей и т.п. Состав структуры заголовка отличается в различных версиях формата.

Конец файла помечается маркером EoF (End Of File).

Для ускорения работы с dbf-файлами существует возможность использования индексных файлов, в котором перечислены значения ключевого поля (или совокупность ключевых полей, если файл мульти индексный) и идентификаторы соответствующих записей.

 

В 1С работа с dbf-файлами может осуществляться несколькими способами:

  • Объект XBase;
  • Интерфейс программирования

 

Объект XBase

Объект XBase обеспечивает возможность работы с базами данных формата DBF с помощью встроенного языка 1С:Предприятие.

Данный объект обеспечивает доступ к коллекции полей и индексов dbf-таблицы, позволяет выполнять любые действия над данными (создание новых и чтение существующих таблиц, добавление, корректировка и удаление записей).

Для каждого файла dbf, с которым предстоит работать, требуется создавать отдельный объект XBase.

 

Интерфейс программирования ADO

ADO (ActiveX Data Objects) – интерфейс программирования для доступа к данным, позволяющий получить данные из различных источников.

 

Основные объекты ADO позволяющие выполнять манипуляции с dbf-файлом:

— Connection

— Recordset

— Command

С полным перечнем объектов и их свойств можно ознакомиться в MSDN.

Connection – объект, непосредственно обеспечивающий доступ к dbf-файлу

Open(ConnectionString) Открывает сеанс работы с источником данных. В качестве параметра передается строка соединения вида “ Provider=Microsoft.Jet.OLEDB.4.0;Data Source=;
Extended Properties=dBASE IV;User ID=;Password=;”
В параметр DataSource указывается папка, в которой находятся файлы dbf.
Close() Закрывает соединение с источником данных
Provider Содержит имя используемого провайдера. При выполнении метода Open автоматически заполняется значением  Provider из строки подключения
ConnetionString Содержит строку подключения. При выполнении метода Open автоматически заполняется параметром функции ConnectionString
ConnetionTimeout Содержит число секунд ожидания при подключении. По умолчанию — 15
CommandTimeout Содержит число секунд ожидания при выполнении команды. По умолчанию — 30
Execute(CommandText) Выполняет запрос, осуществляет вызов хранимой процедуры или любой другой команды доступной на стороне провайдера.

 

Recordset – объект представляющий из себя набор записей (строк) таблицы данных

ActiveConnection Определяет объект типа Connection. В качестве значения можно задавать как объект типа Connection, так и текстовую строку аналогичного вида, как и свойство ConnectionString у объекта Connection
ActiveCommand Определяет объект типа Command в результате выполнения которого был получен данный RecordSet
Filter Содержит фильтр данных, который необходимо применить к данному RecordSet.
Close Закрывает объект RecordSet
Requery Выполняет обновление объекта путем повторного запроса к таблице. Аналогичен последовательному вызову Close() Open()
BOF/ EOF Признаки начала/конца таблицы. Если BOF=Истина, тогда указатель находиться перед первой записью объекта RecordSet. Если EOF = Истина, тогда указатель находится после последней записи объекта RecordSet
Move Осуществляет сдвиг указателя текущей записи вперед на указанное количество записей (или назад, если это число отрицательное)
MoveFirst Осуществляет сдвиг указателя на первую запись
MoveLast Осуществляет сдвиг указателя на последнюю запись
MoveNext Осуществляет сдвиг указателя на следующую запись
MovePrevious Осуществляет сдвиг указателя на предыдущую запись
Fields Содержит коллекцию полей. Через конструкцию (“Имя_Поля”).Value можем получить значение указанного в текущей строке.
Find Осуществляет поиск строки по заданным критериям.
GetString Позволяет получить строковое представление текущей строки

 

Command – объект обеспечивающий выполнение команд или SQL-запросов

ActiveConnection Определяет объект типа Connection. В качестве значения можно задавать как объект типа Connection, так и текстовую строку аналогичного вида как и свойство ConnectionString у объекта Connection
CommandText Строка, определяющая действие команды. Это может быть как SQL-запрос, название хранимой процедуры, имя таблицы и т.д.
CommandTimeout Содержит число секунд ожидания при выполнении команды. По умолчанию — 30
Execute() Запускает выполнение команды.

 

 

Автор: Мусатов Андрей

Comments

So empty here ... leave a comment!

Добавить комментарий

Sidebar