Закажите бесплатный расчет стоимости вашей задачи по 1С!
Перезвоним за 10 минут! (в рабочие часы)

Работа с файлами DBF в 1С 8.3 и 8.2

Работа с DBF в 1С 8.3 и 8.2 может быть полезна во многих случаях. Типичные примеры — обмен данными с другими учетными системами, загрузка классификаторов КЛАДР и так далее. DBF — формат хранения файлов баз данных, очень распространенный в России и мире.

Система 1С без проблем умеет работать с такими файлами с помощью встроенного объекта системы XBase. Рассмотрим пример чтения и записи в файл dbf.

dbf файл

Чтение в 1С из файла DBF

Рассмотрим учебный пример, в котором необходимо заполнить нужный массив из колонки файла dbf. Сам файл расположен по адресу «C:\KLADR.DBF».

ПутьКФайлу = "C:\KLADR.DBF";

ФайлDBF = Новый XBase; // создаем новый объект
ФайлDBF.ОткрытьФайл(ПутьКФайлу,,Истина); // открытие файла
ФайлDBF.Первая(); // устанавливает курсор на первую запись

МассивАдресов = Новый Массив;
// цикл обрабатывается до тех пор, пока не дошел до последней записи
Пока НЕ ФайлDBF.ВКонце() Цикл
МассивАдресов.Добавить(ФайлDBF.ADRES);
ФайлDBF.Следующая(); //передвигаем курсор далее
КонецЦикла;

//обязательно закрываем файл, после прекращения работыФайл

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

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

Для создания нового файла DBF в 1C 8.2 или 8.3 следует воспользоватся следующим синтаксисом:

НовыйФайл = Новый XBase;
//существует два вида кодировки ANSI (win) и OEM (dos)
НовыйФайл.Кодировка = КодировкаXBase.ANSI;
//описываем колонки:
НовыйФайл.Поля.Добавить("ADRES","S",100);
НовыйФайл.Поля.Добавить("DOM","N",10) ;

Путь = "C:\KLADR.DBF";
НовыйФайл.СоздатьФайл(Путь);
НовыйФайл.Записать();

Запись в DBF

Запись происходит так же несложно, как и другие операции. Запишем некоторые значения из массива в ранее созданный файл:

Для Каждого Адрес из МассивАдресов Цикл
НовыйФайл.Добавить();
НовыйФайл.ADRES = Адрес;
НовыйФайл.Записать();
КонецЦикла;
НовыйФайл.ЗакрытьФайл();

Вот и всё, как видите, в работе с  такими файлами баз данных из 1С никаких трудностей не имеется.

Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>

Другие статьи по 1С программированию.

Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

Остались вопросы?

СПРОСИТЕ в комментариях!

Комментариев: 12 на “Работа с файлами DBF в 1С 8.3 и 8.2
  1. Проигнорируйте, если неправ, но в данной конструкции везде надо использовать переменную, которая хранит объект ДБФ при создании
    т.е. правильно так будет:
    Пока НЕ ФайлDBF.ВКонце() Цикл
    МассивАдресов.Добавить(ФайлDBF.ADRES);
    ФайлDBF.Следующая(); //передвигаем курсор далее
    КонецЦикла;

    //обязательно закрываем файл, после прекращения работыФайл
    ФайлDBF.ЗакрытьФайл();

    Ответить

    • Да, вы правы, это опечатка. Спасибо большое! 🙂

      Правильно конечно же: ФайлDBF.Следующая()

      А не Файл.Следующая()

      Ответить

  2. Часто беру информацию с вашего сайта. Спасибо. Понадобилась работа с дбф. Добавлю, что в цикле надо записывать изменения с помощью команды ФайлDBF.Записать(); а не только в конце, после цикла. Иначе будет в файле будет сохранена только последняя строка.

    Ответить

    • Не знаю, без Записать() нормально всё заполняет

      Ответить

  3. трудности есть. например, добавить колонку в уже имеющийся dbf. Приходится создавать новый файл и копировать в него все данные. Не очень удобно, если размеры dbf внушительны.

    Ответить

  4. ФайлDBF.ОткрытьФайл(ПутьКФайлу,,Истина); // открытие файла
    Истина – открыть для чтения
    Ложь – открыть для записи
    Но он открывает файл для записи монопольно. А есть в 1С возможность открыть файл для записи не монопольно???

    Ответить

    • А это как? Может тогда и не монопольный режим для word и exel заодно?

      Ответить

      • Вообщето для Word и Excel совместная работа уже как лет 5 организована…

        Ответить

  5. Почему средствами 1С нельзя создать поле чтобы у него был префикс «_» в начале поля

    Ответить

  6. Добрый день! я- совсем несведущая в программировании, но мне сказали, что если дописать программу, что-то в ней поменять, то потом будут сложности с загрузкой обновлений программы. Просто нет возможности пользоваться услугами программиста, а dbf-файл необходим для работы с контрагентом. Извините, если вопрос глупый))

    Ответить

  7. А что если объект Xbase открывает ДБФ, показывает количество строк методом, но по строкам не проходит и «Таблица.ВКонце()» возвращает ИСТИНА на первой же итерации.

    Ответить

    • В общем разобрался. Сделал вариант чере «Перейти», но всё же интересует данный вопрос.

      Ответить

Добавить комментарий:

Ваш адрес email не будет опубликован.