gifts2017

Разработка CMS на платформе 1С 8 (Демо-база доступна для скачивания)

Опубликовал Сергей Лосников (Lars Ulrich) в раздел Обмен - Интеграция с WEB

О возможностях и способах интеграции 1С с CMS системами написано много. На практике используется даже автоматическая генерация частей или целых html-старниц для интеграции с сайтами. В данном примере описывается возможность создания CMS на базе платформы 1С.

Причем в данном виде система может использоваться как самостоятельная CMS для сайта-визитки со статичными html-страницами, так и в виде подсистемы в составе некой конфигурации для реализации публикации данных в веб опять же либо в виде самостоятельного сайта, либо в составе более крупного решения. В статье приведен демо-пример работы CMS, а так же доступна демо-база(под платформу 8.3.5).

Сразу оговоримся - это не публикация веб-клиента платформы, и не простое взаимодействие какого-то полноценного сайта с базой 1С. Это реализация самого сайта, т.е. его структуры, контента, механизмов обработки запросов, в базе 1С. Никакие сторонние движки не используются.

 

UPD. Демо-база доступна для скачивания. Конфигурация доработана под платформу 8.3.5 с использованием HTTP-сервисов. Вся логика работы остается аналогична использованию Web-сервисов, но упрощается использование - отпадает необходимость в использовании дополнительных костылей/точек входа/внешних сайтов. Для управления контентом "сайта" используем режим предприятия для входа в базу. Для входа на "сайт" достаточно просто опубликовать HTTP-сервис "engineHTTP" демо-базы, и выполнить вызов вида http://myserver/site_cms_test/hs/engineHTTP/, где myserver - имя вашего веб-сервера; site_cms_test - имя публикации; hs/engineHTTP - собственно вызов самого опубликованного HTTP-сервиса.


Ниже приводится общая схема работы системы (в демо базе реализовано через использования HTTP-сервисов).

Схема

Браузер отправляет запрос на опубликованный в IIS HTTP-сервис, который возвращает содержимое необходимого ресурса- html-страницы, CSS, скрипта или картинки. Получив запрос HTTP-сервис анализирует его и возвращает содержимое запрашиваемого контента.

В самой CMS реализованы объекты, описывающие структуру сайта, а так же отдельные его элементы: страницы, картинки, скрипты, стили.

Дерево сайта

Дерево сайта описывает структуру каталогов и элементов сайта. Каждый элемент дерева сайта содержит ссылку на целевой объект - страницу, картинку, скрипт или стиль. Все ссылки отображаемого сайта интерпретируются относительно корневого элемента.

При ответе CMS возвращает "содержимое" объекта из элемента дерева сайта в зависимости от типа. Н-ер: для типа "Страница" будет возвращен html-код страницы.

Описание страницы сайта

Объекты "Страницы" содержат полный текст целевой html-страницы. При желании можно реализовать механизм некой генерации страниц, когда она будет "собираться" из header'а, foot'ера и тела самой страницы. В данном случае исследовалась общая технология разработки подобной системы, поэтому код страницы задается целиком и жестко, но в рамках интеграции с конкретной учетной конфигурацией можно реализовать констуркторы динамической генерации контента. Релизованы несколько обязательных страниц: default - главная страница сайта; error 404 - страница с ошибкой. Технология использования точно такая же как у прочих объектов: создается элемент дерева сайта со ссылкой на нужный объект "Страница", а затем в коде html-страницы указывается ссылка на элемент дерева относительно корневого элемента.

 

Описание картинки

"Картинки" представляют собой отдельные объекты системы, в которые собственно внешние картинки и загружаются. Технология использования точно такая же как у прочих объектов: создается элемент дерева сайта со ссылкой на нужный объект "Картинка", а затем в коде html-страницы указывается ссылка на элемент дерева относительно корневого элемента.

 

Описание скриптов

Скрипты описываются отдельным объектом. Технология использования точно такая же как у прочих объектов: создается элемент дерева сайта со ссылкой на нужный объект "Скрипты", а затем в коде html-страницы указывается ссылка на элемент дерева относительно корневого элемента.

 

Описание стилей

Стили описываются отдельным объектом. Технология использования точно такая же как у прочих объектов: создается элемент дерева сайта со ссылкой на нужный объект "Стили", а затем в коде html-страницы указывается ссылка на элемент дерева относительно корневого элемента.

 

Что же мы получаем в итоге? Вполне работающий сайт с активными ссылками и возможностью управлять его структурой и содержанием. На перспективу можно обдумать механизмы скачивания данных с сайта и публикацию видео. Размечтался, да? :)

