Кратко о том, как работать с DBF в 1С v8.3

14.07.23

Интеграция - Файловый обмен (TXT, XML, DBF), FTP

Небольшая публикация для тех, кто ни разу не работал с dbf в 1С. Далее представлен пример чтения dbf файлов.

Здоровья всем страждущим.

Если вам нужно понять, как перенести данные, например из Бухгалтерский учет 4.0 1С: Предприятие 7.7 в УПП 1.3 1С: Предприятие 8.3, то эта статья для вас.

Файлы dbf ранее в 1С служили для хранения данных объектов.

Для просмотра dbf файлов я использую dbf-viewer.

О составе файлов можете прочитать здесь: https://center-comptech.ru/st_opisanie_sostav_ib_1cv7.html

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

Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога);

Далее получаю файлы dbf и их cdx. CDX - это индексные файлы. У каждой таблицы, которые я использую, есть индексы, по которым возможно получать необходимые строки для загрузки без обхода всей таблицы.

НайденныеФайлы = НайтиФайлы(Диалог.Каталог, "*.DBF");
НайденныеФайлыCDX = НайтиФайлы(Диалог.Каталог, "*.CDX");

В таблице значений по наименованию файлов в каждой строке я сопоставляю dbf и cdx для дальнейшей работы.

Далее для считывания я использую объект XBase, куда передаю dbf и cdx, пример ниже.

ПутиКЖурналу = ПолучитьПутиФайла("1SJOURN"); // Данная 
    // функция просто возвращает мне структуру из таблицы сопоставленных файлов

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

// Далее произвожу обход по строкам файла при помощи следующей конструкции
Пока НЕ ФайлЖурнала.ВКонце() Цикл

Если мне нужно получить данные шапки всех документов одного типа, я работаю в связке 1SJOURN с DH* по колонке IDDOC, если табличной части DT* также по IDDOC, пример для DH, IDDOC - внутренний идентификатор документа в dbf (не код, не наименование, не GUID).

ПутьКШапке = ПолучитьПутиФайла("DH56007");

ФайлШапки = Новый XBase;
ФайлШапки.ОткрытьФайл(ПутьКШапке.ПутьDBF, ПутьКШапке.ПутьCDX, Истина);

Внутри цикла обхода 1SJOURN я получаю данные документа через индекс, т.к. это значительно эффективнее, нежели использовать обход со сравнением значений:

ФайлШапки.ТекущийИндекс = ФайлШапки.индексы.Найти("ID");
ФайлШапки.ключ.IDDOC = ФайлЖурнала.IDDOC;
ЗаписьНайдена = ФайлШапки.НайтиПоКлючу("=");

Если ЗаписьНайдена Тогда

СтруктураЗаполнения = Новый Структура("номДок, датаДок, КонтрагентНаим"); // данную структуру можно поместить в массив, 
// чтобы в дальнейшем преобразовать в таблицу значений по которой можно произвести поиск в текущей базе через запрос и т.д. и т.п. 
СтруктураЗаполнения.номДок = СокрЛП(ФайлЖурнала.DOCNO); // номер документа
СтруктураЗаполнения.датаДок = СокрЛП(ФайлЖурнала.DATE); // дата документа

ФайлКонтрагент.ТекущийИндекс = ФайлКонтрагент.индексы.Найти("IDD"); // индексы могут называться у каждой таблицы по разному, 
// чисто эмпирическим путем находим связи между разными таблицами
ФайлКонтрагент.ключ.ID = ФайлШапки.SP5999;
ЗаписьНайдена = ФайлКонтрагент.НайтиПоКлючу("=");
Если ЗаписьНайдена Тогда
СтруктураЗаполнения.Контрагент = ФайлКонтрагент.DESCR; // сохраняем наименование контрагента для поиска в базе в дальнейшем

Если запись найдена, производим дальнейшие изыскания по файлам справочников SC* через данные шапки, в которых связь может быть, например, по колонкам SP5999 = ID файла SC133 (справочник "Контрагенты" в БУ 4.0).

Файл шапки какого-либо документа (как и файл его табличной части) служит своеобразным фильтром в таблице 1SJOURN по типу документа, т.к. я не нашел способа фильтрации всех строк файла / выгрузки всех строк без обхода.

