20. 2 Особенности работы с файлами в асинхронном режиме и веб-клиенте
Рассмотрим пример работы с файлами в асинхронной технике: удаление всех файлов в каталоге временных файлов. Для синхронной техники такое действие будет выглядеть следующим образом:
&НаКлиенте
Процедура Удалить(Команда)
УдалитьФайлы(КаталогВременныхФайлов(), ПолучитьМаскуВсеФайлыКлиента());
Сообщить(“Удаление успешно завершено”);
КонецПроцедуры
Асинхронная техника будет выглядеть по-другому:
&НаКлиенте
Процедура Удалить(Команда)
ОбратныйВызов = Новый ОписаниеОповещения(“ПолучитьКаталогВременныхФайловЗавершение”, ЭтотОбъект, , “УдалитьОшибка”, ЭтотОбъект);
НачатьПолучениеКаталогаВременныхФайлов(ОбратныйВызов);
КонецПроцедуры
&НаКлиенте
Процедура ПолучитьКаталогВременныхФайловЗавершение(ИмяКаталогаВременныхФайлов, ДополнительныеПараметры) Экспорт
ОбратныйВызов = Новый ОписаниеОповещения(“УдалитьЗавершение”, ЭтотОбъект, , “ФайловаяОшибка”, ЭтотОбъект);
НачатьУдалениеФайлов(ОбратныйВызов, ИмяКаталогаВременныхФайлов, ПолучитьМаскуВсеФайлыКлиента());
КонецПроцедуры
&НаКлиенте
Процедура УдалитьЗавершение(ДополнительныеПараметры) Экспорт
Сообщить(“Удаление успешно завершено”);
КонецПроцедуры
&НаКлиенте
Процедура ФайловаяОшибка (ИнформацияОбОшибке, СтандартнаяОбработка, ДополнительныеПараметры) Экспорт
Сообщить(“При выполнении файловой операции обнаружена ошибка: ” + КраткоеПредставлениеОшибки(ИнформацияОбОшибке));
КонецПроцедуры
Во-первых, следует обратить внимание, что практически все файловые операции стали асинхронными. Даже такие простые действия, как получение каталога временных файлов. И необходимость получения такого каталога приводит к первому асинхронному вызову. Затем происходит вызов собственно удаления всех файлов. И обработка завершения удаления требует второй обработчик, в котором должны располагаться действия, которые должны происходить после удаления всех файлов в каталоге временных файлов. В данном примере это выдача сообщения о завершении операции.
Если при выполнении файловых операций произойдет ошибка – управление будет передано обработчику ФайловыеОшибка(). В нем можно корректно обработать сложившуюся ситуацию.
Работа с файлами в веб-клиенте
Работа с файлами в веб-клиенте имеет ряд особенностей:
1. Без установки расширений, в любом веб-браузере, доступны только методы ПолучитьФайл() и НачатьПомещениеФайла(). Метод ПоместитьФайл() не поддерживается при работе с веб-браузером Google Chrome и в том случае, если для конфигурации запрещено использование модальных методов (свойство конфигурации Режим использования модальности, см. здесь).
2. При установке расширения работы с файлами во всех веб-браузерах, кроме Google Chrome, доступы как синхронные, так и асинхронные методы работы с файлами (синхронность или асинхронность зависит от свойства конфигурации Режим использования модальности),
3. Для веб-браузера Google Chrome доступно только асинхронное расширение работы с файлами. Синхронная работа не поддерживается.
4. Расширение работы с файлами не поддерживает работу по протоколу HTTPS с использованием клиентского сертификата.
Примечание 1. Для корректной работы расширения работы с файлами в веб-браузере Microsoft Internet Explorer рекомендуется использование
библиотеки Microsoft Core XML Services (MSXML) версий 4.0 или 6.0.
Примечание 2. Расширение работы с файлами для веб-браузера Microsoft Internet Explorer устанавливается в каталог %APPDATA%\1C\1СEWebExt\FileSystemExtIE