Что нам стоит сайт построить

21.08.15

Разработка - Разработка внешних компонент

Многие знают, что платформа 1С:Предприятие "технически" позволяет написать сайт. Но для этого нужна платформа и клиентские лицензии на каждое подключение. А вы знаете, что можно написать "простой" сайт на знакомом нам языке, без необходимости устанавливать платформу и приобретать клиентские лицензии, и все благодаря одной замечательной opensourse разработке из мира 1С? Интересно? Тогда прошу под кат.

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

Наименование Файл Версия Размер
Архив с библиотекой. Распаковать в папку lib
.zip 289,49Kb
28
.zip 0.0.1 289,49Kb 28 Скачать

В мире WEB все развивается очень бурно. Огромное количество языков, фреймворков и пр., а самое удивительное (со стороны одинесника), что очень много opensourse. В мире 1С очень мало проектов, свободно развивающихся группами независимых разработчиков, так что каждый может внести вклад в общее дело и воспользоваться общими благами (Да! Я знаю, что Инфостарт - кладезь невероятного количества программ, но это не opensourse). 

И вот недавно я обнаружил замечательный проект OneScript http://oscript.io или https://bitbucket.org/EvilBeaver/1script/wiki/Home. Не буду детально описывать возможности этого проекта, тем более что он активно развивается, все довольно неплохо описано в wiki проекта. Первый вопрос, который у меня возник при изучении данного проекта, "а есть ли здесь графический интерфейс?". Но его здесь не было. Тогда у меня возник другой вопрос "а есть ли здесь возвожность обращаться посредством http?". Но готового http сервера в комплекте не оказалось, зато в наличии был простой однопоточный  TCP сервер. 

Кто не знает, HTTP это надстройка над протоколом TCP. А это значит, что, используя класс TCP сервера, можно реализовать HTTP сервер. Причем не Си, не на Java и даже не на C#, а на всем нам знакомом языке 1С, ну или его свободной реализации onescript.

Архитектура

Честно говоря, сначала я пытался подружить скрипты oneScript с web сервером Appache Httpd посредсвом CGI. Но для этого нужно было вносить изменения в сам oneScript и реализовывать поддержку интерфейса CGI, и вообще это уже давно не модно. Поэтому я обратился к web технологиям, где все уже давно реализовано.

За пример архитектуры был взят проект node.js. Очень крутая и похожая по архитектуре вещь. Node.js реализует http сервер на языке javascript, благодаря особенностям js и не блокирующему вводу выводу сервер на node.js позволяет обрабатывать множество запросов. Хотя в oneScript и нет неблокирующего ввода вывода, реализовать похожий сервер можно.

В конечном итоге должен был получиться локаничный код для запуска сервера.

Сервер = Новый vServer();
Сервер.Порт = 1234;
Сервер.Хост = "http://localhost/";
Сервер.Слушать();

Это была бы точка входа в приложение. Здесь мы инициализируем параметры нашего сервера и вызываем метод "Слушать". Далее в силу вступает собственно реализация https сервера. 

Далее управление переходит к методу Слушать объект vHttpServer, где сервер ожидает поступления нового запроса. 

После поступления нового запроса, сервер обрабатывает запрос и создает объекты vHttpЗапрос, vHttpОтвет содержащие информацию о запросе, и заготовку для ответа.

Данный объект передается в объект vHttpRouter, для маршрутизации. Если клиент запросил файл из папки /resource, то отдаем файл из папки, иначе ищем контроллер и метод, а если они не найдены, выдаем 404 ошибку.

Далее в дело вступает контроллер, который получает данные из модели и читает представление (view), заполняет его данными из модели и возвращает его в объект vHttpОтвет.

Далее я опишу структуру каталогов:

Структура файлов

Test.os - Собственно точка вход в приложение.

vServer.os - реализация сервера vServer.

vHttpЗапрос.os - при получении запроса наш сервер создает объект типа vHttpЗапрос, в котором содержатся все данные, пришедшие в запросе в удобном виде, а именно: сырой текст запроса, структура Заголовок, содержащая праметры запроса, имя контроллера, имя метода, и переданные параметры.

vHttpОтвет.os - этот объект содержит всю необходимую информацию для возврата его клиенту.

vHttpRouter.os - здесь следует описать всю маршрутизацию, то есть указать, что при обращении по адресу /Home/Index следует создать объект контроллера Home и вызвать его метод Index, в контроллер передаются два параметра vHttpЗапрос и vHttpОтвет. 

vHttpTemplate.os - Объект для удобства вывода HTML.

