Публикация статичных файлов, используя HTTP-сервис в расширении
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
Вводные
- База 1С с возможностью публикации HTTP сервиса.
- Отсутствие возможности разместить статические файлы в папке web сервера
- Web проект поставляется в 1С собранным, для тестов использовал AdminLTE
- Размещение файлов в макетах обработки не удобно (пример с макетами)
Вариант реализации
Запаковать сборку в zip архив, прикрепить двоичные данные к именованной настройке подсистемы.
При запросе к HTTP сервису искать настройку по адресу, при нахождении настройки обращаться к общему модулю с свойством "Повторное использование возвращаемых значений" = На время сеанса.
В рамках модуля с повторным использованием
- распаковываю архив,
- получаю список распакованных файлов,
- помещаю каждый из них во временное хранилище на время работы сеанса.
- относительные пути к файлам с адресами во временном хранилище помещаю в таблицу значений с индексом
В рамках обработчика ищу строку по соответствию относительного пути, если нахожу, то отдаю код 200 с телом из двоичных данных иначе 404.
Проверка работоспособности
Опубликовал базу по адресу "http://localhost:8080/unf_demo", HTTP сервис "api_uni", корневой адрес в настройки подсистемы "test"
Apache 2.4(x64) Платформа 8.3.17(x64), конфигурация в режиме совместимости 8.3.14.
Параметры HTTP сервиса "Повторное использование сеансов" равно "Использовать автоматически", при установке в "Использовать" получаю ошибку "Не указан заголовок управления сеансами или куки с идентификатором сеанса.", возможно проблемы с сеансами из за включенной отладки на сервере.
Исходный тестовый файл 18 МБ, 1800+ файлов, Холодный старт 12 сек, повторный ответ в пределах 50 мсек.
Проект на GitHub ссылка
Итог
Через HTTP-сервис можно опубликовать статичные файлы, не "размазывая" их по макетам.
Благодарю за внимание.
Вступайте в нашу телеграмм-группу Инфостарт
