При разработке функционала для веб-клиента 1С:Предприятие часто возникают сложности при попытке работы с локальной файловой системой пользователя. Стандартные методы, такие как ЧтениеZipФайла, отлично работают на толстом или тонком клиенте, но в веб-интерфейсе они ограничены «песочницей» браузера. Давайте разберем, как правильно организовать хранение дистрибутива в конфигурации и его корректную установку на компьютер пользователя.
Важно понимать, что веб-клиент не имеет прямого доступа к диску компьютера. Любое действие, связанное с созданием папок или записью файлов, требует использования Расширения работы с файлами. Без этого компонента браузер просто не позволит приложению «выйти» за пределы своих границ безопасности.
Прежде чем приступать к манипуляциям с файлами, необходимо убедиться, что расширение подключено. В коде управляемой формы это реализуется через асинхронные вызовы:
#Если ВебКлиент Тогда
Если Не ПодключитьРасширениеРаботыСФайлами() Тогда
НачатьУстановкуРасширенияРаботыСФайлами();
ПодключитьРасширениеРаботыСФайлами();
КонецЕсли;
#КонецЕсли
Помните, что в веб-клиенте почти все методы работы с файлами должны быть асинхронными (начинающимися с «Начать...»), чтобы не блокировать основной поток исполнения в браузере.
Хранить каждый файл отдельно в базе данных — это избыточно и неэффективно. Лучшим решением будет:
.zip архив.Общие макеты (как двоичные данные) или в ХранилищеЗначений в регистре сведений.ПоместитьВоВременноеХранилище, чтобы получить адрес данных, доступный из браузера.Поскольку встроенный объект ЧтениеZipФайла может некорректно отрабатывать в веб-клиенте, у нас есть несколько подходов для реализации установки:
Вариант А: Распаковка на сервере (рекомендуемый для сложных структур)
Если структура дистрибутива сложная, лучше распаковать архив на стороне сервера 1С. После распаковки во временный каталог на сервере, файлы можно поочередно или пакетами передать на клиент, используя временное хранилище, и сохранить их в выбранную пользователем директорию через НачатьКопированиеФайла.
Вариант Б: Передача архива и запуск системного архиватора
Если вы не хотите усложнять код, просто скачайте архив на компьютер пользователя в целевую папку. После этого используйте метод ЗапуститьПриложение. Это позволит вызвать системный архиватор пользователя (например, WinRAR или 7-Zip), чтобы он сам распаковал содержимое. Этот путь наиболее надежен, так как делегирует ответственность за обработку файлов операционной системе.
Разбирая задачу, мы выяснили следующие важные моменты:
НачатьСозданиеКаталога, НачатьКопированиеФайла) — это залог того, что веб-клиент не «зависнет».НачатьВыборКаталога, так как права доступа в системных папках (например, C:\Program Files) у веб-клиента могут отсутствовать.Используя этот подход, вы сможете эффективно доставлять любые дистрибутивы прямо из 1С, обеспечивая при этом стабильную работу даже в самом строгом веб-окружении.