Загрузка данных из файлов Excel, dbf или csv в документы или справочники любой конфигурации, а также в их табличные части

Всем доброго времени суток, дорогие читатели блога. В сегодняшней статье я расскажу про доступ к DBF-файлам (таблицам) различными способами. Я столкнулся с такой проблемой, когда мне необходимо было осуществить доступ к DBF-таблицам FoxPro. Пробовал через BDE, не получалось, только к таблицам Paradox (dbf), в итоге решил попробовать через компонент TDBF –также обернулась неудачей. По старинке решил попробовать подключиться через ADO и все пошло как по маслу.

Поэтому, в данной статье я расскажу, как можно подключиться к таблицам DBF тремя способами:

  • С помощью BDE – для таблиц FoxPro у меня данный вариант не прошел
  • С помощью ADO – отлично открылись таблицы FoxPro
  • С помощью компонента TDBF – хорошо открывает таблицы Paradox с различными кодировками или же dBase.

Если честно, то я вообще не могу терпеть BDE, но пришлось поработать с такими таблицами и первый вариант, через который я хотел подключиться к ним – это использование именно BDE, что, в принципе у меня это получилось, то есть получилось забрать список таблиц, чему я обрадовался и подумал, что дальше все пойдет, как положено, но не тут-то было. При попытке подключение к какой-нибудь таблице, мне выдавало ошибку, что-то наподобие:

Я пробовал его устанавливать и в самое BDE Administrator и при подключении, но ничего не вышло. Зато таким способам у меня отлично подключалось к таблицам DBF – Paradox, например dBase.

Поэтому, устанавливаем на форму следующие компоненты со вкладки BDE:

  • TTable или TQuery
  • По желанию можно TDataSourceи TDbGrid

Далее в свойстве DatabaseName компонента TDataBase задаем имя БД, я написал – MyDB,а в свойстве DriverName того же компонента я выбрал из выпадающего списка STANDART. Свойство LoginPromt устанавливаем в False, так как логина и пароля на наших таблицах никакого не стоит. В свойстве Params задаем параметры подключения, я указал только путь к нашим таблицам:

Можно также двойным щелчком нажать по компоненту TDataBase и настроить необходимое подключение и устанавливаем свойство Connected в True, в итоге должно произойти подключение к таблицам, без всяких ошибок. Здесь все, переходим к компоненту TTable, где в свойстве DatabaseName указываем имя нашей БД, то есть MyDB. В свойстве TableType выбираем тип таблиц, я указал – ttDBase, а в свойстве TableName выбираем имя таблицы, после чего устанавливаем свойство Active в True. Все, подключает у меня отлично, таблицу отображает также отлично.

Но такой вариант у меня не прошел с таблицами FoxPro, о чем я говорил выше. Поэтому, чтобы решить свою проблему, я решил использовать технологию ADO. Поэтому с вкладки ADO я установил следующие компоненты:

  • TADOConnection
  • TADOQuery или TADOTable
  • По желанию можно установить TDataSource и TDBGrid

Далее нам необходимо просто создать подключение, которое мы делали для базы MS Access, оно будет отличаться тем, что мы выбираем другого поставщика данных, а именно Microsoft Visual FoxPro ODBC. Все, далее указываем кодировку и путь к таблицам. Если это таблицы FoxPro, то в папки должен присутствовать файл со списком всех таблиц, расширения *.dbc. То есть, строка подключения компонента TADOCOnnection будет выглядеть, примерно следующим образом:

Связываем компонент TADOConnection с TADOTable или TADOQuery и работает с нужными нам таблицами.

Еще один вариант – это работа с таблицами dbf-формата, с помощью компонента TDBF, который, я использую в проекте . Если честно, я хочу от него отказаться, просто он хорошо работает с кодировками. Рассказывать, как с ним работать, я не буду, а просто оставлю ссылку для примера.

Вам надоело каждый раз оплачивать услуги разработчика если нужно загрузить данные в другой справочник или документ? С помощью этой обработки вы сможете загрузить любой файл excel, csv или dbf в любой справочник или документ или в их табличные части. Обработка обладает гибкими настройками, перед загрузкой элементов справочника вы можете указать группу, куда нужно их загрузить. Вы сможете загрузить справочник номенклатуры, или табель по сотрудникам и другие данные, при этом не имеет значение какой у вас формат файла, можно один раз настроить и сохранить правила переноса, и дальше загружать в пару действий.

В поле "Объект" выбираем тот объект, куда мы хотим загрузить данные, нажимаем "т", вы увидите все справочники и документы которые у вас есть в конфигурации, нужно выбрать тип куда загрузить данные

Если выбранный объект имеет табличные части, и вам нужно загрузить информацию в какую-то табличную часть, нажимаем галочку "Загружать в табличную часть" после этого, правее объекта вы увидите поле "Табличные части" в котором нужно выбрать табличную часть для загрузки. Далее выберите файл с которого нужно загрузить данные. Если это dbf файл, станет доступным поле "Кодировка", где вы сможете выбрать кодировку файла, если это будет Excel файл, то после его выбора станет доступно поле "Имя листа книги", после выбора нажимаем кнопку "Прочитать из файла", после этого заполнится табличный документ справа. Процесс чтения из файла вы можете наблюдать по полосе индикатора внизу. Обработка проанализирует сколько строк файл содержит для загрузки, и сама подставит данные в реквизиты "Загружать со строки №" и "по строку №", которые вы можете изменить.

Слева в табличную часть заполнятся реквизиты объекта или табличной части, в зависимости что выбрано. Колонки следующие:

Представление - название реквизита;

Доступные описание типов - тип данного реквизита, если тип составной, то типы будут указаны через запятую;

Описание типа - если тип составной, то обработка даст вам возможность выбрать тип в который будет проставляться в реквизит (из доступных)

Режим загрузки - Принимает два значения, для ссылочного "Искать", для других "Устанавливать"

№ колонки - Нужно указать номер колонки с табличного документа справа, с какой колонки в данный реквизит загружать данные;

Искать по - если ссылочный реквизит и ссылка справочник или план расчета, то предлагает на выбор "Код" или "Наименование", если ссылка документ, то ищет только по номеру.

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

После того как вы установили номера колонок и описание типов для составных реквизитов, нажимаем "Загрузить и сопоставить данные", после этого станет доступна кнопка "Перенести в объект" и вы увидите закладку "Подготовленные данные".

Закладка подготовленные данные, содержит информацию, как произойдет загрузка в табличную часть, это уже непосредственно реквизиты документа со всеми его ссылками. В этой табличной части вы можете сами откорректировать информацию, перед тем как нажать кнопку "Перенести в объект", после нажатия этой кнопки вся информация будет загружена в табличную часть. Если в поле «Объект» не выбран сам документ, то будет создан новый документ от сегодняшней даты и вся информация будет туда занесена, если объект выбран, то табличная часть будет перенесена в выбранный объект. Если галочка "Загружать в табличную часть" не установлена, то будут создаваться новые элементы.

Внимание! Обработка на обычных формах!