Папка controllers - Содержит контроллеры,

Папка views - Содержит представления, грубого говоря, HTML разметку

Папка models - Содержит модели, в которых организован доступ к данным. Под данными здесь понимается, например, подключение к 1С предприятие через COM, чтение из xml или текстового файла. Доступ к БД  в oneScript пока не организован.

Папка resource - Содержит файлы *.js, *.css, *.jpg и другие файлы, которые могут быть переданы клиенту. При этом на сайте адрес будет выглядеть http://localhost:1234/resource/cat.jpg.

Для придания симпатичного вида использован framework Bootstrap 3.


Установка

  1. Сначала скачайте и установите OneScript на свой компьютер, желательно установить окружение(Notepad++ с плагинами) согласно этой статье //infostart.ru/public/327581/.
  2. Распакуйте в папку /OneScript/lib/ библиотеку vHttpServer.
  3. Убеждаемся, что порт 1234  свободен.
  4. Открываем в Notepad++ /models/message.os 
  5. В процедуре Инициализировать указываем путь к файлу, в котором будут храниться сообщения. Это простой xml файл.
  6. Открываем в Notepad++ Test.os и жмем F6.
  7. В открывшемся окне пишем oscript "$(FULL_CURRENT_PATH)"
  8. Жмем ОК.
  9. Открываем http://localhost:1234/
  10. Смотрим результат.

Как использовать

Данная разработка - лишь иллюстрация возможностей. Поскольку сервер однопоточный, он не выдержит большой нагрузки, да и стандартная библиотека oneScript пока не позволяет сделать что-то сверх сложное. Однако настроить удаленный доступ к какому нибудь файлу, сделать учет заявок или доступ к 1С через com вполне реально.

Перед разработкой собственного функционала сначала изучите, как работает библиотека, посмотрев файлы vServerHttp, vRouter, контроллеры, модели и представления. Все очень просто и описано в архитектуре.

Жду ваших вопросов предложений и замечаний

Если у сообщества возникнет интерес, могу продолжить работу над этим проектом, сделав более удобную библиотеку для работы с web.

Так же исходный код доступен на github: https://github.com/nextkmv/vServer/ можете вносить изменения.

OneScript Web сервер http MVC Сайт на 1с

См. также

Медиадисплей. Рекламный информационный монитор для покупателя.

Разработка внешних компонент POS терминал Рабочее место Розничная торговля Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Рестораны, кафе и фаст-фуд Реклама, PR и маркетинг Управленческий учет Платные (руб)

Монитор покупателя может отображать текущую покупку на кассовом месте, показывать видеорекламу, баннеры, во время простоя разворачивать рекламу на весь экран. Можно использовать в качестве графического меню-борда в кафе и видеовывески. Управление выводом на телевизор через hdmi-приставку на базе Windows или Android. В качестве устройства отображения можно использовать Android-планшеты, фоторамки с Android, монитор любого Windows-компьютера, доступного по сети. Настраивается ЛЮБОЙ ДИЗАЙН экрана!

16800 руб.

30.05.2017    52116    34    69    

43

Внешняя компонента для сканирования (замена TWAIN-компоненты БСП) (Native Win 32/64)

Разработка внешних компонент Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Внешняя компонента позволяет работать c TWAIN-совместимым оборудованием (сканерами, камерами) . Полностью совместима со стандартной TWAIN-компонентой из БСП и может применяться как ее замена без изменения вызовов, при этом может работать с 64-разрядной платформой, а так же имеет расширенную функциональность, например, сохранение результата непосредственно в PDF без использования сторонних утилит. Прекрасно работает на сервере, тонком клиенте и веб-клиенте (проверена работа в браузерах Google Chrome, Mozilla Firefox и Microsoft Internet Explorer).

2400 руб.

12.05.2020    26253    131    99    

83

Внешняя компонента для подключения 1С к телефонии Asterisk

Разработка внешних компонент Телефония, SIP Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Внешняя компонента выполнена по технологии Native API для 1С 8.х, обеспечивает доступ к программным АТС Asterisk (FreePBX, Elastix) через AMI интерфейс. Через него можно управлять многими функциями Asterisk (определение номеров, перевод звонков, набор телефона и т. д.)

2400 руб.

04.05.2018    44988    117    64    

60

Внешняя компонента печати PDF (Native Win 32/64)

Разработка внешних компонент Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Внешняя компонента позволяет печатать PDF файлы непосредственно из 1С, не используя при этом сторонних программ. Прекрасно работает на сервере, тонком клиенте и веб-клиенте. Основана на проекте PDFium из состава проекта Chromium/Chrome

