ЗаписьТекста.Открыть

Методы · Open

Открывает текстовый файл или поток для записи.

Синтаксис

Открыть(<ИмяФайла>, <Кодировка>, <РазделительСтрок>, <Дописывать>, <КонвертируемыйРазделительСтрок>)
Открыть(<Поток>, <Кодировка>, <РазделительСтрок>, <КонвертируемыйРазделительСтрок>, <ЗаписатьBOM>)

Примеры платформы

Текст.Открыть("d:\dos.txt", КодировкаТекста.OEM);
Полное описание, параметры и ограничения

ЗаписьТекста.Открыть (TextWriter.Open)

ЗаписьТекста (TextWriter)

Открыть (Open)

Доступен, начиная с версии 8.0.

Вариант синтаксиса: Открыть файл

Синтаксис:
Открыть(<ИмяФайла>, <Кодировка>, <РазделительСтрок>, <Дописывать>, <КонвертируемыйРазделительСтрок>)
Параметры:

<ИмяФайла> (обязательный)
Тип: Строка.
Имя записываемого файла.

<Кодировка> (необязательный)
Тип: КодировкаТекста, Строка.
Тип кодировки текста. Тип кодировки может быть задан как в виде значения перечисления КодировкаТекста, так и в виде строки с указанием названия кодировки.
Поддерживаемые названия кодировок:
UTF-8

UTF-16

UTF-16BE

UTF-16LE

ISO-8859-1

US-ASCII

gb18030

iso-8859-2

iso-8859-3

iso-8859-4

iso-8859-5

iso-8859-6

iso-8859-7

iso-8859-8

iso-8859-9

iso-8859-13

iso-8859-15

Shift_JIS

EUC-JP

Big5

Big5-HKSCS

GBK

GB2312

GB_2312-80

EUC-KR

KSC_5601

windows-949

windows-874

cp866

KOI8-R

KOI8-U

windows-1250

windows-1251

windows-1252

windows-1253

windows-1254

windows-1255

windows-1256

windows-1257

windows-1258

macintosh

x-mac-cyrillic

ISO-2022-JP

ISO-2022-KR

ISO-2022-CN

ISO-2022-CN-EXT

HZ-GB-2312

Значение по умолчанию: UTF8.

<РазделительСтрок> (необязательный)
Тип: Строка.
Разделяет строки в записываемом файле.
Значение по умолчанию: ПС.

<Дописывать> (необязательный)
Тип: Булево.
Если параметр принимает значение Истина, то содержимое файла сохраняется, если файл уже существует. Если файла не существует, создается новый с именем, указанным в первом параметре метода.
Значение по умолчанию: Ложь.

<КонвертируемыйРазделительСтрок> (необязательный)
Тип: Строка.
Указывает разделитель строк в файле при конвертации в стандартный перевод строк ПС.
Значение по умолчанию: ВК + ПС.
Описание варианта метода:
Открывает текстовый файл для записи в монопольном режиме.
Вариант синтаксиса: Установить поток

Синтаксис:
Открыть(<Поток>, <Кодировка>, <РазделительСтрок>, <КонвертируемыйРазделительСтрок>, <ЗаписатьBOM>)
Параметры:

<Поток> (обязательный)
Тип: Поток, ПотокВПамяти, ФайловыйПоток.
Поток для записи.

<Кодировка> (необязательный)
Тип: КодировкаТекста, Строка.
Тип кодировки текста. Тип кодировки может быть задан как в виде значения перечисления КодировкаТекста, так и в виде строки с указанием названия кодировки.
Поддерживаемые названия кодировок:
UTF-8

UTF-16

UTF-16BE

UTF-16LE

ISO-8859-1

US-ASCII

gb18030

iso-8859-2

iso-8859-3

iso-8859-4

iso-8859-5

iso-8859-6

iso-8859-7

iso-8859-8

iso-8859-9

iso-8859-13

iso-8859-15

Shift_JIS

EUC-JP

Big5

Big5-HKSCS

GBK

GB2312

GB_2312-80

EUC-KR

KSC_5601

windows-949

windows-874

cp866

KOI8-R

KOI8-U

windows-1250

windows-1251

windows-1252

windows-1253

windows-1254

windows-1255

windows-1256

windows-1257

windows-1258

macintosh

x-mac-cyrillic

ISO-2022-JP

ISO-2022-KR

ISO-2022-CN

ISO-2022-CN-EXT

HZ-GB-2312

Значение по умолчанию: UTF8.

<РазделительСтрок> (необязательный)
Тип: Строка.
Разделяет строки в записываемом потоке.
Значение по умолчанию: ПС.

