Личный кабинет - делаем сайт с помощью 1С

0. 360 29.11.21 21:33 Сейчас в теме
Пример создания современного сайта, серверная часть которого написана полностью на 1С.

Перейти к публикации

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Steelvan 222 30.11.21 13:27 Сейчас в теме
... мысли по поводу данного подхода в комментариях ...

Сделал довольно много веб-морд на этом подходе.
Фигня это все костыльная.
Сервисы http сделаны не для этого, а для сопряжения. Всяких обменов, выгрузок, загрузок и прочего.
1Сная база должна работать за нодой как обычная скриптуемая БД. Например, как https://postgrest.org/en/stable/
А принимать запросы от обозревателей, опознавать работников, создавать html через json с шаблонщиком (handlebars и прочие), раздавать css, js и картинки должна нода (php, джанга и прочее).

Для двустороннего обмена 1С <-> веб-сервер (нода, джанга и прочее) можно пользовать веб-гнезда.

---

... Внести изменения в код может любой разработчик 1С ...
Ага, привычные html, css, javascript <> любой разработчик 1С.
Если бы у бабки были бы яйца ...
maksa2005; mip128; chernyakai; criptid; segatron; Anton64; portwein; Dach; tiniji; nightowl; awp; van_za; for_sale; Yashazz; 7OH; papami; cdiamond; mysm; Leon75; Sh00rick; elcoan; +21 1 Ответить
4. elcoan 360 30.11.21 13:37 Сейчас в теме
(1) Спасибо. Если честно, меня этот подход тоже немного настораживает и для определенных задач (например, интернет-магазин) он вряд ли подходит. Но в других случаях, я пока не могу найти явные минусы - плюсов получается больше. Как минимум это проще, чем держать и поддерживать отдельную ноду.
7. starik-2005 2659 30.11.21 15:29 Сейчас в теме
(4)
это проще, чем держать и поддерживать отдельную ноду
Все относительно. Скриптолог на нода.джиэс, пайтоне и прочем несильно сложном коммунистическом (опен сорс) стеке стоит не дороже 1С-нега, при том 1С-нег делает что-то другое. А, как говорил один типа бог, служить двум господам обычно не получается - одному усердствуешь, о другом "нерадишь"...

Разделение труда показало свои сильные стороны еще в глубине веков. А сейчас попытка охватить все и вся приводит к смене стека, а не к универсализации. Если у Вас хорошо получается совмещать стеки (не верю), то скоро Вы из 1С сбежите. Я - сбежал.
Feelthis; criptid; ice-net; Anton64; awk; zqzq; vld1973; cdiamond; mysm; malikov_pro; +10 2 Ответить
30. comol 4647 08.12.21 17:38 Сейчас в теме
(7) при этом все почему то забывают бэкофисную историю "поправить данные", "найти в таблице", "зайти под админом", "завести пользователя", "сконфигурить текстовку". И вот тут ребята с "тру стеком" обычно увеличивают косты раз так в 10...

Ну кто по продвинутей применяет airtable + metabase или похожую связку... этим по перфомансу можно приблизиться к 1С решениям, до догнать пожалуй никогда...
32. starik-2005 2659 08.12.21 17:48 Сейчас в теме
(30)
И вот тут ребята с
Точно! Или они остаются "делать видимость работы", или сбегают куда-то, где этих проблем нет.

Кесарю кесарево, саппорту саппортово...
14. dreamadv 152 30.11.21 18:52 Сейчас в теме
(4) Еще как вариант когда используют связки nginx+php-fpm тут же можно использовать nginx+1c т.е. статику отдавать через nginx и как раз через него проксировать запросы динамики в 1С заодно можно и url путь подшаманить сделав его коротким.

