Файл.ПолучитьТолькоЧтениеАсинх

Методы · GetReadOnlyAsync

Асинхронная функция. Получает значение атрибута файла "Только чтение" ("Read only").

Синтаксис

ПолучитьТолькоЧтениеАсинх()
Полное описание, параметры и ограничения

Файл.ПолучитьТолькоЧтениеАсинх (File.GetReadOnlyAsync)

Файл (File)

ПолучитьТолькоЧтениеАсинх (GetReadOnlyAsync)

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

Синтаксис:
ПолучитьТолькоЧтениеАсинх()
Возвращаемое значение:
Тип: Обещание.
Результат выполнения обещания - Истина, если у файла установлен атрибут "Только чтение", в противном случае - Ложь.
Описание:

Асинхронная функция. Получает значение атрибута файла "Только чтение" ("Read only").

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

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

Примечание:
Применим только к файлам или каталогам, которые реально существуют.
Для работы метода на веб-клиенте необходимо предварительно подключить расширение работы с файлами.
См. также:
Файл, метод НачатьПолучениеТолькоЧтения
Файл, метод ПолучитьТолькоЧтение

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

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

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

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

Включить и снять атрибут readonly своего файла

Атрибут ТолькоЧтение не равен ACL и не меняет права пользователя в базе. Поток записи уже закрыт; воздействуем только на собственный новый файл.

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

Полный модуль пустой управляемой формы учебной EPF; клиент Windows с разрешённым доступом к своим временным файлам.

Подготовка

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

  2. В свойстве команды Действие выберите процедуру УчебныйПример. Вставьте полный приведённый модуль формы.

  3. Откройте EPF в тонком или толстом клиенте Windows и нажмите кнопку. Не переносите Ждать и Асинх в серверный общий модуль.

  4. Файл создаётся на компьютере клиента Windows во временном каталоге. Веб-клиент и сервер для данного модуля не используйте.

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

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

  7. Файл содержит только собственную ASCII-строку ABC123 (6 байтов без BOM). Поток записи закрывается перед чтением/изменением атрибутов.

  8. Все файлы примера создаются заново. Скрытость/readonly при очистке снимаются только у собственного файла после закрытия, затем точное имя удаляется.

  9. Не заменяйте временное имя путём конфигурации, базы, документа или загруженного вами архива. Атрибуты и время меняются только у учебного файла.

&НаКлиенте
Асинх Процедура УчебныйПример(Команда)
    ИмяФайла = ПолучитьИмяВременногоФайла("bin");
    УчебныйФайл = Новый Файл(ИмяФайла);
    Если УчебныйФайл.Существует() Тогда
        ВызватьИсключение "Временное имя уже занято: чужой файл не открываем";
    КонецЕсли;
    Поток = Неопределено;
    Вид = Неопределено;
    Копия = Неопределено;
    СозданСвойФайл = Ложь;
    Попытка
        Поток = Новый ФайловыйПоток(ИмяФайла, РежимОткрытияФайла.СоздатьНовый, ДоступКФайлу.ЧтениеИЗапись);
        СозданСвойФайл = Истина;
        Буфер = ПолучитьБуферДвоичныхДанныхИзСтроки("ABC123", КодировкаТекста.UTF8, Ложь);
        Поток.Записать(Буфер, 0, Буфер.Размер);
        Поток.Закрыть();
        Поток = Неопределено;
        Ждать УчебныйФайл.УстановитьТолькоЧтениеАсинх(Истина);
        ТолькоЧтение = Ждать УчебныйФайл.ПолучитьТолькоЧтениеАсинх();
        Сообщить(ТолькоЧтение);
        Ждать УчебныйФайл.УстановитьТолькоЧтениеАсинх(Ложь);
        ТолькоЧтение = Ждать УчебныйФайл.ПолучитьТолькоЧтениеАсинх();
        Сообщить(Не ТолькоЧтение);
        Размер = Ждать УчебныйФайл.РазмерАсинх();
        Сообщить(Размер = 6);
    Исключение
        Если Вид <> Неопределено Тогда
            Вид.Закрыть();
        КонецЕсли;
        Если Копия <> Неопределено Тогда
            Копия.Закрыть();
        КонецЕсли;
        Если Поток <> Неопределено Тогда
            Поток.Закрыть();
        КонецЕсли;
        Если СозданСвойФайл И УчебныйФайл.Существует() Тогда
            УчебныйФайл.УстановитьТолькоЧтение(Ложь);
            УчебныйФайл.УстановитьНевидимость(Ложь);
        КонецЕсли;
        Если СозданСвойФайл И УчебныйФайл.Существует() Тогда
            УдалитьФайлы(ИмяФайла);
        КонецЕсли;
        ВызватьИсключение;
    КонецПопытки;
    Если Вид <> Неопределено Тогда
        Вид.Закрыть();
    КонецЕсли;
    Если Копия <> Неопределено Тогда
        Копия.Закрыть();
    КонецЕсли;
    Если Поток <> Неопределено Тогда
        Поток.Закрыть();
    КонецЕсли;
    Если СозданСвойФайл И УчебныйФайл.Существует() Тогда
        УчебныйФайл.УстановитьТолькоЧтение(Ложь);
        УчебныйФайл.УстановитьНевидимость(Ложь);
    КонецЕсли;
    Если СозданСвойФайл Тогда
        УдалитьФайлы(ИмяФайла);
    КонецЕсли;
    Сообщить(Не УчебныйФайл.Существует());
КонецПроцедуры

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

  1. Поток записи закрывается до установки файлового атрибута.

  2. Включаем readonly, ждём завершения и проверяем его получающим методом.

  3. Снимаем атрибут и вновь проверяем False. Это необходимо перед удалением собственного файла.

  4. Права ОС/базы не переключаем и не пробуем записать рабочий документ.

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

  1. Три сравнения Истина: readonly включён, затем снят, размер 6.

  2. Очистка также снимает readonly на пути исключения; запись в конфигурацию отсутствует.

  3. Последнее сравнение Истина: собственный временный файл удалён после снятия readonly/скрытости.

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

Разобраны асинхронные методы файлового readonly-атрибута.

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

  1. ДоступнаЗапись потока — другой признак API; он не является данным методом карточки Файл.

  2. Нельзя массово снимать readonly у чужого каталога ради удаления одного файла.

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

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

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

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

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