Как уже написано в комментарии кода, получение индексов происходит эмпирически, как и установления связи между различными файлами DT - SC, DH - SC.

Какие именно файлы вам нужны можно понять открыв БУ 4.0 и внесением изменений в базу, а затем в папке базы по времени изменения смотреть, какие файлы DT, DH, SC обновились.

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

Не забываем закрыть все файлы:

ФайлКонтрагент.ЗакрытьФайл();
ФайлШапки.ЗакрытьФайл();
ФайлЖурнала.ЗакрытьФайл();

Далее с прочитанными данными из dbf ищем существующие / создаем новые необходимые вам объекты.

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

DBF Загрузка

См. также

SALE! 10%

[ED3] Обмен для ERP 2.5, КА 2.5, УТ 11.5 БП 3.0, Розница, УНФ и других с EnterpriseData (универсальный формат обмена), правила обмена

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Платные (руб)

Правила в универсальном формате обмена для ERP 2.5, КА 2.5, УТ 11.5, БП 3.0, Розница, УНФ, для последних версий конфигураций. Ссылки на другие конфигурации в описании публикации. Правила совместимы со всеми другими версиями конфигураций новыми и старыми, поддерживающими обмен в формате EnterpriseData. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

25080 руб.

12.06.2017    135905    732    291    

393

SALE! 10%

Перенос данных из ERP 2 / КА 2 / УТ 11 в БП 3.0. Переносятся документы, начальные остатки и справочники

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос данных из ERP в БП 3 | из КА 2 в БП 3 | из УТ 11 в БП 3 | из ЕРП в БП 3 | В продаже с 2019г. | Воспользовались более 176 предприятий! | Сэкономьте время - используйте готовое решение для перехода! | Перенос разработан в формате КД 2 (правила конвертации данных) | Переносятся все возможные виды документов, начальных остатков и нормативно-справочная информация| Можно опционально выгружать каждую пару "номенклатура+характеристика" как отдельную номенклатуру | Есть выгрузка настроек счетов учета и зарплатных данных из ERP / КА 2 | Можно проверить на вашем сервере перед покупкой, обращайтесь!

38500 34650 руб.

15.04.2019    69081    181    139    

111

Перенос данных из УПП 1.3 в БП 3.0. Переносятся документы (обороты за период), справочная информация и остатки

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УПП 1.3 (1.3.226.x) и БП 3.0 (3.0.151.x). Правила подходят для версии ПРОФ и КОРП.

28000 руб.

15.12.2021    20739    136    38    

95

Перенос данных из УТ 10.3 в УТ 11.5. Переносятся документы (обороты за период), справочная информация и остатки

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 10 1С:Управление торговлей 11 Россия Управленческий учет Платные (руб)

Перенос данных из 1С:Управление торговлей 10.3 в 1С:Управление торговлей 11.5 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УТ 10.3 (10.3.87.x) и УТ 11.5 (11.5.16.x).

28000 руб.

23.07.2020    46966    201    64    

162

SALE! 10%

Перенос данных из ERP 2 / КА 2 в ЗУП 3. Переносятся остатки, документы и справочники

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из ERP в ЗУП 3 | из КА 2 в ЗУП | Воспользовались более 79 предприятий! | Предлагаем приобрести готовые правила конвертации данных (КД 2) для переноса остатков, документов с движениями и справочной информации 3 | В продаже с 2020г. | Оперативно обновляем правила до актуальных релизов 1С | Есть перенос начальной задолженности по зарплате и начальной штатной расстановки на выбранную дату | Обороты за прошлые годы (данные для расчета среднего) переносятся свернуто в документ "Перенос данных" | Есть фильтр по организациям | Документы за текущий период переносятся сразу с движениями, поэтому не потребуется делать перерасчеты | Перенос можно проверить перед покупкой, обращайтесь!

48278 43450 руб.

03.12.2020    34568    83    58    

81

SALE! 10%

Перенос данных из БП 3.0 в УНФ 3.0 / УНФ 1.6. Переносятся остатки, документы и справочная информация

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

В продаже с 2018г. | Воспользовались более 41 предприятия! | Правила конвертации (КД 2) для переноса данных из БП 3 в УНФ | Переносятся все виды документов, начальные остатки и вся возможная справочная информация | Есть фильтр по организациям | Оперативно обновляем на новые релизы | Оказываем техподдержку | В комплект файлов входит инструкция, авторская версия обработки "Универсальный обмен...", актуальные правила переноса данных и архив старых версий переноса | Учет в БП 3 должен быть корректным, некорректные данные не переносятся | Можно бесплатно проверить на вашем сервере до покупки!

50722 руб.

10.07.2018    67980    41    123    

46

SALE! 10%

Перенос данных из УТ 10.3 в УТ 11 / КА 2 / ERP 2. Переносятся документы, справочники и остатки

Перенос данных 1C Взаиморасчеты Оптовая торговля Логистика, склад и ТМЦ Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Управление торговлей 10 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Управленческий учет Платные (руб)

Можно проверить до покупки, оставьте заявку! Воспользовались более 268 компаний! Перенос в продаже с 2015г., и мы постоянно работаем над его развитием. Перенос данных из УТ 10.3 в УТ 11 | из УТ 10.3 в КА 2 | из УТ 10.3 в ERP. Предлагаем качественное и проверенное временем решение для перехода с УТ 10.3. Можно перенести начальные остатки, нормативно-справочную информацию и все возможные документы. При выгрузке можно установить отбор по периоду, организациям и складам. При выходе новых релизов конфигураций 1C оперативно выпускаем обновление переноса данных.

50722 45650 руб.

24.04.2015    191224    270    239    

270

Загрузка номенклатуры c картинками (несколько потоков одновременно) и сопутствующими данными в базу и любые документы из yml, xls, xlsx, xlsm, ods, ots, csv для УТ 10.3, УТ 11 (все), БП 3, КА 2, ERP 2, УНФ 1.6/3.0, Розница 2

Загрузка и выгрузка в Excel Логистика, склад и ТМЦ Ценообразование, анализ цен Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Платные (руб)

Эволюция не стоит на месте - новая удобная версия функциональной обработки для Вашего бизнеса! Что же Вы получаете? Удобный и интуитивно понятный интерфейс с 3-мя этапами работы. 2 режима - автоматический и ручной. Чтение XLSX, XLSM, CSV, XML/YML форматов без офиса, на любом сервере! Визуальное связывание колонок файла и реквизитов простым перетаскиванием колонок. Создание или обновление номенклатуры с иерархией, характеристик, доп. реквизитов, упаковок, загрузка практически неограниченного количества картинок на одну номенклатуру (с возможностью загрузки в несколько потоков одновременно), с хранением в томах или в базе. Загрузка номенклатуры поставщиков или поиск по их данным номенклатуры. Загрузка доп. реквизитов в характеристики. Загрузка штрихкодов с генерацией новых. Создание элементов справочников и ПВХ "на лету" для выбранных реквизитов. (Обновление от 09.04.2024, версия 9.9 - 9.10)

14400 руб.

20.11.2015    151853    368    376    

503
Отзывы
9. Dementor 1020 18.07.23 10:16 Сейчас в теме
Кратко о том, как работать с DBF в 1С v8.3

Стоит начать с того, что к сожалению механика работы с DBF-файлами не менялась и не развивалась со времен 1С8.0
И как верно заметили в (1) - если не хотите терять данные, то идеально использовать драйвер Фокспро.

CDX - это индексные файлы.

CDX - это файлы кластерных индексов. А еще есть обычные индексы (по одному полю), которые хранятся в файлах с расширением IDX. Редко, но встречаются MDX-файлы для хранения множественных индексов. И для завершения темы стоит упомянуть файлы DBT для хранения содержимого MEMO-полей (бинарные данные или строки неограниченной длинны).

В дополнение статьи хочется отметить, что DBF - это просто файлы, а не формат. Это важно помнить, так как было несколько форматов, которые традиционно сохранялись в DBF-файлы, самым популярным из которых был dBase IV

