Публикация сборки сайта через 1С

30.07.23

Интеграция - WEB-интеграция

Демонстрация возможного сценария развертывания сайта через 1С HTTP сервис на примере сборки react-app.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Бесплатно
Пример конфигурации - публикация сборки сайта через 1С:
.cf 84,90Kb
8
8 Скачать бесплатно
Сборка сайта для тестирования
.zip 300,61Kb
7
7 Скачать бесплатно

Всем привет!

Представляю прототип решения для публикации сайта через 1C.

Суть задачи в том, чтобы 1C работала с одной стороны как файловый сервер, который отдаст в браузер статические файлы (html, css, js, и прочее),  с другой стороны 1C должна реализовать rest api. Это упрощает публикацию приложения, решает  проблему CORS (api нашего сайта находится в домене сайта) в каких-то сценариях упрощает авторизацию, ну и вообще прикольно покрутить react на нашем 1С.

1. Создаем сервис отдачи сборки.

Сборка - это то, что получается после того, как сборщик проекта, например, webpack пройдется по нашему красивому проекту и соберет файлики js в один или несколько частей (чанки), чтобы проще было передавать их в браузер и вероятный противник не мог понять, что там написано, и чтобы все браузеры смогли работать с этим js (условно сложный js   может быть заменен на более простой, поддерживаемый всеми браузерами).

Так выглядит проект, все разложено по папкам и более-менее понятно, как он работает (чем хороши фраемворки это то, что они диктуют структуру проекта и правила написания кода,  поэтому достаточно легко разобраться в чужом проекте и все они очень похожи)




Так выглядит сборка


 

js в сборке выглядит так, и так мы это увидим, если посмотрим в браузере... (на это смотрят люди и такие... ну... это дичь я на таком писать никогда не буду)




Если кому-то захочется создать свой js фреймворк, то в нем как-то будет использоваться сборщик webpack, подробнее про него можно почитать здесь.

Задача сервиса сводится к тому, чтобы отдать файлы, запрашиваемые браузером, с установкой правильного типа контента из папки, где они лежат.

Я реализовал это в следующем виде - Модуль веб сервиса 

В модуле http сервиса реализован обработчик для отправки файлов IndexGET, который по ссылке отдаст сначала index.html и далее - связанные файлы, которые браузер запросит автоматически. 

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

2. Настройка сборки react для 1С.

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

Например, в html будет указано, что js нужно брать по следующему адресу src="/static/js/main.aff0f6f6.js"

Чтобы это было обработано 1с, нужно, чтобы адрес имел следующий вид.

src="/Portal/hs/content/static/js/main.69eafd51.js"

Для того, чтобы получить требуемую "добавку" к ссылкам, в  файле package.json добавляем параметрам "homepage": "http://localhost:9000/Portal/hs/content", соответственно при сборке webpack сделает эту добавку...

Более подробно о создании react app можно почитать здесь

3. Добавляем ручку для отправки данных Модуль веб сервиса 

Ручка реализуется посредством метода apiGET (отдает элементы справочника задачи) в json

4. Проверяем, все работает!!!

Репка, здесь есть и проект react и конфигурация 1С (выгруженная в файлики).



 

1C react статика http сборка build js

См. также

Сайты и интернет-магазины WEB-интеграция Системный администратор Программист Пользователь Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM разных брендов в одной информационной базе в ручном и автоматическом режиме.

36000 руб.

03.08.2020    17781    19    22    

16

Сайты и интернет-магазины Интеграция WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Управленческий учет Платные (руб)

Интеграция 1С и Битрикс 24. Разработка имеет двухстороннюю синхронизацию 1С и Bitrix24 задачами. Решение позволяет создавать пользователя в 1С из Битрикс24 и наоборот. Данная разработка технически подходит под все основные конфигурации линейки продуктов 1С:Предприятие 8.3 (платформа начиная с 8.3.23). При приобретении предоставляется 1 месяц бесплатных обновлений разработки. Доступна демо-версия продукта с подключением Вашего Битрикс24

