При разработке и адаптации конфигураций 1С для работы через веб-клиент часто возникает необходимость передавать файлы между клиентом и сервером. В классическом настольном варианте для этих целей используется специальное расширение браузера. Однако, когда пользователи пытаются открыть ту же базу с мобильного устройства (например, с планшета на Android или iPad) и выполнить операцию с файлами, система выдает ошибку: "Расширение для работы с файлами не подключено". Разберем эту ситуацию по шагам, выясним причину такого поведения системы и рассмотрим эффективные варианты обхода ограничений.
Давайте проанализируем ситуацию. В стандартном коде для работы с файлами программисты часто используют синхронные вызовы, пытаясь подключить расширение браузера. Пример такого кода:
#Если ВебКлиент Тогда
// Попробуем подключить расширение работы с файлами
РасширениеПодключено = ПодключитьРасширениеРаботыСФайлами;
Если НЕ РасширениеПодключено Тогда
УстановитьРасширениеРаботыСФайлами;
КонецЕсли;
#КонецЕсли
Когда этот код выполняется на ПК под управлением Windows, macOS или Linux, браузер предлагает пользователю установить расширение 1С из магазина (например, Chrome Web Store), а затем скачивает бинарную компоненту (установщик платформы). Но на мобильных операционных системах, таких как Android и iOS, расширение физически не поддерживается.
Расширение работает только в связке с бинарной компонентой, которая устанавливается на уровне настольной операционной системы. На Android эту компоненту установить нельзя. Поэтому вызов функций ПодключитьРасширениеРаботыСФайлами или УстановитьРасширениеРаботыСФайлами всегда будет возвращать Ложь, приводить к ошибке или попросту игнорироваться мобильным браузером. Кроме того, современные веб-браузеры блокируют устаревшие синхронные вызовы и модальные окна в целях безопасности.
Начиная с версии платформы 8.3.15, мы можем работать с файлами в браузере вообще без установки каких-либо дополнительных расширений 1С. Платформа научилась использовать встроенные стандарты HTML5 (File API).
Чтобы предоставить пользователю возможность выбрать файл на планшете и передать его на сервер, рассмотрим использование асинхронного метода НачатьПомещениеФайлов. При вызове этого метода на Android система автоматически откроет стандартное окно выбора файлов устройства или даже предложит сделать фотографию с камеры смартфона.
Посмотрим на пример реализации правильного асинхронного вызова:
&НаКлиенте
Процедура ЗагрузитьФайлСУстройства(Команда)
// Подготавливаем параметры диалога выбора файла
ПараметрыДиалога = Новый ПараметрыДиалогаПомещенияФайлов;
ПараметрыДиалога.МножественныйВыбор = Ложь;
ОповещениеЗавершения = Новый ОписаниеОповещения("ПослеПомещенияФайла", ЭтотОбъект);
// Используем асинхронный метод, который работает в мобильных браузерах без расширений 1С
НачатьПомещениеФайлов(ОповещениеЗавершения, , ПараметрыДиалога, УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ПослеПомещенияФайла(ПомещенныеФайлы, ДополнительныеПараметры) Экспорт
Если ПомещенныеФайлы = Неопределено ИЛИ ПомещенныеФайлы.Количество() = 0 Тогда
Возврат; // Пользователь отказался от выбора
КонецЕсли;
ОписаниеФайла = ПомещенныеФайлы[0];
АдресВХранилище = ОписаниеФайла.Хранение;
ИмяФайла = ОписаниеФайла.Имя;
// Передаем адрес файла на сервер для дальнейшей обработки
ОбработатьФайлНаСервере(АдресВХранилище, ИмяФайла);
КонецПроцедуры
&НаСервере
Процедура ОбработатьФайлНаСервере(АдресВХранилище, ИмяФайла)
// Извлекаем данные файла из временного хранилища
ДвоичныеДанныеФайла = ПолучитьИзВременногоХранилища(АдресВХранилище);
// Выполняем нужную логику с файлом
КонецПроцедуры
Важное замечание: При работе через HTML5 без расширения доступны только интерактивные операции (с открытием системного диалога). "Скрытые" операции (например, программное чтение файла по жестко заданному локальному пути) без участия пользователя выполнить невозможно из-за базовых политик безопасности браузеров.
Если ваша задача требует полноценного взаимодействия с файловой системой устройства, сканером штрихкодов, камерой или работы с криптографией, веб-клиент в стандартном мобильном Chrome или Safari не подойдет. Фирма "1С" настоятельно рекомендует отказаться от работы через браузер на смартфонах и планшетах.
Оптимальным решением будет публикация информационной базы для доступа через специальное приложение — Мобильный клиент. Разберем его преимущества:
Для работы потребуется опубликовать базу на веб-сервере (IIS или Apache) с галочкой поддержки мобильного клиента и установить на планшет соответствующее приложение от 1С, прописав в нем адрес базы.
Если по организационным или лицензионным причинам (например, нет возможности собрать и опубликовать собственный Мобильный клиент, а стандартный не подходит) необходим именно веб-клиент на Android, проанализируем сторонние утилиты-оболочки (например, 1Scan и аналогичные решения для складов).
Как это работает:
Этот метод требует более сложной настройки и модификации кода конфигурации 1С (написание обработчиков сообщений WebSocket), но позволяет решить проблему с расширением работы с файлами без перехода на полноценную мобильную платформу.
Мы выяснили причину возникновения ошибки подключения расширения файлов на Android. Для устранения проблемы рекомендуем сначала переписать код работы с файлами, заменив устаревшие синхронные методы на НачатьПомещениеФайлов. Если же в бизнес-процессе требуется глубокая интеграция с функциями планшета, рассмотрите переход с веб-клиента на Мобильный клиент 1С — это самый стабильный и рекомендуемый вендором путь.