Вступайте в мою группу помощник программиста.
В ней мы обсуждаем программирование в 1С.
Чтение и запись DBF в языке 1С 8.3, 8.2 (в примерах)
С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).
Подписывайтесь и получайте новые статьи и обработки на почту (не чаще 1 раза в неделю). |
Вступайте в мою группу ВКонтакте, Одноклассниках, Facebook или Google+ — самые последние обработки, исправления ошибок в 1С, всё выкладываю там в первую очередь.
Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.
Нажмите одну из кнопок, чтобы поделиться:
Работа с DBF в 1С 8.3 и 8.2 может быть полезна во многих случаях. Типичные примеры — обмен данными с другими учетными системами, загрузка классификаторов КЛАДР и так далее. DBF — формат хранения файлов баз данных, очень распространенный в России и мире.
Система 1С без проблем умеет работать с такими файлами с помощью встроенного объекта системы XBase. Рассмотрим пример чтения и записи в файл dbf.
Чтение в 1С из файла DBF
Рассмотрим учебный пример, в котором необходимо заполнить нужный массив из колонки файла dbf. Сам файл расположен по адресу «C:KLADR.DBF».
Получите 267 видеоуроков по 1С бесплатно:
Создание файла
Для создания нового файла DBF в 1C 8.2 или 8.3 следует воспользоватся следующим синтаксисом:
Запись в DBF
Запись происходит так же несложно, как и другие операции. Запишем некоторые значения из массива в ранее созданный файл:
Вот и всё, как видите, в работе с такими файлами баз данных из 1С никаких трудностей не имеется.
Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):
К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.
DBF – широко распространенный формат хранения данных, появившийся в 80-х годах прошлого века. Впервые формат применялся в семействе СУБД dBase. В связи с популярностью и широким распространением dBase, было создано множество dBase-подобных программных продуктов, получивших собирательное название xBase. Несмотря на значительный возраст формата, он до сих пор достаточно широко используется. В данной статье рассматриваются способы работы с DBF из «1С:Предприятие».
В «1С:Предприятие» для работы с файлами формата DBF(версия dBase III) применяется специальный программный объект – xBase. Работа с этим объектом обычно не вызывает трудностей.
Внимание!
При работе с файлами DBF следует помнить, что имя файла должно удовлетворять ограничению 8.3.
Внимание!
Объект xBase доступен как на стороне клиента, так и на стороне сервера. Следует продумывать клиент-серверное взаимодействие при решении каждой конкретной задачи.
Чтение файла DBF
Чтение данных из файла DBF производится за несколько последовательных этапов:
- Создание объекта XBase;
- Открытие файла;
- Последовательный перебор всех строк файла и считывание значений полей;
- Закрытие файла.
Рассмотрим этот процесс на примере:
Можно использовать несколько измененный алгоритм перебора строк файла:
Выгрузка в файл DBF
Этапы выгрузки в файл DBF:
- Создание объекта XBase;
- Указание кодировки (если не указать, то будет использоваться кодировка ANSI);
- Описание полей;
- Создание файла;
- Цикл с добавлением и заполнением строк;
- Закрытие файла.
Рассмотрим этот процесс на примере:
При указании кодировки используется тип КодировкаXBase , который может принимать два значения:
- ANSI – формат Windows;
- OEM – формат DOS.
Добавление нового поля при описании структуры имеет синтаксис
Доступны следующие типы:
- «N» – число;
- «S» – строка;
- «D» – дата;
- «L» – булево;
- «F» – аналогично «N» – число.
Длина поля является обязательным для типов полей «N», «F» и «S».
Работа с индексами
Совместно с файлом DBF может использоваться индексный файл, в котором может содержаться информация об одном или более индексе. Наличие индексов делает возможным использование поиска, а не только последовательного перебора всех строк файла.
При создании индексного файла следует задать:
- Перечень индексов;
- Путь сохранения индексного файла (на этапе 4 выгрузки).
Пример создания индексного файла:
Процедура добавления нового индекса имеет синтаксис:
Для использования индексов при чтении из файла DBF следует:
- Указать путь к индексному файлу (на этапе 2 загрузки);
- Задать текущий индекс.
Пример открытия файла DBF с использованием индексного файла:
Внимание!
При открытии файла DBF позиционирование происходит на первой записи в файле. Первая запись в файле не соответствует первой записи в индексе. В связи с этим при использовании индексов перед тем, как последовательно обходить строки, необходимо спозиционироваться на первой строке индекса. Это можно сделать методом Первая () , например:
Для поиска может использоваться одна из двух функций:
- Найти ( Ключ >, Режим >) ;
- НайтиПоКлючу ( Режим >) .
В результате работы обоих функций возвращается значение с типом булево (найдена запись с указанными условиями или нет). В случае успешного поиска текущий указатель устанавливается на найденной строке. В качестве режима поиска может использоваться одно из значений:
Но при использовании этого метода запись не удаляется из файла безвозвратно, ей присваивается пометка удаления. При переборе строк помеченные на удаление записи пропускаются. Если необходимо обойти весь файл, включая помеченные на удаление записи, необходимо присвоить значение Истина свойству ОтображатьУдаленные объекта xBase. Узнать помечена запись на удаление или нет можно с помощью функции ЗаписьУдалена () . Для снятия пометки удаления используется метод Восстановить () .
Для непосредственного удаления помеченных записей используется метод Сжать () :
Если необходимо удалить все записи в файле непосредственно, то можно использовать метод ОчиститьФайл () :
Загрузка из DBF при помощи ADO
Для работы с файлами DBF может использоваться технология ADO. Драйверы ADO входят в состав операционной системы Windows и дополнительно их устанавливать не надо.
Рассмотрим пример кода для чтения из файла DBF по технологии ADO:
В приведенном примере используется строка подключения «Prov >
- Provider – это используемый драйвер;
- Data Source – путь, где находится файл DBF. Путь указывается с точностью до каталога. Имя файла используется в качестве имени таблицы в запросах;
- Extended Properties – в случае обращения к файлам DBF является обязательным параметром. Можно указать формат файла
Внимание!
При чтении указанным способом кодировка по-умолчанию – OEM. Для того, чтобы изменить кодировку на ANSI необходимо в реестре Windows присвоить параметру HKEY_LOCAL_MACHINESOFTWAREWow6432NodeMicrosoftJet4.0EnginesxBaseDataCodePage значение «ANSI».
Остались вопросы?
Спросите в комментариях к статье.