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

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

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

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

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

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

---

... Внести изменения в код может любой разработчик 1С ...
Ага, привычные html, css, javascript <> любой разработчик 1С.
Если бы у бабки были бы яйца ...
mip128; chernyakai; criptid; segatron; Anton64; portwein; Dach; tiniji; nightowl; awp; van_za; for_sale; Yashazz; 7OH; papami; cdiamond; mysm; Leon75; Sh00rick; elcoan; +20 1 Ответить
4. elcoan 356 30.11.21 13:37 Сейчас в теме
(1) Спасибо. Если честно, меня этот подход тоже немного настораживает и для определенных задач (например, интернет-магазин) он вряд ли подходит. Но в других случаях, я пока не могу найти явные минусы - плюсов получается больше. Как минимум это проще, чем держать и поддерживать отдельную ноду.
7. starik-2005 2638 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 4639 08.12.21 17:38 Сейчас в теме
(7) при этом все почему то забывают бэкофисную историю "поправить данные", "найти в таблице", "зайти под админом", "завести пользователя", "сконфигурить текстовку". И вот тут ребята с "тру стеком" обычно увеличивают косты раз так в 10...

Ну кто по продвинутей применяет airtable + metabase или похожую связку... этим по перфомансу можно приблизиться к 1С решениям, до догнать пожалуй никогда...
32. starik-2005 2638 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 1481 04.12.21 06:49 Сейчас в теме
(1) "должна нода" - обоснуйте, почему должна? по фен-шую?
SergeyTerentyev; +1 Ответить
29. comol 4639 08.12.21 17:35 Сейчас в теме
(1)
1Сная база должна работать за нодой как обычная скриптуемая БД

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

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

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

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

Александр, правильно ли я понял, что для реализации бэкенда realworld на 1С нужно реализовать методы API https://gothinkster.github.io/realworld/docs/specs/backend-specs/endpoints и этого будет достаточно?
8. malikov_pro 1097 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 356 30.11.21 16:13 Сейчас в теме
(8)
НачатьНовуюСессию(Пользователь) - нигде по коду не используется


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

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

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

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

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


Каким образом происходит аутентификация пользователей: средствами платформы?
16. quazare 2021 30.11.21 19:30 Сейчас в теме
молодец, автор! тема достаточно интересная. Вероятно, когда придет 1С-Элемент подобным будем заниматься)
17. elcoan 356 30.11.21 19:35 Сейчас в теме
(16) Спасибо) Мне вот непонятно, зачем 1С добавляет новые сущности, если можно решить задачи уже текущими возможностями.
28. comol 4639 08.12.21 17:29 Сейчас в теме
(16) подобным не будем заниматься не когда 1С-Элементы придёт, а ЕСЛИ... и не только придёт, а станет зрелым решением, с подготовленными разработчиками, и конечно же переписанными под него ERP/ЗУП/БП/КА и прочими решениями...
18. quazare 2021 30.11.21 20:27 Сейчас в теме
(17) откусить кусок рынка только и всего
20. malikov_pro 1097 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 4639 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 4639 08.12.21 17:27 Сейчас в теме
(22) MPA можно сделать если имплементировать google page speed модуль для апача, который закэширует всё что ни попади, а остальное сожмёт. скорость ответа станет приличной, но да SPA быстрее
23. axelerleo 318 02.12.21 09:52 Сейчас в теме
Все это отлично :)
Похожим образом писал я веб-морду для заявок otrs (чтобы пользователь не тыкался по почте в поиске нужного тикета),
Но это все хорошо для интранета. Выпускать наружу можно только "полухакерскими" методами, которые не сильно дружат с лицензионной политикой 1С. А-ля выполнение всех сервисов под одним служебным пользователем.
Также, делал внутреннюю swagger документацию API, да и в принципе SSR работает технически достаточно быстро, если пул соединений нормально настроен.
AJAX нормально дружит с http сервисами, статичные файлы (css, js) тоже отдает нормально и кэширует.
Но меня больше всего смущают именно лицензионные последствия.
comol; elcoan; +2 Ответить
31. comol 4639 08.12.21 17:39 Сейчас в теме
(23)
AJAX нормально дружит с http сервисами, статичные файлы (css, js) тоже отдает нормально и кэширует.
вооо... есть профессионалы в чате. Главная история конечно именно в лицензиях, к сожалению :(((
25. comol 4639 08.12.21 17:26 Сейчас в теме
Браво, мы не одиноки.... https://github.com/comol/OneCWebFramework - было бы чуть проще ИМХО
33. axelerleo 318 08.12.21 20:59 Сейчас в теме
(25)
Спасибо! Думал в сторону этого фреймворка :)
Но пока хватает базовых вещей - где-то готовый html можно отдать, а где-то можно скормить json, а за красоту отвечает какой-нибудь бутстрап и js
34. info1i 167 14.01.22 00:24 Сейчас в теме
(25) Подскажите, пожалуйста, как начать пользоваться вашим фреймворком?
35. armo59 21.01.22 14:08 Сейчас в теме
Добрый день Сергей. меня зовут Артак, я сегодня стал вашим другом! )). хотел бы с вами поговорить по телефону. если это возможно мой номер +79276062828. Дайте пожалуйста знать как смогу до вас дозвониться. Заранее спасибо!
Оставьте свое сообщение
Вакансии
Автор новостей об 1С, налогах и бухучете на INFOSTART.RU
Санкт-Петербург
По совместительству

Бизнес-аналитик 1С
Санкт-Петербург
зарплата от 150 000 руб. до 200 000 руб.
Полный день

Программист, аналитик, эксперт 1С
Санкт-Петербург
По совместительству

Программист 1С
Нижний Новгород
зарплата от 170 000 руб.
Полный день

Программист 1С
Екатеринбург
зарплата от 120 000 руб. до 130 000 руб.
Полный день