1с выгрузка в формате dbf
Внимание!
При работе с файлами DBF следует помнить, что имя файла должно удовлетворять ограничению 8.3.
Внимание!
Объект xBase доступен как на стороне клиента, так и на стороне сервера. Следует продумывать клиент-серверное взаимодействие при решении каждой конкретной задачи.
Чтение файла DBF
Чтение данных из файла DBF производится за несколько последовательных этапов:
- Создание объекта XBase;
- Открытие файла;
- Последовательный перебор всех строк файла и считывание значений полей;
- Закрытие файла.
Рассмотрим этот процесс на примере:
Можно использовать несколько измененный алгоритм перебора строк файла:
Выгрузка в файл DBF
Этапы выгрузки в файл DBF:
- Создание объекта XBase;
- Указание кодировки (если не указать, то будет использоваться кодировка ANSI);
- Описание полей;
- Создание файла;
- Цикл с добавлением и заполнением строк;
- Закрытие файла.
Рассмотрим этот процесс на примере:
При указании кодировки используется тип КодировкаXBase , который может принимать два значения:
Добавление нового поля при описании структуры имеет синтаксис
Доступны следующие типы:
Работа с индексами
Совместно с файлом DBF может использоваться индексный файл, в котором может содержаться информация об одном или более индексе. Наличие индексов делает возможным использование поиска, а не только последовательного перебора всех строк файла.
При создании индексного файла следует задать:
- Перечень индексов;
- Путь сохранения индексного файла (на этапе 4 выгрузки).
Пример создания индексного файла:
Процедура добавления нового индекса имеет синтаксис:
Для использования индексов при чтении из файла DBF следует:
- Указать путь к индексному файлу (на этапе 2 загрузки);
- Задать текущий индекс.
Пример открытия файла DBF с использованием индексного файла:
Внимание!
При открытии файла DBF позиционирование происходит на первой записи в файле. Первая запись в файле не соответствует первой записи в индексе. В связи с этим при использовании индексов перед тем, как последовательно обходить строки, необходимо спозиционироваться на первой строке индекса. Это можно сделать методом Первая () , например:
Для поиска может использоваться одна из двух функций:
- Найти (< Ключ >, < Режим >) ;
- НайтиПоКлючу (< Режим >) .
В результате работы обоих функций возвращается значение с типом булево (найдена запись с указанными условиями или нет). В случае успешного поиска текущий указатель устанавливается на найденной строке. В качестве режима поиска может использоваться одно из значений:
Рассмотрим поиск в файле DBF на примерах:
Удаление записей в файле DBF
Удаление записи производится методом Удалить () :
Но при использовании этого метода запись не удаляется из файла безвозвратно, ей присваивается пометка удаления. При переборе строк помеченные на удаление записи пропускаются. Если необходимо обойти весь файл, включая помеченные на удаление записи, необходимо присвоить значение Истина свойству ОтображатьУдаленные объекта xBase. Узнать помечена запись на удаление или нет можно с помощью функции ЗаписьУдалена () . Для снятия пометки удаления используется метод Восстановить () .
Для непосредственного удаления помеченных записей используется метод Сжать () :
Если необходимо удалить все записи в файле непосредственно, то можно использовать метод ОчиститьФайл () :
Загрузка из DBF при помощи ADO
Для работы с файлами DBF может использоваться технология ADO. Драйверы ADO входят в состав операционной системы Windows и дополнительно их устанавливать не надо.
Рассмотрим пример кода для чтения из файла DBF по технологии ADO:
- Provider – это используемый драйвер;
- Data Source – путь, где находится файл DBF. Путь указывается с точностью до каталога. Имя файла используется в качестве имени таблицы в запросах;
- Extended Properties – в случае обращения к файлам DBF является обязательным параметром. Можно указать формат файла
Внимание!
Остались вопросы?
Спросите в комментариях к статье.
DBF-файл – это файл, в котором данные хранятся в виде таблицы (Database format). Работа с этими файлами происходит по принципу курсора, т.е. по одной строке. Для работы с DBF-файлами существует тип данных XBase. Несмотря на то, что формат DBF считается уже устаревшим, может возникнуть необходимость работы с файлами данного формата, особенно, если вы перегружаете данные из какой-нибудь старой программы!
Код 1C v 8.х
Код 1C v 8.х
Код 1C v 7.x
Разместил: E_Migachev Версии: | 7.x | 8.x | Дата: 30.12.2009 Прочитано: 79365
Похожие FAQ
База 1С вылетает, виснет, не грузится, падает с ошибкой? 0
Есть ряд методов, которыми можно попытаться " поднять" упавшую базу 1С 8.х Но сперва нужно сделать резервную копию! Сделайте резервную копию простым копированием папки базы, выгрузка не всегда может быть корректна. Удалить все файлы в папке базы, Внутренняя ошибка компоненты DBENG8 0
Ошибка СУБД: Внутренняя ошибка компоненты dbeng8 по причине: Внутренняя ошибка компоненты dbeng8 Решение: 1: Тестирование исправление базы 2: Проверка базы используя chdbfl.exe 3: Обновить версию Платформы 4: Обновить dbeng8.dll в bin Выборка данных из DBF файлов запросом 0
RS= Новый COMОбъект(" ADODB.Recordset" ); SSource = " S_elect * FROM nomen.dbf WHERE cost 100" ; SConnect = " Provider=MSDASQL.1;Persist Security Info=False;Data Source=nomen.dbf;Initial Catalog=D: " ; RS.Open(SSource,SConnect); Пока RS.EOF() = Выгрузка / Загрузка данных посредством XML файлов? 1
В основе работы с XML-файлами лежит технология доступа SAX, которая осуществляет считывание по одному тегу. Для этого существует два типа данных – ЗаписьXML и ЧтениеXML . Запись данных справочника в XML-файл: Запись = Новый ЗаписьXML; Запись.О Выгрузка / Загрузка данных посредством текстовых (TXT) файлов 5
Для работы с текстовыми документами существуют три типа данных – ТекстовыйДокумент, ЗаписьТекста и ЧтениеТекста . Разница двух подходов состоит в способе загрузки документа: ТекстовыйДокумент загружает файл целиком и далее построчно обрабатывает е Посмотреть все результаты поиска похожих
Еще в этой же категории
Протестируйте качество нашей работы - получите первую консультацию в подарок.
Одним из самых распространенных форматов баз данных до сих пор остается формат DBF. И неумение работать с ним из 1С – серьезное ограничение профессиональных навыков для любого специалиста. Тем более изучение теории и практика по этому вопросу потребует совсем немного времени. К тому же работа с DBF файлом никаких дополнительных библиотек не требует – все инструменты встроены в платформу 1С 8.3.
Чтение, создание DBF и запись в данный формат
Вся работа с DBF в 1С происходит с помощью специального объекта – xBase. Рассмотрим основные действия с файлами, начав с чтения из конкретного DBF. В первую очередь необходимо расположить файл базы данных в каталоге, куда есть доступ у пользователя. Код для считывания данных в 1С достаточно прост:
- Указываем путь к базе в формате DBF;
- Создаем объект для взаимодействия с файлом, открываем его и устанавливаем указатель на первую строку с данными;
- В цикле обходим всю базу и производим действия с элементами. В данном случае просто отражаем их на экране пользователя;
- Закрываем файл.
Вторая часто встречающаяся задача по взаимодействию с объектом – выгрузка DBF из 1С 8.3. Здесь намного легче создать конечный файл нужного формата программно, чем использовать дополнительно программное обеспечение. Этот алгоритм в 1С тоже достаточно прост и состоит из нескольких строк кода:
- Создаем объект XBase;
- Определяем кодировку нового файла. Существует кодировка для Windows – ANSI и OEM предназначенная для DOS;
- Необходимо описать все колонки будущего файла DBF, указав их тип;
- Укажем каталог, в котором будет происходить создание DBF и запишем итоговый файл.
После того как мы создали файл нужного формата, потребуется выгрузка в DBF данных. Программируя этот процесс, помните о том, что данные ИБ находятся на сервере. Чтобы записать имеющиеся данные из 1С необходимо к предыдущему коду добавить следующий алгоритм:
- Получаем информацию из справочника;
- В цикле последовательно добавляем по 1строчке и записываем;
- Закрываем файл и проверяем, что запись прошла удачно.
Это основы работы с данным форматом. Существуют и другие способы открыть из 1С DBF, но xBase остается самым простым по синтаксису и пониманию. Поняв, как осуществляется простейшая выгрузка и загрузка из DBF, можно приступать к более сложным элементам, например, использованию индексов для поиска, удалению или изменению конкретных записей в DBF, а также применению технологии ADO.
ПутьКФайлуDBF = ПутьКПапкеФайлов + "Sync.dbf" ;
НовФайлуDBF = Новый Файл ( ПутьКФайлуDBF );
Если НовФайлуDBF . Существует ()=Ложь Тогда // Такого файла не существует - создадим новый файл DBF с нужной структурой
// - аналогичной структуре ТЗ на форме
// Описываем колонки таблицы. Типы бывают:
// N - число
// S - строка
// D - дата
// L - булево
// F - число
ТаблицаDBF . Поля . Добавить ( "KodSpr" , "S" , 10 ,); // имя колонки Код в справочнике(как в 1С8=10симв), тип, длина
ТаблицаDBF . Поля . Добавить ( "NameSpr" , "S" , 100 ,); // имя колонки Наименование в справочнике, тип, длина
ТаблицаDBF . Поля . Добавить ( "Scht" , "S" , 8 ,); // имя колонки Счет, тип, длина
ТаблицаDBF . Поля . Добавить ( "Sub1K" , "S" , 25 ,); // имя колонки код Субконто1, тип, длина
ТаблицаDBF . Поля . Добавить ( "SRod1K" , "S" , 25 ,); // имя колонки код Родитель Субконто1, тип, длина
ТаблицаDBF . Поля . Добавить ( "Sub2K" , "S" , 25 ,); // имя колонки код Субконто2, тип, длина
ТаблицаDBF . Поля . Добавить ( "SRod2K" , "S" , 25 ,); // имя колонки код Родитель Субконто2, тип, длина
ТаблицаDBF . Поля . Добавить ( "Sub3K" , "S" , 25 ,); // имя колонки код Субконто3, тип, длина
ТаблицаDBF . Поля . Добавить ( "SRod3K" , "S" , 25 ,); // имя колонки код Родитель Субконто3, тип, длина
ТаблицаDBF . Поля . Добавить ( "Urov" , "N" , 1 , 0 ); // имя колонки Уровень иерархии, тип, длина
ТаблицаDBF . СоздатьФайл ( ПутьКФайлуDBF , ); // путь к базе, путь к индексу
ТаблицаDBF . ЗакрытьФайл ();
ТаблицаDBF . ОткрытьФайл ( ПутьКФайлуDBF ,,Ложь); // путь к базе, путь к индексу - необязателен, только чтение
ТЗсФормы = Новый( "ТаблицаЗначений" );
Для каждого СтрокаТЗ из ТЗсФормы цикл
ТаблицаDBF . Первая (); // перешли к первой записи
Пока Не ТаблицаDBF . ВКонце () Цикл //не последняя запись
Если Не ТаблицаDBF . ЗаписьУдалена () Тогда //нет пометки на удаление
Если ( СокрЛП ( ТаблицаDBF . KodSpr ) = СокрЛП ( СтрокаТЗ . КодВидаОбъекта ))
и ( СокрЛП ( ТаблицаDBF . NameSpr ) = СокрЛП ( СтрокаТЗ . ВидОбъекта )) Тогда
ЗаписьDBFУжеСуществует =Истина;
// Обновим нужные данные
ТаблицаDBF . Scht = СтрокаТЗ . Счет ;
ТаблицаDBF . Sub1K = СтрокаТЗ . Субконто1 . Код ;
ТаблицаDBF . SRod1K = СтрокаТЗ . Субконто1 . Родитель . Код ;
ТаблицаDBF . Sub2K = СтрокаТЗ . Субконто2 . Код ;
ТаблицаDBF . SRod2K = СтрокаТЗ . Субконто2 . Родитель . Код ;
ТаблицаDBF . Sub3K = СтрокаТЗ . Субконто3 . Код ;
ТаблицаDBF . SRod3K = СтрокаТЗ . Субконто3 . Родитель . Код ;
ТаблицаDBF . Urov = СтрокаТЗ . Субконто1 . Уровень ();
ТаблицаDBF . Следующая (); // переходим к следующей записи
КонецЦикла;
Если ЗаписьDBFУжеСуществует =Ложь Тогда //Создадим новую запись и добавим нужные данные
ТаблицаDBF . Добавить ();
ТаблицаDBF . KodSpr = СокрЛП ( СтрокаТЗ . КодВидаОбъекта );
ТаблицаDBF . NameSpr = СокрЛП ( СтрокаТЗ . ВидОбъекта );
ТаблицаDBF . Scht = СтрокаТЗ . Счет ;
ТаблицаDBF . Sub1K = СтрокаТЗ . Субконто1 . Код ;
ТаблицаDBF . SRod1K = СтрокаТЗ . Субконто1 . Родитель . Код ;
ТаблицаDBF . Sub2K = СтрокаТЗ . Субконто2 . Код ;
ТаблицаDBF . SRod2K = СтрокаТЗ . Субконто2 . Родитель . Код ;
ТаблицаDBF . Sub3K = СтрокаТЗ . Субконто3 . Код ;
ТаблицаDBF . SRod3K = СтрокаТЗ . Субконто3 . Родитель . Код ;
ТаблицаDBF . Urov = СтрокаТЗ . Субконто1 . Уровень ();
ТаблицаDBF . ЗакрытьФайл ();
//Сообщить("Файл записан. В таблице " + ТаблицаDBF.КоличествоЗаписей() + " записей.");
DBF - это формат файлов баз данных, который используется различными программами для хранения той или иной информации. Выгрузка данных в DBF доступна и в программе 1С, например, для отправки информации в другие организации.
Создайте или скачайте готовую форму для выгрузки данных в файл формата DBF. Если вам необходимо сделать выгрузку для заранее установленных в программу 1С форм, найдите их в соответствующем меню. Многие версии 1С поддерживают готовую обработку выгрузки для ЦБ, некоторые обработки вы можете написать самостоятельно в зависимости от формы документа.
Однако если вы не знакомы с данной процедурой в используемой вами версии программного обеспечения, это может отнять очень много времени. Также самостоятельное написание обработки при отсутствии опыта выполнения подобных операций может вызвать много ошибок и неточностей в работе. Настройте экспорт данных в соответствии с пунктами меню базы данных и сохраните обработку в виде шаблона операции, если это необходимо.
При отсутствии у вас навыков программирования 1С обратитесь к службе технической поддержки вашего поставщика программного обеспечения или к сторонним специалистам. Написание обработки выгрузки информации в файл базы данных займет достаточно немного времени. Обратите внимание, что не все специалисты знакомы с выгрузкой в 8 версии программы, если вдруг вам по каким-либо причинам откажут в написании обработки, скорее всего, вам лучше сменить обслуживающего работника.
При выгрузке данных в DBF убедитесь в том, что в вашем случае не имеется возможности использования других форматов файлов, например, в документ XML. Это связано с тем, что DBF на данный момент является далеко не самой удобной формой работы с информацией, кроме того данный формат файлов уже давно устарел, в основном он применяется Сбербанком и другими крупными организациями.
Выгрузка в более широко распространенные форматы файлов заметно проще, кроме того, вам не потребуется дополнительного программного обеспечения в случаях когда требуется редактирование. Помните, что вы также можете обратиться за написанием обработки к сторонним специалистам, которых можете найти в интернете на тематических формах, посвященных 1С.
Читайте также: