Конвертировать txt в 1с
Для работы с текстовыми документами существуют три типа данных – ТекстовыйДокумент, ЗаписьТекста и ЧтениеТекста. Разница двух подходов состоит в способе загрузки документа:
ТекстовыйДокумент загружает файл целиком и далее построчно обрабатывает его;
ЗаписьТекста и ЧтениеТекста загружают файл построчно.
Запись данных справочника в текстовый файл:
Текст = Новый ТекстовыйДокумент;
// перебор элементов справочника
Пока Выборка.Следующий() Цикл
// выводим в файл код и наименование, разделенные
// каким-либо разделителем, например, ‘;’
// запись в текстовый файл
С помощью типа ЗаписьТекста этот код будет таким:
// файл в формате 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.х
В данном примере была произведена загрузка из текстового файла в следующем формате:
Код
Читайте также: