HelpF.pro

ДБФ, работа с Индекс, Ключ

Код 1C v 8.х
 ФайлНаДиске = Новый Файл(ИмяФайла);
Если НЕ(ФайлНаДиске.Существует()) Тогда
Предупреждение("Файл с таким именем не существует " + ИмяФайла);
Возврат;
КонецЕсли;

ДБФ = Новый xBase;
ДБФ.Кодировка = КодировкаXBase.OEM;
ДБФ.ОткрытьФайл(ИмяФайла);
Если ДБФ.Открыта() = 0 Тогда
Предупреждение("Неудалось открыть файл. Возможно он занят другим приложением!");
Возврат;
КонецЕсли;

ДБФ.Индексы.Добавить("IDX_vE","VAL(EXTENSION)",Ложь,Ложь,"PREFLEN1>0");
ДБФ.СоздатьИндексныйФайл(ИмяИндекса);
ДБФ.ТекущийИндекс = ДБФ.Индексы.IDX_vE;

ДБФ.Ключ.EXTENSION = "1002";
Если ДБФ.НайтиПоКлючу("=") = Истина Тогда
ТекЗапись=ДБФ.НомерЗаписи();
Пока СокрЛП(ДБФ.EXTENSION) = "1002" Цикл
Сообщить("-" + ДБФ.EXTENSION + " - " + ДБФ.НомерЗаписи() + "-");
ДБФ.Следующая();
КонецЦикла;
Иначе
Сообщить("Нет записи!");
КонецЕсли;

ДБФ.ЗакрытьФайл();
УдалитьФайлы(ИмяИндекса);


Код 1C v 8.х
 // Перекачка справочника "Подразделение" в DBF-файле

ФайлБД=КаталогИмя+"Spr_podr."; // Название файла без расширения
xБД=Новый Файл(ФайлБД+"dbf"); // Создание объекта файла в среде 1С

// Удалить, если файлы уже есть (в том числе и индексный файл)
Если xБД.Существует() Тогда
УдалитьФайлы(ФайлБД,"*");
КонецЕсли;

// Создание файлов
xБД = Новый XBase; // создание объекта файла формата xBase
// добавим поля
xБД.Поля.Добавить("Id", "S", 5);
xБД.Поля.Добавить("Name", "S", 25);
xБД.СоздатьФайл(ФайлБД+"dbf"); // создадим реальный файл из объекта
// Индексное выражение
ИндВр="Id";
xБД.индексы.Добавить("Id",ИндВр,Истина);
ИБД = xБД.СоздатьИндексныйФайл(ФайлБД+"cdx"); // создание индексного файла
xБД.АвтоСохранение=Истина;
xБД.ЗакрытьФайл();

// Выкачка данных
xБД.ОткрытьФайл(ФайлБД+"dbf",ФайлБД+"cdx");
xБД.ТекущийИндекс = xБД.индексы.Id;
Выборка=Справочники.Подразделения.Выбрать();
Пока Выборка.Следующий() Цикл
xБД.Добавить();
xБД.ID=Выборка.Код;
xБД.Name=Выборка.Наименование;
xБД.Записать();
КонецЦикла;
xБД.ЗакрытьФайл();

// проверка работы индекса
xБД.ОткрытьФайл(ФайлБД+"dbf",ФайлБД+"cdx");
xБД.ТекущийИндекс = xБД.индексы.Id;
Если xБД.Найти("00003",">=") Тогда
Сообщить(xБД.ID+" - "+xБД.NAME);
Пока xБД.Следующая() Цикл
Сообщить(xБД.ID+" - "+xБД.NAME);
КонецЦикла;
КонецЕсли;
xБД.ЗакрытьФайл();

Опубликовано на сайте: https://HelpF.pro
Прямая ссылка: https://HelpF.pro/faq8/view/347.html