Конвертировать txt в 1с

Обновлено: 04.07.2024

Для работы с текстовыми документами существуют три типа данных – ТекстовыйДокумент, ЗаписьТекста и ЧтениеТекста. Разница двух подходов состоит в способе загрузки документа:

ТекстовыйДокумент загружает файл целиком и далее построчно обрабатывает его;

ЗаписьТекста и ЧтениеТекста загружают файл построчно.

Запись данных справочника в текстовый файл:

Текст = Новый ТекстовыйДокумент;

// перебор элементов справочника

Пока Выборка.Следующий() Цикл

// выводим в файл код и наименование, разделенные

// каким-либо разделителем, например, ‘;’

// запись в текстовый файл

С помощью типа ЗаписьТекста этот код будет таким:

// файл в формате Unicode

Текст = Новый ЗаписьТекста("C://1.txt", КодировкаТекста.UTF8);

// перебор элементов справочника

Пока Выборка.Следующий() Цикл

// выводим в файл код и наименование, разделенные

// каким-либо разделителем, например, ‘;’

// запись в текстовый файл

Чтение данных из текстового файла в справочник:

Текст = Новый ТекстовыйДокумент;

// перебор строк текстового документа

Для НомерСтроки=1 по Текст.КоличествоСтрок() Цикл

// получить строку файла с указанным номером

// ищем позицию символа-разделителя

Позиция = Найти (Стр, ‘;’);

// создаем новый элемент справочника

// в код записывается подстрока от первого символа до позиции

// за символом-резделителем – наименование клиента

Спр.Наименование = Сред (Стр, Позиция+1);

С помощью типа ЗаписьТекста этот код будет таким:

// файл в формате Unicode

Текст = Новый ЧтениеТекста("C://1.txt", КодировкаТекста.UTF8);

// перебор элементов справочника

// пока строки в файле остались

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

// получить очередную строку файла

// ищем позицию символа-разделителя

Позиция = Найти (Стр, ‘;’);

// создаем новый элемент справочника

// в код записывается подстрока от первого символа до позиции

// за символом-резделителем – наименование клиента

Спр.Наименование = Сред (Стр, Позиция+1);

В строке текста значения реквизитов справочника разделяются символом кавычка. Его можно получить, например, используя функцию Символ(34).

В случае если символ разделителя (в данном случае – кавычка) может встречаться в выгружаемых данных,

перед помещением в строку меняем этот символ на заранее определенную комбинацию символов.

В нашем случае это %квч%.

// Выгрузка данных в текстовый файл

Текст = Новый ТекстовыйДокумент;

Пока Выборка.Следующий() Цикл

Стр = СтрЗаменить(Выборка.Наименование, Символ(34), "%квч%");

Код = Строка(Выборка.Код) + Символ(34);

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

//После получения значения делаем обратное преобразование для разделителя (при выгрузке

//данных кавычку, встречающуюся в выгружаемых строках, заменяли комбинацией символов %квч%)

Текст = Новый ТекстовыйДокумент;

Для НомерСтроки = 1 По Текст.КоличествоСтрок() Цикл

Позиция = Найти(Стр, Символ(34));

Код = Сред(Стр, 1, Позиция-1);

прНаименование = Сред(Стр, Позиция + 1);

Наименование = СтрЗаменить(прНаименование, "%квч%", Символ(34));

"В предыдущем примере файл ЗАГРУЖАЛСЯ ПОЛНОСТЬЮ, а в следующем примере ЗАГРУЖАЕТСЯ ПОСТРОЧНО."

"Это позволяет при работе с файлами больших размеров значительно уменьшить время выполнения задачи."

//Запись данных в файл построчно

Текст = Новый ЗаписьТекста(Путь, КодировкаТекста.UTF8);

Пока Выборка.Следующий() Цикл

//Чтение данных из файла построчно

Текст = Новый ЧтениеТекста(Путь, КодировкаТекста.UTF8);

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

//Выгрузка данных в TXT файл

НачВремя = _GetPerformanceCounter(); // Запоминаем время запуска алгоритма

Пока ТЗ.ПолучитьСтроку()=1 Цикл

КонВремя = _GetPerformanceCounter(); // Запоминаем время окончания алгоритма

// Рассчитываем продолжительность выполнения алгоритма в секундах

Сообщить("Время выгрузки в TXT файл: "+Длительность+" с");

//Загрузка, чтение данных из TXT файла:

НачВремя = _GetPerformanceCounter(); // Запоминаем время запуска алгоритма

Для н=1 по КолСтр Цикл

Состояние("В файле прочитано строк "+н+" из "+КолСтр);

КонВремя = _GetPerformanceCounter(); // Запоминаем время окончания алгоритма

// Рассчитываем продолжительность выполнения алгоритма в секундах

Сообщить("Время чтения TXT файла: "+Длительность+" с");

Разместил: E_Migachev Для версии: 7.x 8.x Дата: 30.12.09 Прочитано: 13967

Не редко возникает необходимость загрузить в справочники или документы 1С данные из текстового файла. Приведенный пример внешней обработки позволит преобразовать текстовый файл с известным разделителем данных в поле табличного документа для последующей обработки уже внутри 1С:Предприятия. Обработка содержит функцию разбора строки на массив данных, настраиваемый разделитель строки текста на "столбцы", процедуру чтения данных из текстового файла.

Разбор строки в массив с использованием функций из конфигурации 1С
Для разложения строки в массив в конфигурация 1С:Бухгалтерия, 1С:Торговля и 1С:УПП имеется замечательная функция - Функция РазложитьСтрокуВМассивПодстрок(Знач Стр, Разделитель = ",") Экспорт. Функция "расщепляет" строку на подстроки, используя заданный разделитель. Разделитель может иметь любую длину. Если в качестве разделителя задан пробел, рядом стоящие пробелы считаются одним разделителем, а ведущие и хвостовые пробелы параметра "Стр" игнорируются. Подробнее можно прочесть внутри конфигурации - "Общие модули" -> "Общего назначения". Функция возвращает массив значений, элементы которого - подстроки.


Чтение текстового файла (txt) в 1С
Операцию импорта - экспорта текстовых файлов (формат тхт или csv, а также htm, html) очень удобно реализовать при помощи конструкции следующего вида:

1. Функция ПолучитьПотокЧтенияСтрок(Файл) - Назначение: Проверить наличие файла (функция Файл()), Создать текстовый документ (Новый ТекстовыйДокумент()), вызвать метод "Прочитать" для открытия потока чтения файла. Возвращает поток, готовый для чтения.
2. Процедура ЧтениеТХТФайла(Элемент) - Назначение: В цикле произвести последовательное чтение строк файла текстового документа, разбирая на массив колонок данных и добавляя значения массива в табличное поле;

Исходный код 1С функции создания текстового потока чтения файла ТХТ:
Код 1C v 8.х

В данном примере была произведена загрузка из текстового файла в следующем формате:
Код

Читайте также: