Воскресенье, 05.05.2024
В помощь 1С программисту
Меню сайта
Статистика




Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа

Создание DBF файла

Для выгрузки в дбф сначала нужно создать объект

ДБ=СоздатьОбъект("XBase");

Указать кодировку (0 - Windows-1251, 1 - DOS)

ДБ.КодоваяСтраница(0);

При желании можно указать режим автоматического сохранения изменений в файле (1 - Автосохранение включено, 0 отключено. По умолчанию 0)

ДБ.АвтоСохранение(1);

Создать структуру дбф-файла: описать названия, типы, длину и точность полей

ДБ.ДобавитьПоле("sagr","S",10,0); //строка, длина 10
ДБ.ДобавитьПоле("nagr","N",7,0); //число, длина 7, точность 0
ДБ.ДобавитьПоле("sum","N",5,2); //число, длина 5, точность 2 максимальное значение 99,99
ДБ.ДобавитьПоле("D_open","D",8,0); //дата


Запомнить: если тип данных число с запятой - то длина ставится максимальная, т.е. она включает значение как до так и после запятой, а также и саму запятую.
Если есть поиска в этом созданном файле - тогда нужно добавить индексный файл

ДБ.ДобавитьИндекс("NAME","sagr",1,0,);

Название индекса - "NAME", поле по которому будет выполняться поиск "sagr". Если нужно будет искать по нескольким полям - значит добавить их все тут.
Затем создаем файл

ДБ.СоздатьФайл(Путь+"\InsFile.dbf",Путь+"\InsFile.cdx"); // сам дбф и индексный файлы

или

ДБ.СоздатьФайл("c:\temp\InsFile.dbf"); // только дбф без индексов

Затем добавляется новая строка, которая и заполняется данными:

ДБ.Добавить();
ДБ.sagr=Док.НомерДок;
ДБ.nagr=Число(Док.НомерДоговора);
ДБ.D_open=Док.ДатаДок;
ДБ.sum=Док.СуммаСНДС;


После заполнения файл нужно записать. Если планируете использовать поиск внутри файла - его нужно записывать после добавления каждой новой строчки, или до начала заполнения файла указать режим автосохранения.

ДБ.Записать();

Для поиска по записям файла сначала нужно указать индекс, по которому будет осуществляться поиск.

ДБ.ТекущийИндекс("NAME");
ДБ.Переиндексировать(); // можно не индексировать, если файл сейчас создается и с ним кроме нас никто не работает
Если ДБ.Найти(СокрЛП(Док1.НомерДок),0)=0 Тогда
//не нашли такую запись в файле, добавим новую
ДБ.Добавить();
ДБ.sagr=Док1.НомерДок;
ДБ.nagr=Число(Док1.НомерДоговора);
ДБ.D_open=Док1.ДатаДок;
ДБ.sum=Док1.СуммаСНДС;
ДБ.Записать();
КонецЕсли;


Чтение данных из DBF-файла

Для этого нужно знать структуру файла и описание полей, т.е. как называется поле, тип данных (число/строка), длина и для числового типа данных еще и точность.
Сам код будет выглядеть примерно так:

ДБ=СоздатьОбъект("XBase");
ДБ.ОткрытьФайл(Путь);
Если ДБ.Открыта()=0 Тогда Сообщить(ДБ.КодОшибки()); Возврат; КонецЕсли;
ДБ.КодоваяСтраница(0);
ДатаДок=ДБ.DATE;
Для Ном=1 по ДБ.КоличествоЗаписей() Цикл
СодержИзБД=СокрЛП(ДБ.COMMENT);
НомерДокумента=СокрЛП(ДБ.DOC_NO);
ДБ.Следующая();
КонецЦикла;
ДБ.ЗакрытьФайл();

Коды ошибок можно посмотреть тут

Поиск
Друзья сайта
  • Доска бесплатных объявлений
  • Как я отдохнул в Крыму
  • Официальный блог
  • Программы для всех
  • FAQ по системе
  • Инструкции для uCoz
  • Спортклуб киокушинкай карате
  • Copyright MyCorp © 2024
    Сделать бесплатный сайт с uCoz