Скопировать свой временный файл и проверить его атрибуты

Учебные задачи

Создаём тестовый текст, копируем, переименовываем копию и меняем атрибут Только чтение только у неё.

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

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

Подготовка

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

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

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

  4. Учебный пример рассчитан на файловую систему Windows; атрибуты и точность времени на других ОС могут отличаться.


ИсходныйПуть = ПолучитьИмяВременногоФайла("txt");
ПутьКопии = ПолучитьИмяВременногоФайла("txt");
НовыйПуть = ПолучитьИмяВременногоФайла("txt");
СозданныеПути = Новый Массив;
СозданныеПути.Добавить(ИсходныйПуть);
СозданныеПути.Добавить(ПутьКопии);
СозданныеПути.Добавить(НовыйПуть);
Попытка
    Документ = Новый ТекстовыйДокумент;
    Документ.УстановитьТекст("Только учебные данные");
    Документ.Записать(ИсходныйПуть, КодировкаТекста.UTF8);
    КопироватьФайл(ИсходныйПуть, ПутьКопии);
    ПереместитьФайл(ПутьКопии, НовыйПуть);
    Копия = Новый Файл(НовыйПуть);
    Сообщить(Копия.Существует());
    Сообщить(Копия.ЭтоФайл());
    Сообщить(Копия.ЭтоКаталог());
    Сообщить(Копия.ПолноеИмя);
    Сообщить(Копия.Путь);
    Сообщить(Копия.Размер());
    Копия.УстановитьВремяИзменения(Дата(2026, 9, 15, 12, 0, 0));
    Сообщить(Формат(Копия.ПолучитьВремяИзменения(), "ДФ=yyyy-MM-dd HH:mm:ss"));
    Копия.УстановитьТолькоЧтение(Истина);
    Сообщить(Копия.ПолучитьТолькоЧтение());
    Копия.УстановитьТолькоЧтение(Ложь);
    Прочитанный = Новый ТекстовыйДокумент;
    Прочитанный.Прочитать(НовыйПуть, КодировкаТекста.UTF8);
    Сообщить(Прочитанный.ПолучитьТекст());
Исключение
    Для Каждого Путь Из СозданныеПути Цикл
        УчебныйФайл = Новый Файл(Путь);
        Если УчебныйФайл.Существует() Тогда
            УчебныйФайл.УстановитьТолькоЧтение(Ложь);
            УдалитьФайлы(Путь);
        КонецЕсли;
    КонецЦикла;
    ВызватьИсключение;
КонецПопытки;
Для Каждого Путь Из СозданныеПути Цикл
    УчебныйФайл = Новый Файл(Путь);
    Если УчебныйФайл.Существует() Тогда
        УчебныйФайл.УстановитьТолькоЧтение(Ложь);
        УдалитьФайлы(Путь);
    КонецЕсли;
КонецЦикла;

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

  1. Получаем три уникальных пути: источник, промежуточная копия и переименованный результат.

  2. КопироватьФайл сохраняет источник; ПереместитьФайл переносит именно копию, поэтому промежуточного файла больше нет.

  3. Проверяем тип пути и размер, задаём фиксированное время изменения и включаем Только чтение.

  4. Снимаем атрибут перед очисткой; Прочитать проверяет, что содержимое копии сохранилось. Удаляем только три собственных пути.

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

  1. Существует и ЭтоФайл — Истина, ЭтоКаталог — Ложь; текст копии Только учебные данные.

  2. Время изменения: 2026-09-15 12:00:00 с учётом точности вашей файловой системы; Только чтение после установки — Истина.

  3. Промежуточная копия отсутствует после перемещения. После завершения все три учебных пути отсутствуют.

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

Копия создана, переименована, проверена и удалена вместе с собственным источником.

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

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

  2. Копирование или перемещение может перезаписать существующий файл; уникальные пути здесь выбраны именно для предотвращения такой ситуации.

  3. Это не резервное копирование рабочих данных и не гарантия атомарности между дисками.

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

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

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

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

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