1c-obrabotki.at.ua Суббота, 08.02.2025, 07:13
Главная | Регистрация | Вход Приветствую Вас Гость | RSS
Форма входа

Меню сайта

Категории раздела
Мои статьи [48]

Курс валют
Курс Валют Информер
Российский рубль Российский рубль валюта России
(EUR)//-//
(USD)//-//
(CZK)//-//
(GBP)//-//

Главная » Статьи » Мои статьи

Работа с текстовыми файлами и файлами CSV в 1С 8.2

   Целью данной статьи будет изучение алгоритмов работы с текстовыми файлами, файлами DBF и CSV. Очень часто приходится использовать данные форматы для обмена данными между несколькими базами, в том числе и отличными от 1С.

Чтение текстового файла

Открытие текстового файла для чтения описывается конструкцией: 

Текст = Новый ЧтениеТекста;
Текст.Открыть(ПолноеИмяФайла);

В данной конструкции создается неинициализированный объект ЧтениеТекста, а для инициализации используется метод Открыть(<Имя файла>)

Пример:

&НаКлиенте
Процедура ПрочитатьФайл(Команда)

        // Вставить содержимое обработчика.
        Перем Стр;

        Стр = "";

        //Открываем диалог выбора файла для чтения
        ВыборФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
        ВыборФайла.МножественныйВыбор = Ложь;
        ВыборФайла.Заголовок НСтр("ru = 'Выбор файла'");
        ВыборФайла.Фильтр = НСтр("ru = 'Все файлы (*.*)|*.*'");

        Если ВыборФайла.Выбрать() Тогда

                ПолноеИмяФайла ВыборФайла.ПолноеИмяФайла;

        КонецЕсли;

        Текст Новый ЧтениеТекста;
        Текст.Открыть(ПолноеИмяФайла);

        Пока Стр <> Неопределено Цикл // строки читаются до символа перевода строки

                Стр Текст.ПрочитатьСтроку();
                Сообщить(Стр);

        КонецЦикла;

        Текст.Закрыть();

КонецПроцедуры

Перебор строк в текстовом документе реализован при помощи функции ПрочитатьСтроку().
После чтения файла не забываем его закрыть функцией Закрыть().

Запись текстового файла

Запись в текстовый файл происходит приблизительно по тому же сценарию:

&НаКлиенте
Процедура ЗаписатьФайл(Команда)

        //Открываем диалог выбора файла для записи
        СохранениеФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
        СохранениеФайла.Заголовок НСтр("ru = 'Сохранить файл'");
        СохранениеФайла.Фильтр НСтр("ru = 'Все файлы (*.txt)|*.txt'");

        Если СохранениеФайла.Выбрать() Тогда

                Текст = Новый ЗаписьТекста;
                Текст.Открыть(СохранениеФайла.ПолноеИмяФайла,КодировкаТекста.ANSI);
                Текст.ЗаписатьСтроку("Программируем в 1С 8.2");
                Текст.Закрыть();

        КонецЕсли;

КонецПроцедуры

Записать текст в документ можно при помощи функции ЗаписатьСтроку() - в данном случае после записанной строки автоматически добавится разделитель строк и следующая запись начнется с новой строки. Если же необходимо добавить в строку дополнительно текст, то можно воспользоваться функцией без переноса строки - Записать()

Чтение файла CSV

CSV (от англ. Comma-Separated Values — значения, разделённые запятыми) — текстовый формат, предназначенный для представления табличных данных. Каждая строка файла — это одна строка таблицы. Значения отдельных колонок разделяются разделительным символом (delimiter) — запятая (,) или точка с запятой (;). (Википедия)

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

Пример:

&НаКлиенте
ПроцедураПрочитатьЦСВ(Команда)

        // Вставить содержимое обработчика.
        ПеремСтр,Сч;
        Стр = "";

        //Открываем диалог выбора файла для чтения
        ВыборФайла= НовыйДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
        ВыборФайла.МножественныйВыбор = Ложь;
        ВыборФайла.Заголовок =НСтр("ru = 'Выбор файла'");
        ВыборФайла.Фильтр=НСтр("ru = 'Все файлы (*.csv)|*.csv'");

        ЕслиВыборФайла.Выбрать() Тогда
                ПолноеИмяФайла=ВыборФайла.ПолноеИмяФайла;
        КонецЕсли;

        Текст =НовыйЧтениеТекста;
        Текст.Открыть(ПолноеИмяФайла);
        Сч = 0;

        ПокаСтр <> Неопределено Цикл

                Стр =Текст.ПрочитатьСтроку();

                //Создаем массив в который будем добавлять выбранные поля
                МассивПолей =НовыйМассив();

                //Цикл разбивает строку на подстроки по разделителю ";" и заносит их в массив
                ПокаСтрДлина(Стр)> 0 Цикл

                       //Находим позицию первого вхождения символа ";"
                       ПозицияРазделителя =Найти(Стр, ";");

                       //Считываем символы до первого найденного символа ";"
                       МассивПолей.Добавить(Лев(Стр,ПозицияРазделителя - 1));

                       //Удаляем из строки найденную подстроку и повторяем цикл с оставшейся строкой
                       Стр =Прав(Стр,СтрДлина(Стр) -ПозицияРазделителя);

                КонецЦикла;

                //Выводим на экран первое прочитанное поле
                Попытка Сообщить(МассивПолей[0]); Исключение КонецПопытки;

        КонецЦикла;

        Текст.Закрыть();

КонецПроцедуры




Источник: http://www.obrabotki.com/
Категория: Мои статьи | Добавил: Sam1488 (24.05.2013)
Просмотров: 3475 | Рейтинг: 0.0/0
Всего комментариев: 0
Погода

Поиск

Новости

Copyright MyCorp © 2025