1с выгрузка в формате dbf
DBF-файл – это файл, в котором данные хранятся в виде таблицы (Database format). Работа с этими файлами происходит по принципу курсора, т.е. по одной строке. Для работы с DBF-файлами существует тип данных XBase. Несмотря на то, что формат DBF считается уже устаревшим, может возникнуть необходимость работы с файлами данного формата, особенно, если вы перегружаете данные из какой-нибудь старой программы!
Код 1C v 8.х
Код 1C v 8.х
Код 1C v 7.x
Похожие 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-файл – это файл, в котором данные хранятся в виде таблицы (Database format). Работа с этими файлами происходит по принципу курсора, т.е. по одной строке. Для работы с DBF-файлами существует тип данных XBase. Несмотря на то, что формат DBF считается уже устаревшим, может возникнуть необходимость работы с файлами данного формата, особенно, если вы перегружаете данные из какой-нибудь старой программы!
Код 1C v 8.х
Код 1C v 8.х
Код 1C v 7.x
Похожие FAQ
Выгрузка / Загрузка данных посредством XML файлов? 1
В основе работы с XML-файлами лежит технология доступа SAX, которая осуществляет считывание по одному тегу. Для этого существует два типа данных – ЗаписьXML и ЧтениеXML . Запись данных справочника в XML-файл: Запись = Новый ЗаписьXML; Запись.О Выгрузка / Загрузка данных посредством текстовых (TXT) файлов 5
Для работы с текстовыми документами существуют три типа данных – ТекстовыйДокумент, ЗаписьТекста и ЧтениеТекста . Разница двух подходов состоит в способе загрузки документа: ТекстовыйДокумент загружает файл целиком и далее построчно обрабатывает е Загрузка данных из DBF файла в Таблицу Значений 2
Процедура ПоказатьДБФ(дбф, имяФайла) далее Процедура Сформировать() перем дбф, флаг, папка; тЗнач.Очистить(); флаг=ФС.ВыбратьФайл(0, имяФайла, папка," Выберете DBF файл" ," |*.DBF" ); Если флаг=0 Тогда возврат; КонецЕсли; дбф=СоздатьОбъект Как выгрузиться в EXCEL со сводными таблицами 0
Пошаговый рабочий алгоритм выгрузки в EXCEL на примере выгрузки отчетов производства за смену(Автор статьи: Funny ): (1) Нарисовать форму обработки и к кнопке запуска прицепить процедуру: Процедура КнопкаВыполнитьНажатие(Кнопка) Если ПроверкаДат( Как конвертировать БД 1С SQL в БД 1с обычную dbf? 3
Последовательность действий такая: 1. Создать новую базу 1С. (Создать пустой каталог, скопировать в него папку ExtForms, в старотовом окне 1С нажать кнопку добавить, написать название базы и путь к только что созданному каталогу - ок) 2. В старой б Посмотреть все результаты поиска похожих
Еще в этой же категории
Выгрузка / Загрузка данных посредством текстовых (TXT) файлов 5
Для работы с текстовыми документами существуют три типа данных – ТекстовыйДокумент, ЗаписьТекста и ЧтениеТекста . Разница двух подходов состоит в способе загрузки документа: ТекстовыйДокумент загружает файл целиком и далее построчно обрабатывает е Загрузка данных из DBF файла в Таблицу Значений 2
Процедура ПоказатьДБФ(дбф, имяФайла) далее Процедура Сформировать() перем дбф, флаг, папка; тЗнач.Очистить(); флаг=ФС.ВыбратьФайл(0, имяФайла, папка," Выберете DBF файл" ," |*.DBF" ); Если флаг=0 Тогда возврат; КонецЕсли; дбф=СоздатьОбъект Пример переноса данных из 1С 7.7 в 8.1 посредством XML файла 2
xmldoc = CreateObject(" Msxml2.DOMDocument" ); xmlDoc.loadXML(" root/ " ); nodeRoot = xmlDoc.documentElement; расходы = xmlDoc.createElement(" СправочникРасходы" ); Спр = Создатьобъект(" Справочник.Расходы" ); Спр.ВыбратьЭлементы(); Пока С Выгрузка / Загрузка данных посредством XML файлов? 1
В основе работы с XML-файлами лежит технология доступа SAX, которая осуществляет считывание по одному тегу. Для этого существует два типа данных – ЗаписьXML и ЧтениеXML . Запись данных справочника в XML-файл: Запись = Новый ЗаписьXML; Запись.О Поиск в DBF файле по индексу 0
ДБФ=СоздатьОбъект(" XBase" ); ДБФ.ДобавитьПоле(" DATE" ," D" ,0,0); Дбф.ДобавитьИндекс(" INDEX" ," DTOS(DATE)" ,0,0," " ); //Дбф.ДобавитьИндекс(" INDEX" ," DTOS(DATE)" ,0,0," Пустая строка" ); //DTOS . // где DTOC() - " ММ/ДД/ГГ" или DTOS Посмотреть все в категории XML, DBF, TXT, CSV
Протестируйте качество нашей работы - получите первую консультацию в подарок.
Одним из самых распространенных форматов баз данных до сих пор остается формат 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 и запишем итоговый файл.
Рис.1 Расположение файлов 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.КоличествоЗаписей() + " записей.");
В 1С 8.3 для операций с DBF есть стандартный объект XBase, позволяющий работать непосредственно из встроенного языка . Формат хранения файлов баз данных DBF (dBase III) , используемый в качестве одного из стандартных способов хранения информации в системах управления базами данных. Имеет двумерный массив (таблица) и часто используется программами 1С с самых ранних версий. В 1С 8.3 DBF может использоваться программистами для обмена со сторонними приложениями и базами данных. Данный формат устарел из из-за своих ограничений:
✔ Чтение записей файла в формате *.DBF
&НаКлиенте
Процедура ЧтениеЗаписейФайлаВФорматеDBF ( ПутьКФайлуDBF )
ТаблицаDBF = Новый XBase ;
ТаблицаDBF . ОткрытьФайл ( ПутьКФайлуDBF ,,Истина); // путь к базе, путь к индексу - необязателен, только чтение
Сообщить ( "Таблица DBF имеет кодировку: " + ТаблицаDBF . Кодировка );
Сообщить ( "В таблице " + ТаблицаDBF . КоличествоЗаписей () + " записей." );
ТаблицаDBF . Первая (); // перешли к первой записи
Пока Не ТаблицаDBF . ВКонце () Цикл //не последняя запись
Если Не ТаблицаDBF . ЗаписьУдалена () Тогда //нет пометки на удаление
Сообщить ( ТаблицаDBF . Kod + " " + ТаблицаDBF . Country + " " + Строка ( ТаблицаDBF . Population ) + " " + ТаблицаDBF . Continent );
КонецЕсли;
ТаблицаDBF . Следующая (); // переходим к следующей записи
КонецЦикла;
ТаблицаDBF . ЗакрытьФайл ();
&НаКлиенте
Процедура ПоискНужнойЗаписиВФайлеВФорматеDBF ( ПутьКФайлуDBF )
// Файлы dbf могут быть очень большими и содержать тысячи записей.
// В этом случае полный перебор всех записей,
// чтобы найти одну - плохая идея - поиск будет долгим.
ТаблицаDBF = Новый XBase ;
ТаблицаDBF . ОткрытьФайл ( ПутьКФайлуDBF ,,); // путь к базе, путь к индексу, открываем на запись (Ложь)
// Но для того, чтобы искать по ключу - нужен индексный файл, включающий нужные нам поля. Если бы этот файл уже был у нас,
// то мы бы передали его при открытии файла вышле, но у нас его нет, а потому - займёмся его созданием.
// создадим индекс только по полю Population
ТаблицаDBF . Индексы . Добавить ( "INDEX_Population" , "Population" , ); // имя индекса, выражение индекса, уникальность создаваемого индекса (Истина)
КаталогDBFФайлов = "D:\World" ;
СоздатьКаталог ( КаталогDBFФайлов );
ПутьКФайлуИндекса = КаталогDBFФайлов + "\kldr.cdx" ; //имя файла не более 8 символов (включая расширение)
ТаблицаDBF . СоздатьИндексныйФайл ( ПутьКФайлуИндекса );
// Заново открываем таблицу, уже на чтение и с индексным файлом, который мы только что создали.
ТаблицаDBF = Новый XBase ;
ТаблицаDBF . ОткрытьФайл ( ПутьКФайлуDBF , ПутьКФайлуИндекса ,Истина); // путь к базе, путь к индексу, только чтение
// Найдём среди записей ту, у которой поле Population равно 10.
// В таблице всего один индекс INDEX_Population.
ТаблицаDBF . ТекущийИндекс = ТаблицаDBF . Индексы . Получить ( 0 );
ТаблицаDBF . Ключ . Population = "10" ;
ЗаписьНайдена = ТаблицаDBF . НайтиПоКлючу ( " Запись найдена" );
Сообщить ( ТаблицаDBF . Kod + " " + ТаблицаDBF . Country + " " + Строка ( ТаблицаDBF . Population ) + " " + ТаблицаDBF . Continent );
Иначе
Сообщить ( "Запись не найдена" );
КонецЕсли;
Читайте также: