Универсальный конвертер DBF -> CSV (dbf2csv)

В данной обработке "dbf2csv" представлена переведенная мной на платформу 1С:Предприятие 7.7  Обработка "Экспорт ТЗ в CSV формат (пратформа 8.0/8.1)", и созданая мной функция ЭкспортТЗвCSV() для 1С:Предприятие 7.7

На основе разработки «Экспорт ТЗ в CSV формат (платформа 8.0/8.1)» //infostart.ru/public/19321/

я перевел «Экспорт ТЗ в CSV формат (платформа 8.0/8.1)» на платформу 1С:Предприятие 7.7, создана функция ЭкспортТЗвCSV() на платформе 1С:Предприятие 7.7 (текст этой функции представлен в этом описании ниже).

Эта функция сохраняет на диск файл «Comma separated values» (предназначенный для представления табличных данных) http://ru.wikipedia.org/wiki/CSV который используется для обмена коммерческой информацией с поставщиками, дистрибьюторами и интернет-сайтами.

Демонстрация возможностей экспорта подготовлена на платформе обработки «ОбзорДБФ» от Melnik — члена клуба профессионалов 1С  http://1c.proclub.ru/userinfo.php?uid=18579 которая входит в комплект Редактор DBF-файлов (ReDBF)
(25/02/2005 23:00:00) http://1c.proclub.ru/modules/mydownloads/personal.php?cid=76&lid=3901

Еще один способ загрузки DBF из ТЗ для преобразования в CVS описан в разработке «Функция загрузки dbf» //infostart.ru/public/57110/

 

Привожу текст процедур преобразования таблицы значений в CVS файл:

 

//ПреобразоватьПолеДляCSV () Преобразует поле строку к формату CSV
//Параметры:
//Поле            (Строка)            — Поле которое преобразуется к формату CSV
//Разделитель    (Строка)            — Для формата CSV разделителем является ‘,’, но т.к.
//                                      Excel берет разделитель из региональных стандартов чтобы открывалось внем
//                                      нужно устанавливать разделитель ‘;’
//Возращает: (Строка) преобразованное к формату CSV поле
Функция ПреобразоватьПолеДляCSV(Поле,Разделитель = «;»)
    //Так как Excel Берет настройки из рег. стандартов разделитель элементов списка, а у нас в России это ‘;’
    ПреобразованноеПоле = Поле;
    //по правилам CSV если поле содержит двойные ковычки они должны повторятся дважды
    Если Найти(ПреобразованноеПоле,»»»») > 0 Тогда
        ПреобразованноеПоле = СтрЗаменить(ПреобразованноеПоле,»»»»,»»»»»»);
    КонецЕсли;
    //по правилам CSV если поле содержит перенос строки или запятую оно должно заключатся в двойные ковычки
    Если (Найти(ПреобразованноеПоле,Разделитель)=0) ИЛИ (Найти(ПреобразованноеПоле,»»»»)=0) Тогда
        ПреобразованноеПоле = «» + ПреобразованноеПоле + «»;
    КонецЕсли;
    Возврат ПреобразованноеПоле;
КонецФункции

//ЭкспортТЗвCSV () экспортирует данные ТЗ в файл в формате CSV
//Параметры:
//ИмяФайла        (Строка)            — Имя файла в который производится сохранение
//ТЗ            (ТаблицаЗначений)    — Таблица значений данные которые сохраняются в файл
//Разделитель    (Строка)            — Для формата CSV разделителем является ‘,’, но т.к.
//                                      Excel берет разделитель из региональных стандартов чтобы открывалось внем
//                                      нужно устанавливать разделитель ‘;’
//Возращает:(Булево) Истина — если файл успешно сохранен иначе ложь
Функция ЭкспортТЗвCSV(ТЗ, ИмяФайла, флЭкспортироватьИменаКолонок = 1, Разделитель = «;») Экспорт
    МаксКол = ТЗ.КоличествоКолонок();
    МаксСтр = ТЗ.КоличествоСтрок();
    Если (МаксКол = 0) ИЛИ (МаксСтр = 0) Тогда
        Возврат 0;
    КонецЕсли;
    Попытка
        ФайлCVS = создатьОбъект(«Текст»);
        // открыть файл
        ФайлCVS.Записать(ИмяФайла);
        ФайлCVS.КодоваяСтраница(1); //задаем кодировку: 0 — windows, 1 — DOS
        ФайлCVS.Шаблон(1);
        //Если нужно выгружать наименование колонок Выгружаем
        ПодготовленнаяСтрока = «»;
        ШаблонCVS = «»;
        Для СчКол = 1 По МаксКол Цикл
            КолонкаИмя = ТЗ.ПолучитьПараметрыКолонки(СчКол);
            ПодготовленнаяСтрока = ПодготовленнаяСтрока +»»+ КолонкаИмя +»»+ Разделитель;
            ШаблонCVS = ШаблонCVS + «»»[ПреобразоватьПолеДляCSV(СокрЛП(ТЗ.ПолучитьЗначение(СчСтр,»»»+КолонкаИмя+»»»)))]»»»+Разделитель;
        КонецЦикла;
        ПодготовленнаяСтрока = Лев (ПодготовленнаяСтрока,СтрДлина(ПодготовленнаяСтрока)-1);
        ШаблонCVS = Лев (ШаблонCVS,СтрДлина(ШаблонCVS)-1);
        Если флЭкспортироватьИменаКолонок = 1 Тогда
            ФайлCVS.ДобавитьСтроку(«»+ПодготовленнаяСтрока+»»);
        КонецЕсли;
        Для СчСтр = 1 По МаксСтр Цикл
            ФайлCVS.ДобавитьСтроку(ШаблонCVS);
        КонецЦикла;
    Исключение
        Возврат 1;
    КонецПопытки;
    ФайлCVS.Записать(ИмяФайла);
    Возврат 0;
КонецФункции

1 Comment

  1. NAKIS

    пасибо, пусть и не обработка, но статья помогла)

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *