Функция возвращает таблицу значений с колонками, имена которых заданы в списке колонок. Далее по этой ТЗ легко заполнить, например, табличную часть используя ЗаполнитьЗначенияСвойств().
&НаСервере
// Функция загружает данные из указанного dbf файла в таблицу значений.
// Параметры:
// ИмяФайла - строка - полный путь к файлу.
// Кодировка - КодировкаXBase.
// СписокКолонок - СписокЗначений - список колонок, которые будут прочитаны,
// СписокКолонок.Значение - имя колонки в dbf файле,
// СписокКолонок.Представление - имя колонки в таблице значений,
// СписокКолонок.Пометка - читать колонку из файла; истина = читать,
// ложь = колонка будет создана в итоговой ТЗ, но не заполнена.
//
Функция ЗаполнитьТЗизDBF(ИмяФайла, Кодировка, СписокКолонок)
// Открытие файла данных
ФайлДанных = Новый XBase(ИмяФайла);
ФайлДанных.Кодировка = Кодировка;
Если Не ФайлДанных.Открыта() Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Не удалось открыть файл " + ИмяФайла;
Сообщение.Сообщить();
Возврат Неопределено;
КонецЕсли;
// Переменные и объекты, что бы не создавать постоянно в цикле
ОписаниеБулево = Новый ОписаниеТипов("Булево");
ОписаниеДаты = Новый ОписаниеТипов("Дата",,, Новый КвалификаторыДаты(ЧастиДаты.Дата));
// Создание таблицы значений
ТабЗнач = Новый ТаблицаЗначений;
Для Каждого Поле из ФайлДанных.Поля Цикл
Колонка = СписокКолонок.НайтиПоЗначению(Поле.Имя);
Если Колонка <> Неопределено Тогда
Если Поле.Тип = "L" Тогда
Тип = ОписаниеБулево;
ИначеЕсли Поле.Тип = "D" Тогда
Тип = ОписаниеДаты;
ИначеЕсли (Поле.Тип = "N") ИЛИ (Поле.Тип = "F") Тогда
Тип = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(Поле.Длина, Поле.Точность));
Иначе
Тип = Новый ОписаниеТипов("Строка",, Новый КвалификаторыСтроки(Поле.Длина));
КонецЕсли;
ТабЗнач.Колонки.Добавить(Колонка.Представление, Тип);
КонецЕсли;
КонецЦикла;
// Заполнение строк таблицы
Если (ТабЗнач.Колонки.Количество() <> 0) И (ФайлДанных.Первая()) Тогда
Пока Истина Цикл
СтрокаТаб = ТабЗнач.Добавить();
Для Каждого Поле из ФайлДанных.Поля Цикл
Колонка = СписокКолонок.НайтиПоЗначению(Поле.Имя);
Если (Колонка <> Неопределено) И Колонка.Пометка Тогда
СтрокаТаб[Колонка.Представление] = ФайлДанных[Поле.Имя];
КонецЕсли;
КонецЦикла;
Если Не ФайлДанных.Следующая() Тогда Прервать; КонецЕсли;
КонецЦикла;
КонецЕсли;
ФайлДанных.ЗакрытьФайл();
Возврат ТабЗнач;
КонецФункции