Главная страница

 

Страница новостей 

Страница не найдена

 

Небольшая демка по работе системы

демо

Скачать файлы

Наименование Файл Версия Размер
site_cms_test.dt 45
.dt 447,73Kb
26.09.14
45
.dt 1.0 447,73Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Дмитрий Шерстобитов (DitriX) 28.04.14 14:12
Чето не понял - это вы типо интерфейс клиента 1С изменили, или просто передаете стили на левый сайт?
2. Сергей Лосников (Lars Ulrich) 28.04.14 16:49
(1) это не публикация веб-клиента с измененным интерфейсом, а сайт, весь контент которого (структура, страницы, стили, картинки, скрипты) хранится в базе 1С.
3. Алексей Белоусов (AllexSoft) 28.04.14 16:53
а где скачать конфу? вообще идея мне нравится...
4. Дмитрий Башинский (bashinsky) 29.04.14 10:09
А весь этот контент извлекается из 1с или же 1с является только редактором?
5. rhtr Иванов (rhtr) 30.04.14 07:27
Давно думаю об этом. Спасибо, за статью.
6. Эмиль Карапетян (amon_ra) 30.04.14 09:20
А если бы еще встроенный редактор, то вообще цены бы не было сей системе! :) Но все-таки скуднова-то статья изложена, хочется подробностей побольше.
7. Борис (soap) 30.04.14 09:30
Если это конфигурация для работы с сайтами то в студию, а так малоинформативно.
borman; amon_ra; +2 Ответить 1
8. Эмиль Карапетян (amon_ra) 30.04.14 09:31
Еще хотелось бы адрес сайта где все это тестировалось, если он, конечно, публичный, а не поднят денвером. :)
9. Дмитрий Жиляков (Zhilyakovdr) 30.04.14 09:53
Хотелось бы больше технической информации и наличие БД с примером изложенным в статье.
10. Сергей Лосников (Lars Ulrich) 30.04.14 12:11
(3)(8)(7)(9)коллеги, ни раздача конфигурации, ни ее публикация для тестирования пока, к сожалению, не предполагается. На данный момент могу предоставить только информацию "описательного" характера. Прошу изучить небольшую схему и gif-демку работы системы, которые дополнительно прикрепил к публикации.

(4) база 1С - это по сути CSM, в которой весь контент и редактируется, хоть пока и достаточно "плоско". В gif-демке работы системы, которую дополнительно прикрепил к публикации есть пример.
11. Алексей Бочков (Aleksey.Bochkov) 30.04.14 23:13
Браузер отправляет запрос на опубликованный в IIS сайт-пустышку (точка входа/выхода). Сам по себе сай-пустышка не делает практически ничего, являясь неким буфером между браузером и веб-сервисом 1С. Он нужен для перенаправления всех запросов браузера на опубликованный из базы 1С веб-сервис, а так же отправки ответа в обратную сторону. В точке входа выпоняется минимальный анализ запросов браузера для разделения их на запросы страниц, изображений, стилей и скриптов, и вызова соответствующих методов веб-сервиса 1С.

Реализуемые платформой 1С веб-сервис не выдают браузеру "чистый" html-код страницы, т.к. ответ выдается в виде SOAP-пакета. Опубликованный на IIS сайт-пустышка выделяет это самое "полезного" содержимого из ответа сервиса.

Получив запрос веб-сервис анализирует его и возвращает содержимое запрашиваемого контента. Весь конткент возвращается браузеру в строковом представлении: страницы, скрипты, стили в виде кода, изображения в виде строки base64.