5040 руб.

04.05.2021    19845    13    17    

16

WEB-интеграция 8.3.8 Конфигурации 1cv8 Автомобили, автосервисы Беларусь Украина Россия Казахстан Управленческий учет Платные (руб)

Расширение предназначено для конфигурации "1С:Предприятие 8. Управление Автотранспортом. ПРОФ". Функционал модуля: 1. Заполнение регистров сведений по подсистеме "Мониторинг", а именно: события по мониторингу, координаты по мониторингу, пробег и расход по мониторингу, текущее местоположение ТС по мониторингу 2. Заполнение путевого листа: пробег по мониторингу, время выезда/заезда, табличная часть ГСМ, места стоянок по геозонам. 3. Отчеты по данным загруженным в регистры сведений. 4. Предусмотрена автоматическая загрузка данных в фоновом режиме (условия работы данной загрузке читайте в описании товара) Модуль работает без включенной константы по настройкам мониторинга. Модуль формы предоставляется с открытым кодом, общий модуль защищен. Любой заинтересованный пользователь, имеет возможность скачать демо-версию расширения.

22656 руб.

25.05.2021    14421    42    8    

18

WEB-интеграция Программист Руководитель проекта Платформа 1С v8.3 Конфигурации 1cv8 1С:Франчайзи, автоматизация бизнеса Платные (руб)

Расширение значительно упрощает написание API на 1С. Веб программисты получают простой и понятный доступ к 1С. Описание API создаётся автоматически и представляется в виде удобном как для человека, так и для программной обработки.

24000 руб.

27.09.2024    1169    1    0    

3
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. John_d 5891 06.03.23 09:16 Сейчас в теме
Спасибо. Может пригодиться. В функцию apiGET(Запрос) пробовали передавать параметры?
2. van_za 269 06.03.23 22:42 Сейчас в теме
(1) Спасибо за отзыв. Пробовал, все отлично работает.
На всякий случай, ниже примеры:

Пример URL с параметрами
fetch(`https://api.unsplash.com/photos?client_id=${publicId}`)

Если в 1с нужно передать объект, например создание новой задачи, то лучше воспользоваться post запросом, передовая необходимую информацию в теле запроса в виде json
Пример запроса с телом.
const requestOptions = {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ title: 'Fetch POST Request Example' })
};
fetch('https://reqres.in/api/articles', requestOptions)
3. paulpk 07.03.23 15:07 Сейчас в теме
Каждый запрос в браузере = 1 лицензия 1с?
4. van_za 269 08.03.23 07:00 Сейчас в теме
(3) если клиент северный вариант, тогда клиентские лицензии на http сервис не расходуется, однако по правилам мы должны иметь лицензии которые должны соответствовать количеству одновременно работающих пользователей
5. tema32 09.03.23 10:43 Сейчас в теме
В файловом варианте тоже не расходуются.
6. ONLYTILT 20 13.03.23 06:04 Сейчас в теме
(4)Тоже добавлял в сервис предоставление статичных файлов, как по мне лучше такие файлы хранить в регистре откуда они могут быть быстро прочитаны, а так же код по получению двоичных данных лучше поместить в модуль повторного использования
7. van_za 269 13.03.23 10:32 Сейчас в теме
(6)
По поводу идеи с регистром.
- усложняет систему (добавляем табличку)
-добавляет лишние действия при публикации (сделали сборку и нужно её ещё и загрузить в 1с)
- не понятно, почему из регистра будет быстрее чем из файла

По поводу повторного использования, возможно, но не очевидна частота попадания в кэш, сделал изначально так, но убрал для минимализма примера.
8. van_za 269 30.07.23 11:39 Сейчас в теме
Выложил пример конфигурации и сборку в архиве, для использования нужно
- развернуть конфигурацию
- опубликовать hs "content"
- указать в константе "Путь к сборке" путь к сборке (сборку предварительно достать из архива)
- завести в справочнике "Задачи" несколько элементов что бы они отразились на страничке
Оставьте свое сообщение