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

30.07.23

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

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

Бесплатные

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

Узнавайте о новых бесплатных решениях в нашей телеграм-группе Инфостарт БЕСПЛАТНО

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

Всем привет!

Представляю прототип решения для публикации сайта через 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С:Предприятие 8 1C:Бухгалтерия 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

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

36000 руб.

03.08.2020    22203    32    24    

26

SALE! 15%

WEB-интеграция Программист Бизнес-аналитик 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Оптовая торговля, дистрибуция, логистика ИТ-компания Платные (руб)

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

17280 14688 руб.

20.12.2024    4384    22    4    

23

WEB-интеграция Программист Руководитель проекта 1С:Предприятие 8 1C:Бухгалтерия 1С:Франчайзи, автоматизация бизнеса Платные (руб)

Расширение значительно упрощает написание API на 1С. Веб программисты получают простой и понятный доступ к 1С. Описание API создаётся автоматически и представляется в виде удобном как для человека, так и для программной обработки. Основные преимущества: 1. Документация API создаётся автоматически. Удобна для программной обработки. 2. Изменить API столь же просто как настроить отчёт. Можно опубликовать существующий вариант отчёта. 3. Отчёты в API поддерживают параметры (Период, ДатаНачала и др.) 4. При создании простых методов не требуется изменять конфигурацию. 5. Поддерживается работа с планами обмена.<br/> 6. Возможно настроить отправку из 1С данных корреспондирующей системе, для случаев когда 1С сама "знает" какие данные нужно отправить. 7. После записи в 1С Ле Мурр может возвращать соответствие полученных идентификаторов созданным в 1С объектам данных.

36000 руб.

27.09.2024    10152    7    5    

11

WEB-интеграция Программист 1С:Предприятие 8 1С:Бухгалтерия 3.0 Бытовые услуги, сервис Платные (руб)

Внешняя обработка разработана для автоматизации передачи данных между сервисом Vetmanager с 1С: Бухгалтерия 3.0. Решение позволяет загружать документы и справочники из Ветменеджер в 1С:Бухгалтерию, сокращая время на ручной ввод данных и минимизируя ошибки.

12000 руб.

02.02.2021    20959    60    52    

38
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. John_d 6058 06.03.23 09:16 Сейчас в теме
Спасибо. Может пригодиться. В функцию apiGET(Запрос) пробовали передавать параметры?
2. van_za 303 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 303 08.03.23 07:00 Сейчас в теме
(3) если клиент северный вариант, тогда клиентские лицензии на http сервис не расходуется, однако по правилам мы должны иметь лицензии которые должны соответствовать количеству одновременно работающих пользователей
5. tema32 09.03.23 10:43 Сейчас в теме
В файловом варианте тоже не расходуются.
6. ONLYTILT 26 13.03.23 06:04 Сейчас в теме
(4)Тоже добавлял в сервис предоставление статичных файлов, как по мне лучше такие файлы хранить в регистре откуда они могут быть быстро прочитаны, а так же код по получению двоичных данных лучше поместить в модуль повторного использования
7. van_za 303 13.03.23 10:32 Сейчас в теме
(6)
По поводу идеи с регистром.
- усложняет систему (добавляем табличку)
-добавляет лишние действия при публикации (сделали сборку и нужно её ещё и загрузить в 1с)
- не понятно, почему из регистра будет быстрее чем из файла

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