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