1С загрузка данных из файлов DBF
Сегодня продолжаем изучать вопрос загрузки данных из разных файлов в 1С. Как я не раз уже говорил тема эта очень актуальная и на практики она встретиться 100 %. В большинстве случаев таким образом производиться обмен информацией с другими информационными системами, конфигурациями 1С, сайтами, базами данных и т.д. Обмен происходить чаще всего с использованием файлов в формате TXT, XML, DBF, CSV и Excel. Поэтому очень важно уметь с ними работать, загружать/выгружать данные. В сегодняшней статьи рассмотрим загрузку данных из DBF файлов.
Это уже четвертая статья по данное теме, про загрузку данных в 1С из текстовых и Excel файлов Я уже рассказывал, так же в самой первой статье для этих целей я создавал обработку, которую сегодня немного модернизируем.
Как прочитать файл DBF в 1С
Для начала изменим обработку, приведем её к более человеческому виду. Обработка будет универсальная, с её помощью можно будет загружать данный из всех файлов, TXT, XML, DBF, CSV и Excel. Поэтому добавим на форму реквизит «Тип фала», который будет позволять пользователю выбирать нужный формат файла для загрузки. Так же переименуем команды и назовем их «Прочитать» и «Загрузить». С помощью первой команды данные из фалов будут читаться и отображаться в табличной части, а с помощью второй уже непосредственно загружаться в базу.
В предыдущих статья была одна команда «Загрузить».
Для того чтобы создать переключатель, нужно открыть свойства реквизита «Тип файла», найти раздел «Использование» и в пункте «Список Выбора» добавить «TXT, XML, DBF, CSV и Excel», внешний вид можно изменить в разделе «Основные» с помощью пункта «Вид Переключателя».
Теперь напишем код для обработчика «Начала выбора».
&НаКлиенте
Процедура ПутьКФайлуНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
Проводник = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
Проводник.Заголовок = "Выберите файл";
Если Объект.ТипФайла = "TXT" Тогда
Фильтр = "Текстовый документ (*.txt)|*.txt";
ИначеЕсли Объект.ТипФайла = "CSV" Тогда
Фильтр = "Текстовый документ (*.csv)|*.csv";
ИначеЕсли Объект.ТипФайла = "XLS" Тогда
Фильтр = "Документ Excel (*.xls)|*.xls";
ИначеЕсли Объект.ТипФайла = "DBF" Тогда
Фильтр = "Файл DBF (*.dbf)|*.dbf";
ИначеЕсли Объект.ТипФайла = "XML" Тогда
Фильтр = "Файл XML (*.xml)|*.xml";
Иначе
Возврат;
КонецЕсли;
Проводник.Фильтр = фильтр;
Оповещение = Новый ОписаниеОповещения("ПослеВыбораФайла", ЭтотОбъект);
Проводник.Показать(Оповещение);
КонецПроцедуры
&НаКлиенте
Процедура ПослеВыбораФайла(ВыбранныеФайлы, ДополнительныеПараметры) Экспорт
Если ВыбранныеФайлы = Неопределено Тогда
Возврат;
КонецЕсли;
Объект.ПутьКФайлу = ВыбранныеФайлы[0];
КонецПроцедуры
Тут все просто настраиваем диалоговое окно выбора, проверяем какой тип файлов выбрал пользователь и устанавливаем соответствующий фильтр.
Далее изменим процедуру команды «Прочитать», с помощью условия будем определять какой тип файла выбран и открывать соответствующею процедуру для его обработки.
&НаКлиенте
Процедура Прочитать(Команда)
Объект.ДанныеФайла.Очистить();
Если Объект.ТипФайла = "TXT" тогда
Прочитать_ТХТ()
ИначеЕсли Объект.ТипФайла = "XLS" тогда
Прочитать_xls()
ИначеЕсли Объект.ТипФайла = "DBF" тогда
Прочитать_dbf()
КонецЕсли;
КонецПроцедуры
Для каждого типа файлов будет использоваться своя процедура.
Ну и собственно в процедуре которая будет обрабатывать файлы DBF пишем вот такой код.
&НаКлиенте
Процедура Прочитать_dbf()
Файл = Новый XBase;
Файл.ОткрытьФайл(Объект.ПутьКФайлу);
Если Файл.Первая() = Ложь Тогда
Возврат;
КонецЕсли;
Пока Файл.ВКонце() = Ложь Цикл
НоваяСтрока = Объект.ДанныеФайла.Добавить();
НоваяСтрока.Наименование = Файл.Name;
НоваяСтрока.Расшифровка = Файл.Full_Name;
НоваяСтрока.ИНН = Файл.INN;
Файл.Следующая();
КонецЦикла;
Файл.ЗакрытьФайл();
КонецПроцедуры
Для обработки DBF будем использовать объект XBase и его методы «Открыть файл()», «Первая()», «Следующая()», «ВКонце()» и «Закрыть Фаил()».
Тут есть одна особенность о которой стоить знать, длина имени файла не должна превышать 8 символов!
Если кратко по коду то сначала создаем новый объект, далее открываем файл, после чего проверяем наличие записей в файле и с помощью цикла обходим строки файла.
Для примера возьмем вот такой файл с двумя строками и тремя столбцами.
Остается только проверить работоспособность написанного кода. Теперь сначала нужно выбрать тип файла, в нашем случае DBF, после этого в окне выбора должны отображаться файлы только этого типа, после нажатия команды «Прочитать» содержимое выбранного файла должно отобразиться в табличной части обработки.
Вот в принципе и все, остается только написать процедуру для загрузки этой информации в базу 1С, но об этом в следующей статье, так как информация поступающая небольшими объемам воспринимается и усваивается намного быстрей лучше. В принципе все достаточно просто, но если остались вопросы то обязательно напишите.