Но самым правильным считаю использование 1С только для отдачи json и запросов к сервису через нормальный классический web framework.
И тут два варианта опрашивать сервис во время формирования страницы на сервере или использовать подгрузку и отрисовку не посредственно через js фреймворки (ajax запросы к сервису 1С).
В качестве безопасности лучше первый вариант не светить прямой доступ к публикации сервиса и так же в первом случае можно использовать кеширование запросов к сервису 1С освобождая БД и сервер 1С от нагрузки.
24. DrAku1a 1484 04.12.21 06:49 Сейчас в теме
(1) "должна нода" - обоснуйте, почему должна? по фен-шую?
SergeyTerentyev; +1 Ответить
29. comol 4647 08.12.21 17:35 Сейчас в теме
(1)
1Сная база должна работать за нодой как обычная скриптуемая БД

А можете вот это голословное утверждение пояснить?... Почему?

Когда выходила нода все кричали "js это только для клиента"
Когда появлялся django все кричиали "python слишком медленный для web-а"...

HTML css js заменяется для 1С-ника либо шаблонизатором либо low code при решительном нежелании копаться в них последних
2. malikov_pro 1133 30.11.21 13:31 Сейчас в теме
В очередной раз генерация HTML с помощью 1С с сопустствующими костылями.
Напишите серверную реализацию на 1С для https://github.com/gothinkster/realworld, и подключайте любой фронт по вкусу. Пока будете реализовывать познакомитесь с JWT, возможно поймете что отправлять при каждом запросе логин с паролем не лучшая идея.
Leon75; elcoan; +2 Ответить
3. elcoan 360 30.11.21 13:35 Сейчас в теме
(2) Спасибо за комментарий, логин и пароль естественно не предаются при каждом запросе. При аутентификации пользователя на сервере открывается сессия, которая передается на клиент в виде cookie-идентификатора.
5. malikov_pro 1133 30.11.21 13:51 Сейчас в теме
(3) "которая передается на клиент в виде cookie-идентификатора." - посмотрю реализацию.
На сколько безопасна эта реализация самой платформой вопрос открыт, заваливал сессии просто отправляя в них неверный идентификатор сессии в заголовках. По хорошему нужно перед 1С ставить сервис который чистит заголовки.

Если есть желание разобраться с realworld, то могу поддержать делом, считаю что для сообщества данная реализация будет хорошим мостиком в использование web.
JohnyDeath; Viska; +2 Ответить
6. elcoan 360 30.11.21 13:57 Сейчас в теме
(5) Александр, спасибо еще раз. Обязательно посмотрю требования к realworld, отпишусь позднее.
По поводу очистки заголовков - не очень понял. Если передавать неправильный идентификатор сессии, то пользователь просто не будет аутентифицирован.
19. elcoan 360 30.11.21 23:09 Сейчас в теме
(5)
Если есть желание разобраться с realworld

Александр, правильно ли я понял, что для реализации бэкенда realworld на 1С нужно реализовать методы API https://gothinkster.github.io/realworld/docs/specs/backend-specs/endpoints и этого будет достаточно?
8. malikov_pro 1133 30.11.21 16:06 Сейчас в теме
(6) Заголовки
vrs-session: d24249e4-ec14-48ad-b1c9-d87b1b45887f - это web клиент
session
Autorization

НачатьНовуюСессию(Пользователь) - нигде по коду не используется
Аутентификация проходит по спр. лк_Пользователи, логин с паролем передаются через тело запроса (желательно это отметить)
Пароли в базе хешируются.

Предположу что HTTP сервис подрезали и немного переборщили.

Как пример реализации для статики норм, как обработать /posts/1 непонятно, у меня была попытка написать роутинг https://infostart.ru/1c/articles/1131305/
9. elcoan 360 30.11.21 16:13 Сейчас в теме
(8)
НачатьНовуюСессию(Пользователь) - нигде по коду не используется


Она используется в коде элемента страницы "/concept/login.1c", там такая логика:
Пользователь = лк_ОбщегоНазначения.ПолучитьПользователяПоДаннымАутентификации(ТекстЗапроса);
Если НЕ ЗначениеЗаполнено(Пользователь) Тогда
	// аутентификация не выполнена
Иначе
	// аутентификация выполнена, начинаем новую сессию
	Сессия = лк_ОбщегоНазначения.НачатьНовуюСессию(Пользователь);
	// передаем в куке идентификатор сессии
	П.Ответ = Новый HTTPСервисОтвет(302);
	П.Ответ.Заголовки.Вставить("location", П.Запрос.БазовыйURL + "/concept/index.html");
	П.Ответ.Заголовки.Вставить("Set-Cookie", "session=" + Сессия + "; Path=" + П.Запрос.БазовыйURL);
КонецЕсли;
Показать
10. elcoan 360 30.11.21 16:18 Сейчас в теме
(8)
Как пример реализации для статики норм, как обработать /posts/1 непонятно, у меня была попытка написать роутинг https://infostart.ru/1c/articles/1131305/

Александр, не совсем понимаю, что значит обработать "/posts/1"? Как обработать произвольный запрос?
В моем решении роутинг выполняется просто - ищется полный путь запроса в справочнике "Страницы" - если такой путь найдет, то отдается контент, если нет, то 404 ошибка.
11. malikov_pro 1133 30.11.21 16:38 Сейчас в теме
(9) "/concept/login.1c" - в XML, который загружается в спр. Страницы? выносить логику в код "макета" не лучшая идея.
(10) каким образом строится путь для получения элемента обращения?
12. elcoan 360 30.11.21 16:43 Сейчас в теме
(11) Первоначально логика была внутри расширения, но были сомнения, насколько это правильно)
При записи любой страницы - в отдельный реквизит пишется ее полный путь, ее расположение внутри папок страниц.
При запросе страница ищется по этому полному пути, примитивно выглядит вот так:
Страница = Справочники.лк_Страницы.НайтиПоРеквизиту("Путь", "/concept/pages/404.html");
13. Diversus 2254 30.11.21 17:36 Сейчас в теме
(0) Спасибо, что упомянули в первоисточнике мою разработку. Разработка претерпела кучу изменений и исправлений.

1.Вы создаете для пользователей как отдельный справочник, мы же интегрировали пользователей конфигурации. Так проще и лучше. Авторизацию проверяем для живых пользователей.
2. Тоже научили хранить куки сеанса и сделали свою страницу авторизации. Теперь подсистема может работать как с собственной формой авторизации, так и со встроенной 1С-ной.
3. Исправили кучу ошибок.

Времени нет выложить измененный вариант.
support; elcoan; +2 Ответить
15. elcoan 360 30.11.21 19:25 Сейчас в теме
(13) Добрый день! Подскажите, как себя зарекомендовал данных подход? Вы используете его в продуктивных системах?

1.Вы создаете для пользователей как отдельный справочник, мы же интегрировали пользователей конфигурации. Так проще и лучше. Авторизацию проверяем для живых пользователей.


