0

Загрузка файла dbf в таблицу значений

#Обычное приложение#Таблица значений


1) Для начала надо выбрать файл с диска. Это можно сделать при помощи такой функции:

Функция ВыбратьФайл(ПолноеИмяФайла, Режим, Заголовок, Фильтр)
    Диалог = Новый ДиалогВыбораФайла(Режим);
    Диалог.Заголовок                 = Заголовок;
    Диалог.ПредварительныйПросмотр   = Ложь;
    Диалог.Фильтр                    = Фильтр;

    Если ЗначениеЗаполнено(ПолноеИмяФайла) Тогда
        Диалог.ПолноеИмяФайла = ПолноеИмяФайла;
    КонецЕсли;

    Если Диалог.Выбрать() Тогда
        ПолноеИмяФайла= Диалог.ПолноеИмяФайла;
        Возврат Истина;
    Иначе
        Возврат Ложь;
    КонецЕсли;
КонецФункции
  • ПолноеИмяФайла — переменная, где будет храниться путь к файлу;
  • Режим — Режим выбора файла;
  • Заголовок — заголовок диалога открытия файла;
  • Фильтр — Фильтр типов файла

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

Процедура ПутьКФайлуНачалоВыбора(Элемент, СтандартнаяОбработка)
    СтандартнаяОбработка= Ложь;
    если Не ВыбратьФайл(ПутьКФайлу, РежимДиалогаВыбораФайла.Открытие, "Выбор файла данных", "*.dbf") тогда
        Сообщить("Не удалось выбрать файл!");
    КонецЕсли;
КонецПроцедуры

2) Открыть dbf файл

Функция ОткрытьФайл(Путь, Файл) Экспорт
    Файл = новый XBase;
    Файл.ОткрытьФайл(Путь);
    если Не Файл.Открыта() тогда
        возврат Ложь;
    КонецЕсли;
    Файл.Кодировка = КодировкаXBase.OEM;
    Возврат Истина;
КонецФункции

3) Загружаем открытый dbf файл в таблицу значений

Функция ЗагрузитьФайлВТаблицуЗначений(Файл,Путь) Экспорт
   Сообщить("Начало загрузки файла в таблицу значений файла"+Путь);

   МассивТиповСтрока = новый Массив;
   МассивТиповСтрока.Добавить(Тип("Строка"));

   МассивТиповЧисло = новый Массив;
   МассивТиповЧисло.Добавить(Тип("Число"));

   МассивТиповДата = новый Массив;
   МассивТиповДата.Добавить(Тип("Дата"));

   ТЗ = новый ТаблицаЗначений;

   попытка
      Для каждого Поле из Файл.поля цикл
         ТЗ.Колонки.Добавить(Поле.Имя,Новый ОписаниеТипов(МассивТиповЧисло,?(Поле.Тип = "N",МассивТиповЧисло,?(Поле.Тип = "D",МассивТиповДата,МассивТиповСтрока))));
      КонецЦикла;

      КоличествоКолонок = ТЗ.Колонки.Количество();
      сч = 1;

      Пока Не Файл.ВКонце() цикл
      НоваяСтрока = ТЗ.Добавить();
      ЗаполнитьЗначенияСвойств(НоваяСтрока,Файл);

      для Колонка = 0 по КоличествоКолонок - 1 цикл
         если ТипЗнч(НоваяСтрока[Колонка]) = Тип("Строка") тогда
             НоваяСтрока[Колонка] = СокрЛП(НоваяСтрока[Колонка]);
         конецесли;
      КонецЦикла;

      Сообщить("Обработана строка "+сч);

      сч = сч + 1;
          Файл.Следующая();
      КонецЦикла;

      возврат ТЗ;
  исключение
      Сообщить("НЕ УДАЛОСЬ СОЗДАТЬ ТАБЛИЦУ ЗНАЧЕНИЙ!");
      Возврат Неопределено;
  КонецПопытки;
КонецФункции

4) Общая последовательность действий по загрузке файла dbf в таблицу значений, должна выглядеть так:

Процедура КнопкаВыполнитьНажатие(Кнопка)
    если Не ОткрытьФайл(ПутьКФайлу, БД) тогда
        Сообщить("Не удалось открыть файл базы данных!");
        возврат;
    КонецЕсли;

    ТЗ = ЗагрузитьФайлВТаблицуЗначений(БД, ПутьКФайлу);

    БД.ЗакрытьФайл();
КонецПроцедуры
0 7464 1
ДобавленоVital705 дней назад
Последняя активность595 дней назад


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

Аноним написал:595 дней назад0

Объясните откуда взялась БД

Ответить

Добавить статью!

Наш канал на Youtube

Изучаете 1С? Скачайте 200 видео по 1С бесплатно:

Похожее

Создание обработки заполнения табличной части 1С 8

1. Постановка задачи В этой статье рассмотрим процесс написания простейшей внеш...

Создание внешнего отчета в 1с 8

Рассмотрим создание внешнего отчета в 1с 8 без использования системы компоновки ...

Запись и загрузка из текстового файла в 1С 8

Запись в текстовый файл 1С В 1с 8 сохранение значений в файл производится при п...

Создание печатной формы для управляемого приложения в 1с 8.3

1. Задача Рассмотрим написание простейшей печатной формы в 1с 8.2 - 8.3 для упр...

Загрузка в 1C из Excel

В этой статье я расскажу как с помощью универсальной обработки “Загрузка данных ...

Новое

Timberland 6 дюймов Премиум Сапоги мужские гуммигут [Timberland_SL26103136] - $105.00 : Timberland outlet, timberlandoutlet.cn

Timberland 6 дюймов Timberland Дети сапоги на выходе [b][url=http://www.timberla...

Lady-Datejust

Rolex Submariner Rolex Submariner [b][url=http://www.rolexdaytona.top/ru/]swiss ...

Колумбийский спортивная одежда outletstoreTERTIARY_SECTIONcolumbiaoutdooroutletstore.top

Колумбия куртки Колумбия куртки [b][url=http://www.columbiaoutdooroutletstore.to...