Было бы неплохо технологию описать в нормальном виде.
Мне, например, не совсем очевидно как без прослоек отдавать браузеру HTML через web-сервис. При этом надо ведь выдавать правильные ссылки на доп.ресурсы, которые, судя по схеме, хранятся только в базе.
Без этого статья похожа на предварительную рекламу продукта :).
12. Роман Ложкин (webester) 01.05.14 09:44
Смотрите как я умею. Подробностей не будет, кода тоже... просто хвастаюсь.
shalimski; qwinter; +2 Ответить 1
13. Станислав Копылов (ksuman) 01.05.14 13:07
Как демонстрационный наглядный пример - показательно. Но на практике, в сайтах должна присутствовать автономность. И вообще не представляю как тормозная, начиная с версии 8.3, платформа реально может быть движком сайта. Есть много отлаженных и оптимизированных по производительности движков сайтов. Стоит ли тратить время на бесполезную работу.
Советую вам на данном этапе остановиться и переключиться на практические задачи.
DrAku1a; bovka; omut; +3 Ответить 1
14. SourceMan (SourceMan) 01.05.14 22:16
Это жестоко! Зачем делать из 1С то, для чего она совсем не предназначена? Что будет с таким сайтом - когда в онлайне будет 100 посетителей?
15. Александр Орефков (orefkov) 02.05.14 22:15
При желании, конечно, можно и зайчика научить курить, но будет ли от этого ему польза или удовольствие?
DrAku1a; Steelvan; Aleksey.Bochkov; +3 Ответить 1
16. ivanov660 ivanov660 (ivanov660) 02.05.14 22:51
Не вижу смысла создавать веб сайты на 1С. Учтем, что при использовании 1С через веб на одно соединение требуется 1 лицензия. Теперь прикинем нагрузку среднего сайта, то получим большое число соединений и соответственно лицензий.
17. Александр (AlexandrIII) 03.05.14 09:01
(15) orefkov, А это будет в последней серии "Ну погоди!" :)
18. majmyl Hauanov (majmyl) 04.05.14 21:41
(16) ivanov660, это очень интересная метода. Во первых при ws соединениях клиент потребляет лицензию только при получении данных, а потом сразу отваливается. Во вторых, возможно создавать веб сайты на 1С не очень разумно (во всяком случае пока), но зато можно на корпоративном сайте сделать страничку, который будет получать прайс лист из 1С в онлайне или любую другую информацию.
Puk2; adhocprog; +2 Ответить 1
19. Сергей Лосников (Lars Ulrich) 05.05.14 10:30
(11)(12) на рекламу не претендуем, а просто обозначаем направление, которое кому-то может пригодиться :) хотя, чего скрывать, было бы интересно узнать востребованность подобного решения.

(13)(14) на Инфостарте можно найти достаточное количество публикаций, к которым применим вопрос "зачем?", тем не менее идеи используются.

(16) как верно уже отмечено в (18) лицензия съедается только в момент отработки запроса сервисом, а затем освобождается, так что количество лицензий потребуется рассчитывать исходя из потенциального одномоментного количества обращений. в любом случае, безусловно, это не решение для большого публичного сайта. скорее, как опять же верно заметил majmyl, для корпоративных нужд.

2ALL FYI приведенный в публикации демо-пример работает на следующей инфраструктуре: IIS точки входа и рабочая станция, с которой выполняется обращение к сайту, в одной локальной сети в Москве; IIS сервиса 1С + сервер 1С, сервер SQL - в ЦОДе в Германии (все сервера боевые, под рабочей нагрузкой); время загрузки страницы при серфинге по сайту около секунды.
adhocprog; +1 Ответить
20. Максим Кузнецов (Makushimo) 07.05.14 12:44
Круто.
жаль. нечего скачать и поковыряться.
21. Ivan Khorkov (vano-ekt) 30.05.14 09:44
да нечего таv ковырятся... а с выходом http-сервисов в платформе и вэбсервер - лишнее звено :)
генератор аштиэмэль какой-то) где пользователи? где управление модулями и правами? какая это cms?)
22. Дмитрий Котельников (kotlovD) 03.06.14 09:48
Нормальная тема! Зрите в корень - можно автоматом генерить html-страницы на основе данных из 1С-ки, пусть и статичные, но для описания карточки товара этого вполне достаточно. И про какую нагрузку на сайт Вы говорите??? Это же тупо html. Схема работы такая: сгенерил страницы - выгрузил по ftp на сайт и никаких обменов. Плюсую...
23. Виктор Ерусланов (erus88) 05.07.14 07:38
Крутая идея, особенно если если на основе сделать интернет магазин. тогда все конкуренты будут курить в сторонке.
так как все учет будет вестись в Ске.
24. Константин Матвеев (koka) 03.09.14 15:20
Поддерживаю идею. Это будет круто для небольших интернет-магазинов.
25. Дмитрий Башинский (bashinsky) 26.09.14 10:40
А где имя пользователя, пароль? Базу дал, а список пользователей при запуске скрыт.
26. Сергей Лосников (Lars Ulrich) 26.09.14 11:11
(25) Упс, пардон. Базу в публикацию перезалил.
27. serge_focus (serge_focus) 07.12.14 12:35
CSM на базе 1С - идея конечно прекрасная. И рынок у подобной CSM за счет интернет-магазинов огромнейший.
Но есть масса НО...
Главное но это производительность Web-сервисов 1С. Поэтому коммерческий охват этого рынка будет возможен только кардинальной переработки работы с Web-сервисами платформы 1С.
Конечно в платформе 8.3.5 в этом направлении сделано много. Но пока еще недостаточно.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа