gifts2017

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

Опубликовал Сергей Космачев (ksnik) в раздел Обработки - Универсальные обработки

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

На основе разработки "Экспорт ТЗ в CSV формат (платформа 8.0/8.1)" http://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" http://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;
КонецФункции

Скачать файлы

Наименование Файл Версия Размер
dbf2csv.ert 25
.ert 128,00Kb
10.09.12
25
.ert 128,00Kb Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Денис Луцик (NAKIS) 18.12.13 14:37
пасибо, пусть и не обработка, но статья помогла)
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа