... мысли по поводу данного подхода в комментариях ...
Сделал довольно много веб-морд на этом подходе.
Фигня это все костыльная.
Сервисы http сделаны не для этого, а для сопряжения. Всяких обменов, выгрузок, загрузок и прочего.
1Сная база должна работать за нодой как обычная скриптуемая БД. Например, как https://postgrest.org/en/stable/ А принимать запросы от обозревателей, опознавать работников, создавать html через json с шаблонщиком (handlebars и прочие), раздавать css, js и картинки должна нода (php, джанга и прочее).
Для двустороннего обмена 1С <-> веб-сервер (нода, джанга и прочее) можно пользовать веб-гнезда.
---
... Внести изменения в код может любой разработчик 1С ...
Ага, привычные html, css, javascript <> любой разработчик 1С.
Если бы у бабки были бы яйца ...
(1) Спасибо. Если честно, меня этот подход тоже немного настораживает и для определенных задач (например, интернет-магазин) он вряд ли подходит. Но в других случаях, я пока не могу найти явные минусы - плюсов получается больше. Как минимум это проще, чем держать и поддерживать отдельную ноду.
это проще, чем держать и поддерживать отдельную ноду
Все относительно. Скриптолог на нода.джиэс, пайтоне и прочем несильно сложном коммунистическом (опен сорс) стеке стоит не дороже 1С-нега, при том 1С-нег делает что-то другое. А, как говорил один типа бог, служить двум господам обычно не получается - одному усердствуешь, о другом "нерадишь"...
Разделение труда показало свои сильные стороны еще в глубине веков. А сейчас попытка охватить все и вся приводит к смене стека, а не к универсализации. Если у Вас хорошо получается совмещать стеки (не верю), то скоро Вы из 1С сбежите. Я - сбежал.
(7) при этом все почему то забывают бэкофисную историю "поправить данные", "найти в таблице", "зайти под админом", "завести пользователя", "сконфигурить текстовку". И вот тут ребята с "тру стеком" обычно увеличивают косты раз так в 10...
Ну кто по продвинутей применяет airtable + metabase или похожую связку... этим по перфомансу можно приблизиться к 1С решениям, до догнать пожалуй никогда...
(4) Еще как вариант когда используют связки nginx+php-fpm тут же можно использовать nginx+1c т.е. статику отдавать через nginx и как раз через него проксировать запросы динамики в 1С заодно можно и url путь подшаманить сделав его коротким.
Но самым правильным считаю использование 1С только для отдачи json и запросов к сервису через нормальный классический web framework.
И тут два варианта опрашивать сервис во время формирования страницы на сервере или использовать подгрузку и отрисовку не посредственно через js фреймворки (ajax запросы к сервису 1С).
В качестве безопасности лучше первый вариант не светить прямой доступ к публикации сервиса и так же в первом случае можно использовать кеширование запросов к сервису 1С освобождая БД и сервер 1С от нагрузки.
В очередной раз генерация HTML с помощью 1С с сопустствующими костылями.
Напишите серверную реализацию на 1С для https://github.com/gothinkster/realworld, и подключайте любой фронт по вкусу. Пока будете реализовывать познакомитесь с JWT, возможно поймете что отправлять при каждом запросе логин с паролем не лучшая идея.
(2) Спасибо за комментарий, логин и пароль естественно не предаются при каждом запросе. При аутентификации пользователя на сервере открывается сессия, которая передается на клиент в виде cookie-идентификатора.
(3) "которая передается на клиент в виде cookie-идентификатора." - посмотрю реализацию.
На сколько безопасна эта реализация самой платформой вопрос открыт, заваливал сессии просто отправляя в них неверный идентификатор сессии в заголовках. По хорошему нужно перед 1С ставить сервис который чистит заголовки.
Если есть желание разобраться с realworld, то могу поддержать делом, считаю что для сообщества данная реализация будет хорошим мостиком в использование web.
(5) Александр, спасибо еще раз. Обязательно посмотрю требования к realworld, отпишусь позднее.
По поводу очистки заголовков - не очень понял. Если передавать неправильный идентификатор сессии, то пользователь просто не будет аутентифицирован.
(6) Заголовки
vrs-session: d24249e4-ec14-48ad-b1c9-d87b1b45887f - это web клиент
session
Autorization
НачатьНовуюСессию(Пользователь) - нигде по коду не используется
Аутентификация проходит по спр. лк_Пользователи, логин с паролем передаются через тело запроса (желательно это отметить)
Пароли в базе хешируются.
Предположу что HTTP сервис подрезали и немного переборщили.
Александр, не совсем понимаю, что значит обработать "/posts/1"? Как обработать произвольный запрос?
В моем решении роутинг выполняется просто - ищется полный путь запроса в справочнике "Страницы" - если такой путь найдет, то отдается контент, если нет, то 404 ошибка.
(9) "/concept/login.1c" - в XML, который загружается в спр. Страницы? выносить логику в код "макета" не лучшая идея.
(10) каким образом строится путь для получения элемента обращения?
(11) Первоначально логика была внутри расширения, но были сомнения, насколько это правильно)
При записи любой страницы - в отдельный реквизит пишется ее полный путь, ее расположение внутри папок страниц.
При запросе страница ищется по этому полному пути, примитивно выглядит вот так:
(0) Спасибо, что упомянули в первоисточнике мою разработку. Разработка претерпела кучу изменений и исправлений.
1.Вы создаете для пользователей как отдельный справочник, мы же интегрировали пользователей конфигурации. Так проще и лучше. Авторизацию проверяем для живых пользователей.
2. Тоже научили хранить куки сеанса и сделали свою страницу авторизации. Теперь подсистема может работать как с собственной формой авторизации, так и со встроенной 1С-ной.
3. Исправили кучу ошибок.
(13) Добрый день! Подскажите, как себя зарекомендовал данных подход? Вы используете его в продуктивных системах?
1.Вы создаете для пользователей как отдельный справочник, мы же интегрировали пользователей конфигурации. Так проще и лучше. Авторизацию проверяем для живых пользователей.
Каким образом происходит аутентификация пользователей: средствами платформы?
(16) подобным не будем заниматься не когда 1С-Элементы придёт, а ЕСЛИ... и не только придёт, а станет зрелым решением, с подготовленными разработчиками, и конечно же переписанными под него ERP/ЗУП/БП/КА и прочими решениями...
Когда только еще появился http-сервис в конфигураторе я подумал что это настолько очевидная идея что не стал ничего писать на эту тему. А по существу выше правильно указали что этот объект предназначен для REST API в закрытых системах и если такой сайт пустить в открытое плавание то его завалит любой школьник.
(22) MPA можно сделать если имплементировать google page speed модуль для апача, который закэширует всё что ни попади, а остальное сожмёт. скорость ответа станет приличной, но да SPA быстрее
Все это отлично :)
Похожим образом писал я веб-морду для заявок otrs (чтобы пользователь не тыкался по почте в поиске нужного тикета),
Но это все хорошо для интранета. Выпускать наружу можно только "полухакерскими" методами, которые не сильно дружат с лицензионной политикой 1С. А-ля выполнение всех сервисов под одним служебным пользователем.
Также, делал внутреннюю swagger документацию API, да и в принципе SSR работает технически достаточно быстро, если пул соединений нормально настроен.
AJAX нормально дружит с http сервисами, статичные файлы (css, js) тоже отдает нормально и кэширует.
Но меня больше всего смущают именно лицензионные последствия.
Спасибо! Думал в сторону этого фреймворка :)
Но пока хватает базовых вещей - где-то готовый html можно отдать, а где-то можно скормить json, а за красоту отвечает какой-нибудь бутстрап и js
Добрый день Сергей. меня зовут Артак, я сегодня стал вашим другом! )). хотел бы с вами поговорить по телефону. если это возможно мой номер +79276062828. Дайте пожалуйста знать как смогу до вас дозвониться. Заранее спасибо!