Работа в веб-клиенте имеет некоторые особенности. Эти отличия вызваны особенностями реализации веб-браузеров (отсутствие поддержки модальных окон, синхронных вызовов, особенности модели безопасности). Для работы с файлами и криптографией в веб-клиенте требуется наличие специальных расширений, установленных в используемом веб-браузере. При использовании веб-браузера Google Chrome, перед установкой расширений платформы, необходимо выполнить установку расширения веб-браузера Расширение для работы с 1С:Предприятием, которое устанавливается из Интернет-магазина Chrome (при необходимости переход на страницу установки будет выполнен автоматически). Без установки этого расширения будет невозможно использование расширений платформы.
Решение проблемы:
- Установить расширение ‑ с помощью метода НачатьУстановкуРасширенияРаботыСФайлами() или УстановитьРасширениеРаботыСФайлами(). Это интерактивное действие, которое необходимо выполнить один раз для каждого пользователя локального компьютера, использующего расширение.
- Подключить расширение ‑ с помощью метода НачатьПодключениеРасширенияРаботыСФайлами() или ПодключитьРасширениеРаботыСФайлами()
Если расширение работы с файлами не установлено при работе с файлами в веб-клиенте, будет выдано исключение с сообщением типа
Расширение по работе с файлами не подключено
В тонком клиенте , а также в режиме запуска “Мобильное приложение (клиент)” расширение всегда подключено
Программный код проверки и установки расширения работы с файлами зависит от свойства конфигурации РежимИспользованияМодальности .
Если РежимИспользованияМодальности установлено Использовать , то используется программный код :
&НаКлиенте Процедура СинхронныйВызовПодключения(Команда) #Если ВебКлиент Тогда Результат = ПодключитьРасширениеРаботыСФайлами(); Результат = Ложь; //если подключить не удалось - требуется установить его (в первый раз) Если не Результат Тогда //устанавливаем УстановитьРасширениеРаботыСФайлами(); //если не удалось установить - то повторный вызов подключения будет неудачный Если не ПодключитьРасширениеРаботыСФайлами() Тогда //сообщаем об ошибке и прерываем работу программы ВызватьИсключение "Не удалось подключить расширение работы с файлами!.Ваш браузер не поддерживает работу с файлами."; КонецЕсли; КонецЕсли; #КонецЕсли Состояние("Идет чтение файла. Ждите…."); ЗагрузитьДанныеИзфайла(); // Пользовательская служенная процедура
КонецПроцедуры
Обратите внимание, что проверка при запуске через браузер ( режим веб-клиента) потому, что в других режимах запуска функция ПодключитьРасширениеРаботыСФайлами() возвращает значение истина
Если РежимИспользованияМодальности установлено в Не Использовать или Использовать с предупреждениями , следует использовать асинхронные асинхронные методы НачатьПодключениеРасширенияРаботыСФайлами и НачатьУстановкуРасширенияРаботыСФайлами.
В этом случае другой код. Пример :
&НаКлиенте Процедура АСинхронныйВызовПодключения(Команда) Подключить(Истина); КонецПроцедуры &НаКлиенте Процедура Подключить(УстановитьЕслиНеПодключено) Экспорт НачатьПодключениеРасширенияРаботыСФайлами( Новый ОписаниеОповещения( "ПослеПодключения", ЭтотОбъект, УстановитьЕслиНеПодключено)); КонецПроцедуры &НаКлиенте Процедура ПослеПодключения(Подключено,УстановитьЕслиНеПодключено) Экспорт Если Подключено Тогда Состояние("Идет чтение файла. Ждите…."); ЗагрузитьДанныеИзфайла(); // Пользовательская служенная процедура ИначеЕсли УстановитьЕслиНеПодключено Тогда НачатьУстановкуРасширенияРаботыСФайлами( Новый ОписаниеОповещения( "Подключить",ЭтотОбъект, Ложь)); Иначе ВызватьИсключение "Не удалось подключить расширение работы с файлами!"; КонецЕсли; КонецПроцедуры
Обратите внимание, что в этом программном коде при асинхронных вызовах не используется инструкция препроцессора:
#Если ВебКлиент Тогда #КонецЕсли
Отметим, что начиная с версии 8.3.18 доступна асинхронная функция УстановитьРасширениеРаботыСФайламиАсинх() , которая устанавливает расширение работы с файлами. В режиме запуска толстого и тонкого клиентов информирует о том, что расширение установлено. Для клиента мобильного приложения, информирует о том, что расширение установлено.