Skip to content

Чтение DBF

Длина имени файла DBF без расширения не должна быть больше 8 символов

&НаКлиенте
Асинх Процедура ПрочитатьФайл(Команда)
Расширение = "dbf";
ПараметрыДиалога = Новый ПараметрыДиалогаПомещенияФайлов;
ПараметрыДиалога.Заголовок = "Выберите файл";
ПараметрыДиалога.Фильтр = ФильтрПоРасширению(Расширение);
ОписаниеФайла = Ждать ПоместитьФайлНаСерверАсинх(,,,ПараметрыДиалога);
Если ОписаниеФайла = Неопределено Тогда
Возврат;
КонецЕсли;
АдресДанных = ОписаниеФайла.Адрес;
Расширение = ОписаниеФайла.СсылкаНаФайл.Файл.Расширение;
ПрочитатьФайлНаСервере(АдресДанных, Расширение);
КонецПроцедуры
&НаСервере
Процедура ПрочитатьФайлНаСервере(АдресДанных, Расширение)
ПутьКФайлу = ПолучитьИмяВременногоФайла(Расширение);
//Длина имени файла DBF без расширения не должна быть больше **8 символов**
Файл = Новый Файл(ПутьКФайлу);
ИмяБезРасширения = Файл.ИмяБезРасширения;
Если СтрДлина(ИмяБезРасширения) > 8 Тогда
ИмяБезРасширения = Лев(ИмяБезРасширения, 8);
КонецЕсли;
ПутьКФайлу = СтрЗаменить(ПутьКФайлу, Файл.ИмяБезРасширения, ИмяБезРасширения);
ДанныеФайла = ПолучитьИзВременногоХранилища(Объект.АдресДанных);
ДанныеФайла.Записать(ПутьКФайлу);
ФайлДБФ = Новый XBase;
ФайлДБФ.ОткрытьФайл(ПутьКФайлу);
Если НЕ ФайлДБФ.Первая() Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Файл пустой";
Сообщение.Сообщить();
Возврат;
КонецЕсли;
Пока НЕ ФайлДБФ.ВКонце() Цикл
СтрокаТаблицы = Объект.ДанныеФайла.Добавить();
СтрокаТаблицы.Наименование = ФайлДБФ.NAME;
// обработка
ФайлДБФ.Следующая();
КонецЦикла;
ФайлДБФ.ЗакрытьФайл();
КонецПроцедуры