<КонвертируемыйРазделительСтрок> (необязательный)
Тип: Строка.
Указывает разделитель строк в потоке при конвертации в стандартный перевод строк ПС.
Значение по умолчанию: ВК + ПС.

<ЗаписатьBOM> (необязательный)
Тип: Булево.
Определяет, будет ли добавлена метка порядка байт (BOM) в начало потока.
Значение по умолчанию: Ложь.
Описание варианта метода:
Устанавливает поток для записи.
Описание:

Открывает текстовый файл или поток для записи.

Доступность:

Тонкий клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.

Пример:

Текст.Открыть("d:\dos.txt", КодировкаТекста.OEM);

Использование в версии:

Доступен, начиная с версии 8.0.

Методическая информация

Практические примеры

Создать текстовый журнал, дописать строку и прочитать его

Полный цикл работы с отдельным временным файлом: запись, закрытие, дописывание и построчное чтение, включая пустую строку.

Где и как запускать

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

Подготовка

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

  2. Пример создаёт только уникальные учебные файлы через ПолучитьИмяВременногоФайла. Не подставляйте пути к рабочим документам.

  3. Все текстовые файлы читаются с явно указанной кодировкой UTF-8. Пустая строка не означает конец файла.


ИмяФайла = ПолучитьИмяВременногоФайла("txt");
Запись = Неопределено;
Чтение = Неопределено;
Попытка
    Запись = Новый ЗаписьТекста(ИмяФайла, КодировкаТекста.UTF8);
    Запись.ЗаписатьСтроку("Начало учебного обмена");
    Запись.ЗаписатьСтроку("");
    Запись.Записать("Товар A-01: 3");
    Запись.Закрыть();
    Запись = Неопределено;
    Запись = Новый ЗаписьТекста;
    Запись.Открыть(ИмяФайла, КодировкаТекста.UTF8, Символы.ПС, Истина);
    Запись.ЗаписатьСтроку("");
    Запись.ЗаписатьСтроку("Обмен завершён");
    Запись.Закрыть();
    Запись = Неопределено;
    Чтение = Новый ЧтениеТекста(ИмяФайла, КодировкаТекста.UTF8);
    Номер = 0;
    СтрокаЖурнала = Чтение.ПрочитатьСтроку();
    Пока СтрокаЖурнала <> Неопределено Цикл
        Номер = Номер + 1;
        Сообщить(СтрШаблон("%1: [%2]", Номер, СтрокаЖурнала));
        СтрокаЖурнала = Чтение.ПрочитатьСтроку();
    КонецЦикла;
    Чтение.Закрыть();
    Чтение = Неопределено;
    УдалитьФайлы(ИмяФайла);
Исключение
    Если Запись <> Неопределено Тогда
        Запись.Закрыть();
    КонецЕсли;
    Если Чтение <> Неопределено Тогда
        Чтение.Закрыть();
    КонецЕсли;
    УчебныйФайл = Новый Файл(ИмяФайла);
    Если УчебныйФайл.Существует() Тогда
        УдалитьФайлы(ИмяФайла);
    КонецЕсли;
    ВызватьИсключение;
КонецПопытки;

Разбор по шагам

  1. ЗаписатьСтроку добавляет перевод строки; Записать оставляет курсор сразу после текста товара.

  2. Закрываем первую запись. Открыть с четвёртым параметром Истина сохраняет прежнее содержимое и дописывает в конец.

  3. Перед строкой завершения добавляем перевод строки, чтобы она не склеилась со строкой товара.

  4. Читаем до Неопределено: пустую строку выводим как [], а не считаем концом файла. Закрываем чтение и удаляем только свой файл.

Как проверить результат

  1. Первые четыре строки: [Начало учебного обмена], [], [Товар A-01: 3], [Обмен завершён]. Финальный перевод строки может давать дополнительную пустую строку; проверяйте поведение своей платформы.

  2. Замените Истина на Ложь в Открыть: исходные строки будут затёрты. Делайте это только в данном временном файле.

  3. Уберите ЗаписатьСтроку("") перед завершением: тексты товара и завершения склеятся в одну строку.

Ожидаемый результат

Учебный журнал прочитан по строкам, созданный временный файл удалён.

На что обратить внимание

  1. Не держите файл открытым для записи, когда пытаетесь открыть его для чтения.

  2. Это журнал текста, а не универсальный CSV-парсер: поля с кавычками и переводами строк требуют отдельного формата.

  3. В реальном приложении ошибка очистки не должна скрывать исходную ошибку; здесь демонстрируется простой учебный вариант.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.