Асинхронная функция. Получает значение атрибута файла "Только чтение" ("Read only").
Синтаксис
ПолучитьТолькоЧтениеАсинх()Полное описание, параметры и ограничения
Файл.ПолучитьТолькоЧтениеАсинх (File.GetReadOnlyAsync)
Файл (File)
ПолучитьТолькоЧтениеАсинх (GetReadOnlyAsync)
Доступен, начиная с версии 8.3.18.
Синтаксис:
ПолучитьТолькоЧтениеАсинх()
Возвращаемое значение:
Тип: Обещание.
Результат выполнения обещания - Истина, если у файла установлен атрибут "Только чтение", в противном случае - Ложь.
Описание:
Асинхронная функция. Получает значение атрибута файла "Только чтение" ("Read only").
Доступность:
Тонкий клиент, веб-клиент, мобильный клиент, толстый клиент, мобильное приложение (клиент).
Примечание:
Применим только к файлам или каталогам, которые реально существуют.
Для работы метода на веб-клиенте необходимо предварительно подключить расширение работы с файлами.
См. также:
Файл, метод НачатьПолучениеТолькоЧтения
Файл, метод ПолучитьТолькоЧтение
Использование в версии:
Доступен, начиная с версии 8.3.18.
Методическая информация
Практические примеры
Включить и снять атрибут readonly своего файла
Атрибут ТолькоЧтение не равен ACL и не меняет права пользователя в базе. Поток записи уже закрыт; воздействуем только на собственный новый файл.
Где и как запускать
Полный модуль пустой управляемой формы учебной EPF; клиент Windows с разрешённым доступом к своим временным файлам.
Подготовка
Создайте учебную внешнюю обработку с пустой управляемой основной формой. Создайте команду УчебныйПример и кнопку этой команды.
В свойстве команды Действие выберите процедуру УчебныйПример. Вставьте полный приведённый модуль формы.
Откройте EPF в тонком или толстом клиенте Windows и нажмите кнопку. Не переносите Ждать и Асинх в серверный общий модуль.
Файл создаётся на компьютере клиента Windows во временном каталоге. Веб-клиент и сервер для данного модуля не используйте.
Требуется разрешённый в учебной базе доступ к локальной файловой системе. Не отключайте профиль безопасности рабочей базы ради запуска.
Создаётся только собственный временный файл с режимом СоздатьНовый. После ожидания операций ресурсы закрываются, точное собственное имя удаляется.
Файл содержит только собственную ASCII-строку ABC123 (6 байтов без BOM). Поток записи закрывается перед чтением/изменением атрибутов.
Все файлы примера создаются заново. Скрытость/readonly при очистке снимаются только у собственного файла после закрытия, затем точное имя удаляется.
Не заменяйте временное имя путём конфигурации, базы, документа или загруженного вами архива. Атрибуты и время меняются только у учебного файла.
&НаКлиенте
Асинх Процедура УчебныйПример(Команда)
ИмяФайла = ПолучитьИмяВременногоФайла("bin");
УчебныйФайл = Новый Файл(ИмяФайла);
Если УчебныйФайл.Существует() Тогда
ВызватьИсключение "Временное имя уже занято: чужой файл не открываем";
КонецЕсли;
Поток = Неопределено;
Вид = Неопределено;
Копия = Неопределено;
СозданСвойФайл = Ложь;
Попытка
Поток = Новый ФайловыйПоток(ИмяФайла, РежимОткрытияФайла.СоздатьНовый, ДоступКФайлу.ЧтениеИЗапись);
СозданСвойФайл = Истина;
Буфер = ПолучитьБуферДвоичныхДанныхИзСтроки("ABC123", КодировкаТекста.UTF8, Ложь);
Поток.Записать(Буфер, 0, Буфер.Размер);
Поток.Закрыть();
Поток = Неопределено;
Ждать УчебныйФайл.УстановитьТолькоЧтениеАсинх(Истина);
ТолькоЧтение = Ждать УчебныйФайл.ПолучитьТолькоЧтениеАсинх();
Сообщить(ТолькоЧтение);
Ждать УчебныйФайл.УстановитьТолькоЧтениеАсинх(Ложь);
ТолькоЧтение = Ждать УчебныйФайл.ПолучитьТолькоЧтениеАсинх();
Сообщить(Не ТолькоЧтение);
Размер = Ждать УчебныйФайл.РазмерАсинх();
Сообщить(Размер = 6);
Исключение
Если Вид <> Неопределено Тогда
Вид.Закрыть();
КонецЕсли;
Если Копия <> Неопределено Тогда
Копия.Закрыть();
КонецЕсли;
Если Поток <> Неопределено Тогда
Поток.Закрыть();
КонецЕсли;
Если СозданСвойФайл И УчебныйФайл.Существует() Тогда
УчебныйФайл.УстановитьТолькоЧтение(Ложь);
УчебныйФайл.УстановитьНевидимость(Ложь);
КонецЕсли;
Если СозданСвойФайл И УчебныйФайл.Существует() Тогда
УдалитьФайлы(ИмяФайла);
КонецЕсли;
ВызватьИсключение;
КонецПопытки;
Если Вид <> Неопределено Тогда
Вид.Закрыть();
КонецЕсли;
Если Копия <> Неопределено Тогда
Копия.Закрыть();
КонецЕсли;
Если Поток <> Неопределено Тогда
Поток.Закрыть();
КонецЕсли;
Если СозданСвойФайл И УчебныйФайл.Существует() Тогда
УчебныйФайл.УстановитьТолькоЧтение(Ложь);
УчебныйФайл.УстановитьНевидимость(Ложь);
КонецЕсли;
Если СозданСвойФайл Тогда
УдалитьФайлы(ИмяФайла);
КонецЕсли;
Сообщить(Не УчебныйФайл.Существует());
КонецПроцедурыРазбор по шагам
Поток записи закрывается до установки файлового атрибута.
Включаем readonly, ждём завершения и проверяем его получающим методом.
Снимаем атрибут и вновь проверяем False. Это необходимо перед удалением собственного файла.
Права ОС/базы не переключаем и не пробуем записать рабочий документ.
Как проверить результат
Три сравнения Истина: readonly включён, затем снят, размер 6.
Очистка также снимает readonly на пути исключения; запись в конфигурацию отсутствует.
Последнее сравнение Истина: собственный временный файл удалён после снятия readonly/скрытости.
Ожидаемый результат
Разобраны асинхронные методы файлового readonly-атрибута.
На что обратить внимание
ДоступнаЗапись потока — другой признак API; он не является данным методом карточки Файл.
Нельзя массово снимать readonly у чужого каталога ради удаления одного файла.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.