Для тех, кто хочет погрузится в тему, предлагаю поработать с DBF как с бинарными файлами. Структура довольно простая - признак диалекта, метаданные (описание структуры, количество записей, дата модификации) и далее сами данные (без MEMO-полей). Работа с бинарным файлом решит ряд популярных проблем, которые тянутся у стандартного 1С-кого механизма для работы с DBF
Somebody1; V.Nikonov; Mattakushi; +3 Ответить
Остальные комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. agentz 40 15.07.23 00:12 Сейчас в теме
А еще можно работать через ADO используя Visual Foxpro 6.0 драйвер. Будет
1. Быстро
2. Можно делать sql запросы
3. Если платформа 64 разряда - танцы с бубном обеспечены
Dementor; +1 Ответить
2. aSHA-1 15.07.23 08:45 Сейчас в теме
+ за ссылку на описание файлов
8. CheBurator 3119 16.07.23 00:04 Сейчас в теме
3. starik-2005 3039 15.07.23 14:14 Сейчас в теме
В дохлом мамонте теплилась жизнь )))
Jimbo; lvictor58; +2 Ответить
4. Diversus 2312 15.07.23 15:20 Сейчас в теме
Повеяло 2007-ым)) Помню на тот момент, это был один из самых популярных форматов для обмена.
5. CheBurator 3119 15.07.23 23:59 Сейчас в теме
а не проще тупо по OLE из 77 вытянуть данные, а не строить догадки о взаимосвязях ;-)
Или тупо из 77 выгрузить штатными отчетами или простыми распечатками данные и тянуть из заранее подготовленных данных...
10. EvgeniuXP 21.07.23 08:19 Сейчас в теме
(5) ну там даты всякие 31.12.1899 полезут.
6. CheBurator 3119 16.07.23 00:01 Сейчас в теме
Какие именно файлы вам нужны можно понять открыв БУ 4.0 и внесением изменений в базу, а затем в папке базы по времени изменения смотреть, какие файлы DT, DH, SC обновились.
.
для этого в 77 есть словарь данных 1cv77.DD
7. CheBurator 3119 16.07.23 00:03 Сейчас в теме
короче - трэш сплошной, а не публикация ;-)
9. Dementor 1020 18.07.23 10:16 Сейчас в теме
Кратко о том, как работать с DBF в 1С v8.3

Стоит начать с того, что к сожалению механика работы с DBF-файлами не менялась и не развивалась со времен 1С8.0
И как верно заметили в (1) - если не хотите терять данные, то идеально использовать драйвер Фокспро.

CDX - это индексные файлы.

CDX - это файлы кластерных индексов. А еще есть обычные индексы (по одному полю), которые хранятся в файлах с расширением IDX. Редко, но встречаются MDX-файлы для хранения множественных индексов. И для завершения темы стоит упомянуть файлы DBT для хранения содержимого MEMO-полей (бинарные данные или строки неограниченной длинны).

В дополнение статьи хочется отметить, что DBF - это просто файлы, а не формат. Это важно помнить, так как было несколько форматов, которые традиционно сохранялись в DBF-файлы, самым популярным из которых был dBase IV

Для тех, кто хочет погрузится в тему, предлагаю поработать с DBF как с бинарными файлами. Структура довольно простая - признак диалекта, метаданные (описание структуры, количество записей, дата модификации) и далее сами данные (без MEMO-полей). Работа с бинарным файлом решит ряд популярных проблем, которые тянутся у стандартного 1С-кого механизма для работы с DBF
Somebody1; V.Nikonov; Mattakushi; +3 Ответить
14. Somebody1 68 29.11.23 09:38 Сейчас в теме
(9) Тот случай, когда комментарий ценнее статьи))
11. lvictor58 135 21.07.23 15:50 Сейчас в теме
Для переноса данных из 7.7 в 8.Х отлично подходит типовая 1С Конвертация данных 2.0. И не надо народ мутить подобной хренью.
12. Jimbo 9 17.08.23 15:32 Сейчас в теме
Мы точно в 2023 году, а не 2004-2005 ?
13. brunet 39 21.11.23 21:24 Сейчас в теме
кроме типовой конвертации 2.0 можно выгрузить из 7.7 в excel стандартными срествами
15. Tarlich 116 21.01.24 21:43 Сейчас в теме
А Эксель ДБФ разве не читает ?
Оставьте свое сообщение