---
title: Чтение DBF
slug: общие-обмен-данными-чтение-данных-из-файла/чтение-dbf
---

> Длина имени файла DBF без расширения не должна быть больше **8 символов**

```bsl

&НаКлиенте
Асинх Процедура ПрочитатьФайл(Команда)
    
    Расширение = "dbf";

    ПараметрыДиалога = Новый ПараметрыДиалогаПомещенияФайлов;
    ПараметрыДиалога.Заголовок = "Выберите файл";
    ПараметрыДиалога.Фильтр = ФильтрПоРасширению(Расширение);
    
    ОписаниеФайла = Ждать ПоместитьФайлНаСерверАсинх(,,,ПараметрыДиалога);
    Если ОписаниеФайла = Неопределено Тогда
        Возврат;
    КонецЕсли;
    
    АдресДанных = ОписаниеФайла.Адрес;

    Расширение = ОписаниеФайла.СсылкаНаФайл.Файл.Расширение;

    ПрочитатьФайлНаСервере(АдресДанных, Расширение);

КонецПроцедуры

&НаСервере
Процедура ПрочитатьФайлНаСервере(АдресДанных, Расширение)

    ПутьКФайлу = ПолучитьИмяВременногоФайла(Расширение);

    //Длина имени файла DBF без расширения не должна быть больше **8 символов**
    Файл = Новый Файл(ПутьКФайлу);
    ИмяБезРасширения = Файл.ИмяБезРасширения;
    Если СтрДлина(ИмяБезРасширения) > 8 Тогда 
        ИмяБезРасширения = Лев(ИмяБезРасширения, 8);	
    КонецЕсли;                                      
    
    ПутьКФайлу = СтрЗаменить(ПутьКФайлу, Файл.ИмяБезРасширения, ИмяБезРасширения);
    
    ДанныеФайла = ПолучитьИзВременногоХранилища(Объект.АдресДанных);
    ДанныеФайла.Записать(ПутьКФайлу);
        
    ФайлДБФ = Новый XBase;
    ФайлДБФ.ОткрытьФайл(ПутьКФайлу);
    
    Если НЕ ФайлДБФ.Первая() Тогда
        Сообщение = Новый СообщениеПользователю;
        Сообщение.Текст = "Файл пустой";
        Сообщение.Сообщить();
        Возврат;
    КонецЕсли;
    
    Пока НЕ ФайлДБФ.ВКонце() Цикл
        
        СтрокаТаблицы = Объект.ДанныеФайла.Добавить();
        СтрокаТаблицы.Наименование		 = ФайлДБФ.NAME;
        // обработка
        
        ФайлДБФ.Следующая();
    
    КонецЦикла;   
    
    ФайлДБФ.ЗакрытьФайл();  
    
КонецПроцедуры 
```