Работа с файлом ДБФ формата

Версия для печатиPDF-версия

ДД! Подскажите как перебрать файл дбф и брать от туда значения?

БД = Новый XBase;

    БД.Поля.Добавить("CODE", "S", 5);

    БД.Поля.Добавить("NAME", "S", 40);

    БД.СоздатьФайл(Путь + "start.dbf", Путь + "index.cdx");

    БД.Индексы.Добавить("IDXCODE", "CODE");

    ФлИБД = БД.СоздатьИндексныйФайл(Путь + "index.cdx");

    БД.АвтоСохранение = Истина;

 

    Выборка = Справочники.Номенклатура.ВыбратьИерархически();

    Пока Выборка.Следующий() Цикл

        БД.Добавить();

        БД.CODE = Выборка.Код;

        БД.NAME = Выборка.Наименование;

    КонецЦикла;

 

    БД.ЗакрытьФайл();

 

 

 

    БД = Новый XBase;

    БД.ОткрытьФайл(Путь + "start.dbf", Путь + "index.cdx");

    БД.ТекущийИндекс = БД.Индексы.IDXCODE;

 

    Пока БД.Следующая() Цикл

        Сообщить(БД.CODE);

        Сообщить(БД.NAME);

    КонецЦикла;

 

    БД.ЗакрытьФайл();   
Нашла в инете.

Работает?

Думаю да. Вечером проверю мне загрузку-выгрузку писать. Ну так на память я раньше делала на 7ке верно. С индексом вот не помню.

Работу с индексом закоментила. Все читает и записывает. У меня  вопрос,
1. я указываю файл дбф и программно вывожу его в ТЗ  на форме. Сделано чтобы была возможность привести в нужный вид и сохранить. Надо удалить лишний столбец, выделяю, нажимаю крестик в панели и ничего. Как удалить?
 2. Я в программе не знаю названия колонок грузиться по названиям полей дбф, как записать в них значение зная индекс?

Что-то не совсем понятны вопросы.

1. Откуда хотите удалить лишний столбец и как он был создан?

2. А "название колонки" <> "название поля дбф"? Куда вы хотите записать значение? О каком индексе идёт речь?

Так что осталось. Делаю обработку правка дбф чтобы загрузка проходила для разных ДБФок, сейчас уже смотрю там не удалить надо столбец а переименовать в ДБФке. Задача стоит такая у разных контров разные ДБФки выгрузки, чтобы под каждого загрузку не писать нужно привести ДБФ к нужной стандартной структуре. Сделала обработку указываешь файл дбф. И на форму выводитв таблицу его содержание, так как дбфки разные, структура таблицы создаеться динамически при чтении. Я вот дуаю сделать так сдлать группу "меняем структуру" где прописать нужные поля и рядом чтобы пользователь указал какое изменить на структурное.Переименовать. Потом сохраняем и загружаем.

2. Не зная названия колонки надо было заполнить значения. Я нашла Установить(Индекс). Индекс номер колонки. Все получилось.

Как раз хотел предложить обращаться к колонкам и полям по индексу. Тогда проблема с разными именами полей отпадёт.

Просто понимаете при загрузке дбф и индекс мб разный поэтому как то нужно переписывать структуру полей, я еще ни разу переименование не делала. Надо посмотреть какие свойства у полей. И получаеться колонку таблицы на форме тоже надо будет переименовать чтобы пользватель видел что запишеться в файл. Вот смотрите в одной поле называеться Name  индекс 2, а в другой Tovar индекс 3, и таких файлов штук 40. Легче привести к одной структуре чем на каждую загрузку писать. В загрузке береться определенное колво полей, стандартный набор для документа.

А прочитать все данные из дбф в таблицу на форме и после этого дать пользователю возможность указать в какой колонке что хранится - не вариант?

А я так и делаю. Вывожу на форму а потом пользователь указывает колонки соотвествия. У меня две обработки одна правит дбф вторая грузит стандартный набор полей. Я поняла Вы предлагаете их слить в одну и пользователь укажет какие колонки соотвествуют набору данных и по индексу брать. Надо попробовать, Делаю уже на месте, защищенная стоит конфа, дома не посмотришь.  

Не вижу смысла править дбф. Это двойная работа получается. Я предлагаю данные полностью считывать в таблицу значений, а потом уже из неё брать данные для создания документов. Пользователю нужно только указать соответствие колонок таблицы реквизитам создаваемого документа.