IT решения для Вашего бизнеса

 
Главная  |  Продукты  |  Услуги и цены  |  Клиенты  |  Контакты
 
1C Предприятие 7.7
Наши решения
Программирование
1С Предприятие 8.*
Наши решения
Партнерские разработки
Типовые решения
Программирование
Администрирование
Web проекты
Интернет-магазины
Поиск по сайту

 
Управление интернет-магазином
 

Подсистема «Управление интернет-магазином» позволяет используя типовые конфигурации 1С 8 «Управление торговлей» и «Управление торговым предприятием», «Управление небольшой фирмой» и др. организовать удобное управление интернет-продажами.

Цена: 1000$ Подробная информация о модуле

 

Главная arrow Программирование arrow Импорт - экспорт arrow Загрузка данных из CSV файла
Загрузка данных из CSV файла Версия в формате PDF Версия для печати Отправить на e-mail
Рейтинг: / 8
ХудшаяЛучшая 

Загрузка данных из CSV файла

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

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

Мы в качестве примера возьмем файл с выписками из банка и считаем из него данные в таблицу значений.

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

 
        СимволРазделитель = ";";  //Зададим символ разделитель нашего файла
  
  Файл = Новый Файл(ИмяФайлаИмпорт);//ИмяФайлаИмпорт - содержит путь к нашему файлу
  Если Не Файл.Существует() Тогда //Проверка существования файла
    Возврат;
  Конецесли;
  
  Текст = Новый ТекстовыйДокумент();  
  Текст.Прочитать(ИмяФайлаИмпорт, КодировкаТекста.ANSI); //Читаем содержимое нашего файла
  
  //Создаем таблицу значений, в которую занесем считанные с файла данные
  //Количество и поряок значений в файле, с точностью повторяем колонками таблицы значений
  ТаблицаДанных = Новый ТаблицаЗначений;
  ТаблицаДанных.Колонки.Добавить("ЄДРПОУ",Новый ОписаниеТипов("Строка"));
  ТаблицаДанных.Колонки.Добавить("МФО",Новый ОписаниеТипов("Строка"));
  ТаблицаДанных.Колонки.Добавить("Счет",Новый ОписаниеТипов("Строка"));
  ТаблицаДанных.Колонки.Добавить("Валюта",Новый ОписаниеТипов("Строка"));
  ТаблицаДанных.Колонки.Добавить("ДатаОперации",Новый ОписаниеТипов("Дата"));
  ТаблицаДанных.Колонки.Добавить("КодОперации",Новый ОписаниеТипов("Число"));
  ТаблицаДанных.Колонки.Добавить("МФОБанка",Новый ОписаниеТипов("Строка"));
  ТаблицаДанных.Колонки.Добавить("НазваниеБанка",Новый ОписаниеТипов("Строка"));
  ТаблицаДанных.Колонки.Добавить("СчетКорреспондента",Новый ОписаниеТипов("Строка"));
  ТаблицаДанных.Колонки.Добавить("ЄДРПОУКорреспондента",Новый ОписаниеТипов("Строка"));
  ТаблицаДанных.Колонки.Добавить("Кореспондент",Новый ОписаниеТипов("Строка")); 
  ТаблицаДанных.Колонки.Добавить("НомерДокумента",Новый ОписаниеТипов("Строка"));
  ТаблицаДанных.Колонки.Добавить("ДатаДокумента",Новый ОписаниеТипов("Строка"));
  ТаблицаДанных.Колонки.Добавить("Дебет",Новый ОписаниеТипов("Число"));
  ТаблицаДанных.Колонки.Добавить("Кредит",Новый ОписаниеТипов("Число"));
  ТаблицаДанных.Колонки.Добавить("НазначениеПлатежа",Новый ОписаниеТипов("Строка"));     
  
  //Выбираем значения из файла
  //Этот код универсальный, количество загружаемых значений описывается выше в таблице значений
  Для а = 2 по Текст.КоличествоСтрок() Цикл // Задаем цикл выбора, считаем что первая строка это шапка       
    ОбработкаПрерыванияПользователя(); 
    ТекСтрока = Текст.ПолучитьСтроку(а);//Получаем следующую строку  
    
    НоваяСтрока = ТаблицаДанных.Добавить(); //Добавлем строку в нашу итоговую таблицу
    
    Для СчетчикПолей = 1 по ТаблицаДанных.Колонки.Количество() Цикл //Перебираем значения через разделитель
      НомерСимвола       = Найти(ТекСтрока,СимволРазделитель); //ищем первый разделитель в строке
      Если НомерСимвола = 0 Тогда
        ТекЗначение = ТекСтрока; //Если не нашли, считаем что значение последнее в строке  
      Иначе
        ТекЗначение = Лев(ТекСтрока,НомерСимвола - 1); //Получаем значение до разделителя
        ТекСтрока = Сред(ТекСтрока,НомерСимвола + 1); // Сокращаем строку, убираем из нее уже полученное значение 
      Конецесли;
      
      НашаКолонка = ТаблицаДанных.Колонки.Получить(СчетчикПолей - 1); // Получаем колонку в которую запишем значение
      
      // Если тип колонки дата, попробуем полученное значение преобразовать в дату
      Если НашаКолонка.ТипЗначения = Новый ОписаниеТипов("Дата") Тогда 
        ГГГГ = Сред(ТекЗначение,7,4);
        ММ = Сред(ТекЗначение,4 ,2);
        ДД = Сред(ТекЗначение,1,2);
        ЧЧ = Сред(ТекЗначение,12,2);
        МН = Сред(ТекЗначение,15 ,2);
        СС = "00";
        Попытка
          ТекЗначение = Дата("" + ГГГГ + ММ + ДД + ЧЧ + МН + СС);  
        Исключение
        КонецПопытки;
      Конецесли;
      
      НоваяСтрока[НашаКолонка.Имя] = ТекЗначение;  // Запишем в таблицу полученное значение
      Если НомерСимвола = 0 Тогда
        Прервать;
      Конецесли;  
    Конеццикла;      
    
  Конеццикла;    
 
Все данные из файла csv мы загрузили в таблицу значений. Дальше выбираем из таблицы выписки и создаем нужные документы в 1С.
 

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

:D:lol::-);-)8):-|:-*:oops::sad::cry::o:-?:-x:eek::zzz:P:roll::sigh:
Жирный Курсив Подчеркнутый Зачеркнутый Цитата


Защитный код
Обновить

< Пред.   След. >
Карта сайта
1C-PROFI © 2019
Использование материалов разрешено только с указанием ссылки (для web сайтов гиперссылки)
www.megastock.ru