Каким образом происходит аутентификация пользователей: средствами платформы?
16. quazare 2105 30.11.21 19:30 Сейчас в теме
молодец, автор! тема достаточно интересная. Вероятно, когда придет 1С-Элемент подобным будем заниматься)
17. elcoan 360 30.11.21 19:35 Сейчас в теме
(16) Спасибо) Мне вот непонятно, зачем 1С добавляет новые сущности, если можно решить задачи уже текущими возможностями.
28. comol 4647 08.12.21 17:29 Сейчас в теме
(16) подобным не будем заниматься не когда 1С-Элементы придёт, а ЕСЛИ... и не только придёт, а станет зрелым решением, с подготовленными разработчиками, и конечно же переписанными под него ERP/ЗУП/БП/КА и прочими решениями...
18. quazare 2105 30.11.21 20:27 Сейчас в теме
(17) откусить кусок рынка только и всего
20. malikov_pro 1133 30.11.21 23:49 Сейчас в теме
(19) Да, реализовать API по спецификации, после проверить тестами, по факту тесты Postman на node.js не все отработали (проверял год назад).
21. cdiamond 217 01.12.21 08:40 Сейчас в теме
Когда только еще появился http-сервис в конфигураторе я подумал что это настолько очевидная идея что не стал ничего писать на эту тему. А по существу выше правильно указали что этот объект предназначен для REST API в закрытых системах и если такой сайт пустить в открытое плавание то его завалит любой школьник.
Feelthis; elcoan; Yashazz; +3 1 Ответить
27. comol 4647 08.12.21 17:28 Сейчас в теме
(21) Нет, не завалит конечно :))). 5000 школьников полёт нормальный,... ну или уже 10 000
22. van_za 151 01.12.21 21:24 Сейчас в теме
Тормозит (при любом изменении на клиент грузится вся страница с картинками, js, css), лучше делать SPA c использованием 1с http сервисов.
https://infostart.ru/public/1472648/ примерно так.
что бы любой школьник не завалил нужно делать публикацию через nginx
https://its.1c.ru/db/metod8dev/content/5980/hdoc
26. comol 4647 08.12.21 17:27 Сейчас в теме
(22) MPA можно сделать если имплементировать google page speed модуль для апача, который закэширует всё что ни попади, а остальное сожмёт. скорость ответа станет приличной, но да SPA быстрее
23. axelerleo 319 02.12.21 09:52 Сейчас в теме
Все это отлично :)
Похожим образом писал я веб-морду для заявок otrs (чтобы пользователь не тыкался по почте в поиске нужного тикета),
Но это все хорошо для интранета. Выпускать наружу можно только "полухакерскими" методами, которые не сильно дружат с лицензионной политикой 1С. А-ля выполнение всех сервисов под одним служебным пользователем.
Также, делал внутреннюю swagger документацию API, да и в принципе SSR работает технически достаточно быстро, если пул соединений нормально настроен.
AJAX нормально дружит с http сервисами, статичные файлы (css, js) тоже отдает нормально и кэширует.
Но меня больше всего смущают именно лицензионные последствия.
comol; elcoan; +2 Ответить
31. comol 4647 08.12.21 17:39 Сейчас в теме
(23)
AJAX нормально дружит с http сервисами, статичные файлы (css, js) тоже отдает нормально и кэширует.
вооо... есть профессионалы в чате. Главная история конечно именно в лицензиях, к сожалению :(((
25. comol 4647 08.12.21 17:26 Сейчас в теме
Браво, мы не одиноки.... https://github.com/comol/OneCWebFramework - было бы чуть проще ИМХО
33. axelerleo 319 08.12.21 20:59 Сейчас в теме
(25)
Спасибо! Думал в сторону этого фреймворка :)
Но пока хватает базовых вещей - где-то готовый html можно отдать, а где-то можно скормить json, а за красоту отвечает какой-нибудь бутстрап и js
34. info1i 192 14.01.22 00:24 Сейчас в теме
(25) Подскажите, пожалуйста, как начать пользоваться вашим фреймворком?
35. armo59 21.01.22 14:08 Сейчас в теме
Добрый день Сергей. меня зовут Артак, я сегодня стал вашим другом! )). хотел бы с вами поговорить по телефону. если это возможно мой номер +79276062828. Дайте пожалуйста знать как смогу до вас дозвониться. Заранее спасибо!
Оставьте свое сообщение
Вакансии
Разработчик 1С
Балашиха
зарплата от 180 000 руб. до 230 000 руб.
Полный день

Руководитель проектов внедрения 1С:УХ
Краснодар
зарплата от 150 000 руб.
Полный день

Консультант-аналитик 1С
Москва
зарплата от 120 000 руб. до 190 000 руб.
Полный день

Ведущий аналитик-разработчик 1С
Москва
зарплата от 230 000 руб. до 270 000 руб.
Полный день

1С:Эксперт по производительности
Москва
зарплата от 400 000 руб. до 950 000 руб.
Полный день