1с как прочитать файл
« Как стать программистом 1С » Язык 1С » Текстовый файл 1С — ЧтениеТекста 1С, ЗаписьТекста 1С, ЗначениеВФайл 1С, ЗначениеИзФайла 1С
Текстовый файл 1С — ЧтениеТекста 1С, ЗаписьТекста 1С, ЗначениеВФайл 1С, ЗначениеИзФайла 1С
Для работы с текстовыми файлами 1С предназначены объекты ЧтениеТекста 1С и ЗаписьТекста 1С. Функция ЗначениеВФайл() позволяет быстро и просто сохранить в текстовый файл 1С «любое» значение 1С, в том числе такие объекты как таблица значений и прочие.
Чтение текстового файла 1С
Пример чтения текстового файла (про строки и работу с символами переноса строки см. подробнее «Работа со строками»).
Пример 1. Чтение текстового файла 1С целиком с помощью ЧтениеТекста 1С (в одну «строку с переносами»)
Файл = Новый ЧтениеТекста(«D:\Текстовый файл.txt»);
ВесьФайлОднойСтрокой = Файл.Прочитать();
Файл.Закрыть();
Пример 2. Чтение текстового файла 1С построчно с помощью ЧтениеТекста 1С (в данном примере в массив строк)
мСтрокФайла = Новый Массив();
Файл = Новый ЧтениеТекста(«D:\Текстовый файл.txt»);
//прочитать строку считывает одну строку из файла
//если достигнут конец файла, то возвращается значение НЕОПРЕДЕЛЕНО
Строка = Файл.ПрочитатьСтроку();
//а не был ли файл пуст?
Если Строка <> Неопределено Тогда
мСтрокФайла.Добавить(Строка);
КонецЕсли;
//цикл пока чтение строки не вернет НЕОПРЕДЕЛЕНО
//внутри цикла повторяем чтение
Пока Строка <> Неопределено Цикл
Строка = Файл.ПрочитатьСтроку();
Если Строка <> Неопределено Тогда
мСтрокФайла.Добавить(Строка);
КонецЕсли;
КонецЦикла;
Запись текстового файла 1С
Пример 3. Запись текстового файла 1С с помощью ЗаписьТекста 1С (пример – формирование xml файла текстом)
Только зарегистрированные пользователи VIP группы могут видеть этот контент.
Получившийся текстовый файл 1С с помощью ЗаписьТекста 1С:
Пример 4. Сохранение значения 1С в текстовый файл 1С с помощью ЗначениеВФайл 1С, чтение с помощью ЗначениеИзФайла 1С
//запросом выбираем все документы поступления товара
Запрос = Новый Запрос(«ВЫБРАТЬ * ИЗ Документ.ПоступлениеТоваров»);
//Запрос.Выполнить().Выгрузить() — выгружает в таблицу значений все выбранные запросом документы
//ЗначениеВФайл 1С — сохраняет таблицу значений в файл
ЗначениеВФайл(«D:\Текстовый файл.txt», Запрос.Выполнить().Выгрузить());
//ЗначениеИзФайла — считывает значение из файла обратно, в то значение, которое было сохранено, в данном случае в таблицу значений
//если выполнить этот код в другой базе, то ссылки на объекты не сохранятся, а простые типы данных (строка, число, дата, булево) — сохраняться
//вариант — проходить таблицу перед сохранением в цикле, заменяя все ссылочные значения на простые типы (подробнее см. «Работа с типами»)
тЗначений = ЗначениеИзФайла(«D:\Текстовый файл.txt»);
тЗначений.ВыбратьСтроку();
Проголосовать за этот пост:
1С — как прочитать / записать текстовый файл (.txt — расширение, блокнот)
Пример процедуры по чтению текстового файла
Работа с текстовыми файлами — это очень востребованная задача, которая часто возникает при обменах данными со сторонним программным обеспечением. Данная статься будет полезна программисту.
Вариант 1 — без разделения на строки (считать информацию целиком)
&НаКлиенте Процедура ВывестиСодержимое() Файл = Новый ЧтениеТекста("G:\РусланИЛюдмила.txt"); БлокнотТекст = Файл.Прочитать(); Сообщить(БлокнотТекст); Файл.Закрыть(); КонецПроцедуры
Вариант 2 — с построчным разделением (обход строк текстового файла)
&НаКлиенте Процедура ВывестиСодержимое() // процедура обходит все строки файла и выводит сообщение с текстом строки Файл = Новый ЧтениеТекста("G:\РусланИЛюдмила.txt"); ТекущаяСтрока = Файл.ПрочитатьСтроку(); Пока ТекущаяСтрока > Неопределено Цикл Сообщить(ТекущаяСтрока); ТекущаяСтрока = Файл.ПрочитатьСтроку(); КонецЦикла; КонецПроцедуры
Пример изменения текста файла и его записи (сохранения)
&НаКлиенте Процедура СохранитьИзменения() Содержимое = Новый ЗаписьТекста; Содержимое.Открыть("G:\РусланИЛюдмила.txt"); Содержимое.ЗаписатьСтроку("Наше сообщение"); Содержимое.Закрыть(); КонецПроцедуры
1с как прочитать файл
Оглавление (нажмите, чтобы раскрыть)
- Как записать текстовый файл
- Как прочитать текстовый файл
- Как использовать текстовый макет для формирования печатной формы
- Как использовать параметры полей при оформлении текстового макета
- Скачать и выполнить эти примеры на компьютере
/// Как записать текстовый файл в 1с 8.3, 8.2 &НаКлиенте Процедура КакЗаписатьТекстовыйФайл(Команда) КаталогДляЭкспериментов = КаталогДокументов() + "\helpme1s.ru"; СоздатьКаталог(КаталогДляЭкспериментов); ТекстовыйФайл = Новый ТекстовыйДокумент; // Устанавливаем содержимое файла. ТекстовыйФайл.УстановитьТекст(" |Как прекрасен |этот мир!"); // Очищаем содержимое файла. ТекстовыйФайл.Очистить(); // Добавляем первую . ТекстовыйФайл.ДобавитьСтроку("Первая строчка файла"); // . и вторую строчку файла. ТекстовыйФайл.ДобавитьСтроку("Вторая строчка файла"); // Меняем первую строчку на "Привет" ТекстовыйФайл.ЗаменитьСтроку( 1, // номер строки в файле, нумеруется с 1 "Привет" ); // Вставляем новую строчку сразу после первой, // то есть на место второй. ТекстовыйФайл.ВставитьСтроку( 2, // номер строки, на место которой вставляем новую "Владимир" ); // Удаляем вторую строчку ("Владимир") ТекстовыйФайл.УдалитьСтроку(2); // Записываем файл на диск. // Если такой файл уже существует - он будет перезаписан. ТекстовыйФайл.Записать( КаталогДляЭкспериментов + "\out.txt", // путь для сохранения КодировкаТекста.UTF8, // кодировка Символы.ВК + Символы.ПС // разделитель строк ); // Открываем созданный файл в блокноте. ЗапуститьПриложение(КаталогДляЭкспериментов + "\out.txt"); КонецПроцедуры /// Как прочитать текстовый файл в 1с 8.3, 8.2 &НаКлиенте Процедура КакПрочитатьТекстовыйФайл(Команда) ОчиститьСообщения(); КаталогДляЭкспериментов = КаталогДокументов() + "\helpme1s.ru"; СоздатьКаталог(КаталогДляЭкспериментов); ПутьКФайлу = КаталогДляЭкспериментов + "\in.txt"; // Создаем случайный текстовый файл. Служебный.СоздатьПроизвольныйТекстовыйФайл(ПутьКФайлу); ТекстовыйФайл = Новый ТекстовыйДокумент; ТекстовыйФайл.Прочитать( ПутьКФайлу, // Если не указать кодировку напрямую, то она // по возможности определится автоматически. КодировкаТекста.UTF8, // К этом значению будут приведены разделители // строк из файла. Если ничего не указывать - // останутся родные. Символы.ВК + Символы.ПС ); // Выводим весь текст целиком. Сообщить(ТекстовыйФайл.ПолучитьТекст()); // Выводим текст по строкам. Для Индекс = 1 По ТекстовыйФайл.КоличествоСтрок() Цикл Сообщить(ТекстовыйФайл.ПолучитьСтроку(Индекс)); КонецЦикла; КонецПроцедуры /// Как использовать текстовый макет для формирования /// печатной формы в 1с 8.3, 8.2 &НаКлиенте Процедура КакВывестиТекстовыйМакетПростейший(Команда) ОчиститьСообщения(); // Рассмотрим простейший случай. // Нам требуется сделать печатную форму, в которой // в шапке будет выводиться номер и дата документа, // а в табличной части: список и количество, // заказанных товаров. // Вызываем функцию, которая сформирует на сервере // печатную форму и вернёт её обратно на клиент. ПечатнаяФорма = СформироватьПростейшуюПечатнуюФорму(); // Выводим её пользователю, а он уже отправит её на печать. ПечатнаяФорма.Показать("Заказ №1"); КонецПроцедуры &НаСервере Функция СформироватьПростейшуюПечатнуюФорму() // Если никаких особых требований к оформлению такой // формы нет - милое (и главное очень быстрое) дело // сделать её через текстовый макет. // О том, как создать текстовый макет - читайте по адресу // helpme1s.ru/kak-sozdavat-tekstovyj-maket-v-1s // В нашем случае такой макет я уже создал и добавил // в эту обработку под именем "ПростейшийТекстовыйМакет" ПечатнаяФорма = Новый ТекстовыйДокумент; Макет = Обработки.ОбработкаДляИспытаний.ПолучитьМакет( "ПростейшийТекстовыйМакет"); // Получаем область и макета по имени. Шапка = Макет.ПолучитьОбласть("Шапка"); // Заполняем её параметры. Шапка.Параметры.Дата = ТекущаяДата(); Шапка.Параметры.Номер = 1; // Выводим её в документ. ПечатнаяФорма.Вывести(Шапка); // Заголовок табличной части. ТабличнаяЧастьЗаголовок = Макет.ПолучитьОбласть("ТабличнаяЧастьЗаголовок"); ПечатнаяФорма.Вывести(ТабличнаяЧастьЗаголовок); // Обычно в цикле выводятся строки табличной части. ТабличнаяЧастьСтрока = Макет.ПолучитьОбласть("ТабличнаяЧастьСтрока"); // Строка 1 ТабличнаяЧастьСтрока.Параметры.Номенклатура = "Банан"; ТабличнаяЧастьСтрока.Параметры.Количество = 10; ПечатнаяФорма.Вывести(ТабличнаяЧастьСтрока); // Строка 2 ТабличнаяЧастьСтрока.Параметры.Номенклатура = "Помидор"; ТабличнаяЧастьСтрока.Параметры.Количество = 5; ПечатнаяФорма.Вывести(ТабличнаяЧастьСтрока); // Завершаем табличную часть подвалом. ТабличнаяЧастьСтрока = Макет.ПолучитьОбласть("ТабличнаяЧастьПодвал"); ТабличнаяЧастьСтрока.Параметры.ИтогоКоличество = 15; ПечатнаяФорма.Вывести(ТабличнаяЧастьСтрока); // Возвращаем печатную форму обратно на клиент. Возврат ПечатнаяФорма; КонецФункции /// Как использовать параметры полей при оформлении /// текстового макета в 1с 8.3, 8.2 &НаКлиенте Процедура КакВывестиТекстовыйМакетПоСложнее(Команда) ОчиститьСообщения(); // Рассмотрим тот же случай, что и выше. // Нам требуется сделать печатную форму, в которой // в шапке будет выводиться номер и дата документа, // а в табличной части: список и количество, // заказанных товаров. // Вызываем функцию, которая сформирует на сервере // печатную форму и вернёт её обратно на клиент. ПечатнаяФорма = СформироватьПечатнуюФормуПосложнее(); // Выводим её пользователю, а он уже отправит её на печать. ПечатнаяФорма.Показать("Заказ №2"); КонецПроцедуры &НаСервере Функция СформироватьПечатнуюФормуПосложнее() // Если никаких особых требований к оформлению такой // формы нет - милое (и главное очень быстрое) дело // сделать её через текстовый макет. // О том, как создать текстовый макет - читайте по адресу // helpme1s.ru/kak-sozdavat-tekstovyj-maket-v-1s // В нашем случае такой макет я уже создал и добавил // в эту обработку под именем "ТекстовыйМакетПосложнее" // Обратите внимание - этот текстовый макет уже содержит // форматирование отдельных полей. // К примеру, мы задали свой формат для поле Дата; // указали, что если поле Номенклатура не помещается // на одной строке - нужно переносить его на следующие; // задали размер дробной части (2) для поля Количество; // переопределили выравнивание поля Номенклатура и т.д. ПечатнаяФорма = Новый ТекстовыйДокумент; Макет = Обработки.ОбработкаДляИспытаний.ПолучитьМакет( "ТекстовыйМакетПосложнее"); // Получаем область и макета по имени. Шапка = Макет.ПолучитьОбласть("Шапка"); // Заполняем её параметры. Шапка.Параметры.Дата = ТекущаяДата(); Шапка.Параметры.Номер = 2; // Выводим её в документ. ПечатнаяФорма.Вывести(Шапка); // Заголовок табличной части. ТабличнаяЧастьЗаголовок = Макет.ПолучитьОбласть("ТабличнаяЧастьЗаголовок"); ПечатнаяФорма.Вывести(ТабличнаяЧастьЗаголовок); // Обычно в цикле выводятся строки табличной части. ТабличнаяЧастьСтрока = Макет.ПолучитьОбласть("ТабличнаяЧастьСтрока"); // Строка 1 ТабличнаяЧастьСтрока.Параметры.Номенклатура = "Очень очень длинное название товара, много строк."; ТабличнаяЧастьСтрока.Параметры.Количество = 100.234234; ПечатнаяФорма.Вывести(ТабличнаяЧастьСтрока); // Строка 2 ТабличнаяЧастьСтрока.Параметры.Номенклатура = "Короткое название товара, одна строка."; ТабличнаяЧастьСтрока.Параметры.Количество = 30.56757; ПечатнаяФорма.Вывести(ТабличнаяЧастьСтрока); // Завершаем табличную часть подвалом. ТабличнаяЧастьСтрока = Макет.ПолучитьОбласть("ТабличнаяЧастьПодвал"); ТабличнаяЧастьСтрока.Параметры.ИтогоКоличество = 130.801804; ПечатнаяФорма.Вывести(ТабличнаяЧастьСтрока); // Возвращаем печатную форму обратно на клиент. Возврат ПечатнаяФорма; КонецФункции /// Скачать и выполнить эти примеры на компьютере
Работа с текстовым документом в языке 1С 8.3, 8.2 (в примерах)
С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).
1с как прочитать файл
построчное чтение текстового файла в 8.1
Есть файл в котором много строк, но мне нужны только некоторые, как я могу это реализовать, с помощью чего, подскажите плс.
Текст.ПолучитьСтроку()
по какому-то шаблону?
или просто по номеру?
По названию продан, там есть данный статус «Продан», и после него еще пару строк.
А если нужно по символам?
просто можно текст в регулярку и выбрать нужные строки
это как «в регулярку»
использовать регулярные выражения .
а на примере можно, просто я не сталкивался с регулярными выражениями.
ты образец текста дай и что тебе нужно выбирать
Путь = ИмяФайла;
Текст = Новый ЧтениеТекста(Путь);
Стр = Текст.ПрочитатьСтроку();
Пока Стр <> Неопределено Цикл
Стр = Текст.ПрочитатьСтроку();
Если НайтиЗ(Стр,»Продан») Тогда
Сообщить(Стр);
КонецЕсли;
КонецЦикла;
а этот вариант у тебя работает?
(10) Первую строку алгоритм пропустит
Если НайтиЗ(Стр,»Продан») Тогда
это я забыл закоментить, сорри
(11) так что там?
(14) этот вариант у тебя работает?
(15/ Вас седня явно игнорируют((()
(16)=) У меня такое чувство. =(
(17) я говорил что Вы игнорируете (15) который наверное хочет Вам помочь, да?
а откуда такой извращенный вариант чтения теста? почему бы не проще:
ТекстовыйДокумент = Новый ТекстовыйДокумент;
Попытка
ТекстовыйДокумент.Прочитать(ИмяФайла);
Исключение
Сообщить(«Ошибка открытия файла!»);
Возврат;
КонецПопытки;
Для ТекСтрока = 1 По ТекстовыйДокумент.КоличествоСтрок() Цикл
//.
КонецЦикла;
хаха
Путь = ИмяФайла;
Текст = Новый ТекстовыйДокумент;
Текст.Прочитать(Путь);
Сообщить(Текст.КоличествоСтрок());
Для НомерСтроки = 1 По Текст.КоличествоСтрок() Цикл
Стр= Текст.ПолучитьСтроку(НомерСтроки);
Если Не ПустаяСтрока(Найти(Стр,»Продан»)) Тогда
Сообщить(Стр);
КонецЕсли;
КонецЦикла;
*текста, в смысле 🙂
вот только он мне все выдает а не ту строчку которую хочу
(20) Скорость и размер памяти.
Попробуй прочитать текстовый документ в несколько сотен мегабайт в текстовый документ и посмотри — что получится.
Чтение/запись текста работает по скорости сравнимо с fso
Сообщить(НомерСтроки), не?
(25)нет, он выдает с 1 до 1283, количество строк в тексте
Текст = Новый ЧтениеТекста(ИмяФайла);
Стр = Текст.ПрочитатьСтроку();
Пока Стр <> Неопределено Цикл
Если Найти(Стр,»Продан») > 0 Тогда
Сообщить(Стр);
КонецЕсли;
Стр = Текст.ПрочитатьСтроку();
КонецЦикла;
Пасиб, а вот еще такой интерес, а если я хочу чтоб не по одной строчки выходило а по две или по три, как мне это сделать?
(28) следующие две или три после строки с «продан»?
Текст = Новый ЧтениеТекста(ИмяФайла);
Стр = Текст.ПрочитатьСтроку();
Пока Стр <> Неопределено Цикл
Если Найти(Стр,»Продан») > 0 Тогда
Сообщить(Стр);
Стр = Текст.ПрочитатьСтроку();
Если Стр <> Неопределено Тогда
Сообщить(Стр);
Иначе
Прервать;
КонецЕсли;
Стр = Текст.ПрочитатьСтроку();
Если Стр <> Неопределено Тогда
Сообщить(Стр);
Иначе
Прервать;
КонецЕсли;
КонецЕсли;
Стр = Текст.ПрочитатьСтроку();
КонецЦикла;
