Как организовать хранение и установку дистрибутива из 1С в веб-клиенте?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При разработке функционала для веб-клиента 1С:Предприятие часто возникают сложности при попытке работы с локальной файловой системой пользователя. Стандартные методы, такие как ЧтениеZipФайла, отлично работают на толстом или тонком клиенте, но в веб-интерфейсе они ограничены «песочницей» браузера. Давайте разберем, как правильно организовать хранение дистрибутива в конфигурации и его корректную установку на компьютер пользователя.

Основные ограничения при работе в браузере

Важно понимать, что веб-клиент не имеет прямого доступа к диску компьютера. Любое действие, связанное с созданием папок или записью файлов, требует использования Расширения работы с файлами. Без этого компонента браузер просто не позволит приложению «выйти» за пределы своих границ безопасности.

Шаг 1: Подготовка к работе с файловой системой

Прежде чем приступать к манипуляциям с файлами, необходимо убедиться, что расширение подключено. В коде управляемой формы это реализуется через асинхронные вызовы:


#Если ВебКлиент Тогда
    Если Не ПодключитьРасширениеРаботыСФайлами() Тогда
        НачатьУстановкуРасширенияРаботыСФайлами();
        ПодключитьРасширениеРаботыСФайлами();
    КонецЕсли;
#КонецЕсли

Помните, что в веб-клиенте почти все методы работы с файлами должны быть асинхронными (начинающимися с «Начать...»), чтобы не блокировать основной поток исполнения в браузере.

Шаг 2: Стратегия хранения дистрибутива

Хранить каждый файл отдельно в базе данных — это избыточно и неэффективно. Лучшим решением будет:

  1. Запаковать все необходимые файлы и папки дистрибутива в один .zip архив.
  2. Разместить этот архив в Общие макеты (как двоичные данные) или в ХранилищеЗначений в регистре сведений.
  3. При необходимости передать архив на клиент, используйте ПоместитьВоВременноеХранилище, чтобы получить адрес данных, доступный из браузера.

Шаг 3: Распаковка и развертывание

Поскольку встроенный объект ЧтениеZipФайла может некорректно отрабатывать в веб-клиенте, у нас есть несколько подходов для реализации установки:

Вариант А: Распаковка на сервере (рекомендуемый для сложных структур)

Если структура дистрибутива сложная, лучше распаковать архив на стороне сервера 1С. После распаковки во временный каталог на сервере, файлы можно поочередно или пакетами передать на клиент, используя временное хранилище, и сохранить их в выбранную пользователем директорию через НачатьКопированиеФайла.

Вариант Б: Передача архива и запуск системного архиватора

Если вы не хотите усложнять код, просто скачайте архив на компьютер пользователя в целевую папку. После этого используйте метод ЗапуститьПриложение. Это позволит вызвать системный архиватор пользователя (например, WinRAR или 7-Zip), чтобы он сам распаковал содержимое. Этот путь наиболее надежен, так как делегирует ответственность за обработку файлов операционной системе.

Полезные советы по реализации

Разбирая задачу, мы выяснили следующие важные моменты:

Используя этот подход, вы сможете эффективно доставлять любые дистрибутивы прямо из 1С, обеспечивая при этом стабильную работу даже в самом строгом веб-окружении.

← На главную