1500 руб.

17.09.2018    35089    104    123    

111

Мастер создания внешних компонент 1С (технология COM) для DELPHI 6/7/8/2005/2006/2007/2008/2010/XE/XE2/XE3

Разработка внешних компонент Платформа 1С v8.3 Платные (руб)

Средство для сверхбыстрой разработки внешних компонент 1С:Предприятия 7.7 и 8 по технологии COM на всех версиях DELPHI, начиная с 6.

2000 руб.

28.03.2013    54006    35    14    

68

QR-код с логотипом компании (обычная и управляемая форма)

Разработка внешних компонент Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Платные (руб)

Как известно, стремление сделать свою рекламную продукцию запоминающейся и выделяющейся — верный путь к успеху. Сегодня, мы поговорим с вами о том, что можно сделать с обычным черно-белым QR-кодом, чтобы он стал более живым и привлекательным. Если вам не терпится попробовать сделать QR-код с логотипом компании, то эта обработка для вас!

2400 руб.

22.06.2016    30844    4    4    

8

Внешняя компонента 1С и С++. Продолжаем разговор.

Разработка внешних компонент Платформа 1С v8.3 Бесплатно (free)

А давайте запилим 8.3.26 до релиза, или оповещение с сервера...

19.02.2024    4044    starik-2005    28    

52

Внешние компоненты 1С и язык C++

Разработка внешних компонент Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Некоторые практические аспекты создания внешних компонент на языке С++ для платформы 1С 8.3++.

26.01.2024    4787    starik-2005    32    

39
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. DoctorRoza 24.08.15 09:18 Сейчас в теме
Очередной источник ошибок и релизов платформы. Но (+) однозначно!
2. Alien_job 190 25.08.15 06:10 Сейчас в теме
(1) DoctorRoza, тут платформа с её релизами вроде бы не причем

А веб-сокеты и менеджер пакетов еще не запилили случайно?
4. nextkmv 129 25.08.15 10:49 Сейчас в теме
(2) Alien_job, технология web-сокетов предполагает работу с большим количеством одновременно открытых соединений, поскольку данная библиотека реализует однопоточный http сервер то использовать ее для реализации web-сокетов не возможно, по крайней мере пока библиотека OneScript не станет поддерживать многозадачность.
Идеи о реализации менеджеров пакетов обсуждаются разработчиками OneScript, однако явных реализаций пока нет. В прочем явной реализации пока нет.
5. kuntashov 449 26.08.15 08:06 Сейчас в теме
6. nextkmv 129 26.08.15 09:40 Сейчас в теме
(5) kuntashov, это очень круто. Интересно а можно как нибудь подключить к oneScript dll библиотеку написанную на c#, не прибегая к перекомпиляции самого oneScript?
7. Evil Beaver 8108 26.08.15 12:07 Сейчас в теме
(6) dll подключить пока нельзя, но это сделать очень легко будет. Я включу это в очередную версию.
задачу создал: https://bitbucket.org/EvilBeaver/1script/issues/167/dll
9. Evil Beaver 8108 26.08.15 12:45 Сейчас в теме
(2) Alien_job,
менеджер пакетов еще не запилили случайно

Менеджер пакетов пилится прямо на языке 1С, поэтому вы тоже можете подключиться и внести вклад: https://github.com/EvilBeaver/oscript-library/tree/feature/packer/src/opm/src
3. nextkmv 129 25.08.15 10:38 Сейчас в теме
(1) DoctorRoza, данная библиотека не связана с платформой 1С:Предприятия, она основана на проекте OneScript который в свою очередь является альтернативной реализацией виртуальной машины, исполняющей скрипты на языке 1С:Предприятие. Это значит что для работы этой библиотеки вам не нужна платформа 1С:Предприятия, только библиотека OneScript. В принципе исходный код можно адаптировать для работы с платформой 1С:Предприятия, но на мой это не имеет смысла, так как в платформе есть специально предназначенные для этого механизмы. Например Http сервисы.
8. Evil Beaver 8108 26.08.15 12:08 Сейчас в теме
Кстати, добавьте, пожалуйста в статью ссылку на сайт http://oscript.io
И, кстати, в oscript есть поддержка cgi. Если запустить его с ключом -cgi, то доступен класс ВебЗапрос и у него соответствия переменных для GET POST и SERVER
Я это показывал на прошлом infostart event. Спасибо за интерес к проекту!
Оставьте свое сообщение