Чтение DBF
{codecitation class="brush: vb; gutter: true;" width="500px" }
ФайлВВР = Новый XBase;
ФайлВВР.ОткрытьФайл("с:\staff.dbf",Истина); //только для чтения
ФайлВВР.Первая();
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить(...);
//создание колонок
Пока НЕ ФайлВВР.ВКонце() Цикл
Нов = ТЗ.Добавить();
Нов.Наименование = ФайлВВР.Name;
//заполнение полей
ФайлВВР.Следующая();
КонецЦикла,
ФайлВВР.ЗакрытьФайл();
{/codecitation}
Запись DBF
{codecitation style="brush: xml;"}
// Обработчик выгрузки в DBF-файл
//
Процедура ВыгрузитьНоменВДБФ(Команда)
Путь = "D:\dBase.dbf";
ФайлНоменклатура = Новый XBase;
ФайлНоменклатура.Кодировка = КодировкаXBase.OEM;
//ФайлНоменклатура.поля.Добавить("KOD", "N", 10);
ФайлНоменклатура.поля.Добавить("ARTIKUL","S",15);
ФайлНоменклатура.поля.Добавить("NAIMEN","S",40);
ФайлНоменклатура.поля.Добавить("EDIZM","S",10);
ФайлНоменклатура.поля.Добавить("CENA","N",12,2);
ФайлНоменклатура.поля.Добавить("NOMGROUP","S",20);
//ФайлНоменклатура.поля.Добавить("SUM","F",12,2);
ФайлНоменклатура.СоздатьФайл(Путь);
ФайлНоменклатура.Записать();
ФайлНоменклатура.ОчиститьФайл();
Сообщить("Очищаем файл!");
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ЦеныНоменклатурыСрезПоследних.Цена КАК Цена,
| ЦеныНоменклатурыСрезПоследних.Номенклатура.НаименованиеПолное КАК НоменклатураНаименованиеПолное,
| ЦеныНоменклатурыСрезПоследних.Номенклатура.ТипНоменклатурыБухгалтерии КАК НоменклатураТипНоменклатурыБухгалтерии,
| ЦеныНоменклатурыСрезПоследних.Номенклатура.Артикул КАК НоменклатураАртикул,
| ЦеныНоменклатурыСрезПоследних.Номенклатура.БазоваяЕдИзм КАК НоменклатураБазоваяЕдИзм,
| НоменклатурныеГруппы.ТипНоменклатурыБухгалтерии
|ИЗ
| РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних,
| Справочник.НоменклатурныеГруппы КАК НоменклатурныеГруппы
|ГДЕ
| НоменклатурныеГруппы.ТипНоменклатурыБухгалтерии В ИЕРАРХИИ(&ТипНоменклатурыБухгалтерии)";
Запрос.УстановитьПараметр("ТипНоменклатурыБухгалтерии", Справочники.НоменклатурныеГруппы.НайтиПоНаименованию("Материалы"));
Выборка = Запрос.Выполнить().Выгрузить();
Пока Выборка.Следующий()Цикл
ФайлНоменклатура.Добавить();
ФайлНоменклатура.ARTIKUL = Выборка.НоменклатураАртикул;
ФайлНоменклатура.NAIMEN = Выборка.НоменклатураНаименованиеПолное;
ФайлНоменклатура.NOMGROUP = Выборка.НоменклатураТипНоменклатурыБухгалтерии;
ФайлНоменклатура.EDIZM = Выборка.НоменклатураБазоваяЕдИзм;
ФайлНоменклатура.CENA = Выборка.Цена;
ФайлНоменклатура.Записать();
КонецЦикла;
ФайлНоменклатура.ЗакрытьФайл();
Сообщить("Все закончено. Вздохни с облегчением!;)");
КонецПроцедуры
{/codecitation}
Выгрузка таблицы значений в DBF.
{codecitation style="brush: xml;"}
Процедура СохранитьТЗвБДФ(ТЗ, Файл, Кодировка = Неопределено)
ДБФ = Новый XBase;
Если Кодировка = Неопределено Тогда
Кодировка = КодировкаXBase.OEM;
КонецЕсли;
ДБФ.Кодировка = Кодировка;
Для Каждого Колонка ИЗ ТЗ.Колонки Цикл
Если Колонка.ТипЗначения.СодержитТип(Тип("Строка")) Тогда
Тип = "S";
Длина = Колонка.ТипЗначения.КвалификаторыСтроки.Длина;
Если Длина = 0 Тогда
Длина = 100;
КонецЕсли;
Точность = 0;
ИначеЕсли Колонка.ТипЗначения.СодержитТип(Тип("Число")) Тогда
Тип = "N";
Длина = Колонка.ТипЗначения.КвалификаторыЧисла.Разрядность;
Точность = Колонка.ТипЗначения.КвалификаторыЧисла.РазрядностьДробнойЧасти;
Если Длина = 0 Тогда
Длина = 15;
Точность = 3;
КонецЕсли;
ИначеЕсли Колонка.ТипЗначения.СодержитТип(Тип("Дата")) Тогда
Тип = "D";
Длина = 0;
Точность = 0;
ИначеЕсли Колонка.ТипЗначения.СодержитТип(Тип("Булево")) Тогда
Тип = "L";
Дина = 0;
Точность = 0;
Иначе
Тип = "S";
Длина = 100;
Точность = 0;
КонецЕсли;
ДБФ.поля.Добавить(Колонка.Имя, Тип, Длина, Точность);
КонецЦикла;
ДБФ.СоздатьФайл(Файл);
Для Каждого Стр ИЗ ТЗ Цикл
ДБФ.Добавить();
ЗаполнитьЗначенияСвойств(ДБФ, Стр);
ДБФ.Записать();
КонецЦикла;
КонецПроцедуры
{/codecitation}
Процедура СохранитьТЗвБДФ(ТЗ, Файл, Кодировка = Неопределено) ДБФ = Новый XBase; Если Кодировка = Неопределено Тогда Кодировка = КодировкаXBase.OEM; КонецЕсли; ДБФ.Кодировка = Кодировка; Для Каждого Колонка ИЗ ТЗ.Колонки Цикл Если Колонка.ТипЗначения.СодержитТип(Тип("Строка")) Тогда Тип = "S"; Длина = Колонка.ТипЗначения.КвалификаторыСтроки.Длина; Если Длина = 0 Тогда Длина = 100; КонецЕсли; Точность = 0; ИначеЕсли Колонка.ТипЗначения.СодержитТип(Тип("Число")) Тогда Тип = "N"; Длина = Колонка.ТипЗначения.КвалификаторыЧисла.Разрядность; Точность = Колонка.ТипЗначения.КвалификаторыЧисла.РазрядностьДробнойЧасти; Если Длина = 0 Тогда Длина = 15; Точность = 3; КонецЕсли; ИначеЕсли Колонка.ТипЗначения.СодержитТип(Тип("Дата")) Тогда Тип = "D"; Длина = 0; Точность = 0; ИначеЕсли Колонка.ТипЗначения.СодержитТип(Тип("Булево")) Тогда Тип = "L"; Дина = 0; Точность = 0; Иначе Тип = "S"; Длина = 100; Точность = 0; КонецЕсли; ДБФ.поля.Добавить(Колонка.Имя, Тип, Длина, Точность); КонецЦикла; ДБФ.СоздатьФайл(Файл); Для Каждого Стр ИЗ ТЗ Цикл ДБФ.Добавить(); ЗаполнитьЗначенияСвойств(ДБФ, Стр); ДБФ.Записать(); КонецЦикла; КонецПроцедуры