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

21.08.15

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Архив с библиотекой. Распаковать в папку lib
.zip 289,49Kb ver:0.0.1
28
28 Скачать (1 SM) Купить за 1 850 руб.

В мире 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с

См. также

Разработка внешних компонент Программист Платформа 1С v8.3 1C:Бухгалтерия 1С:Управление торговлей 11 Платные (руб)

Внешняя компонента для конвертации PDF файлов в картинки без использования дополнительных программ. Работает на сервере и в тонком клиенте.

2400 руб.

25.06.2024    1281    3    4    

3

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

Позволяет автоматизировать работу с картинками. С помощью компоненты можно измерять размер изображений, поворачивать их, наносить водяные знаки, конвертировать из одного формата в другой. Будет очень полезна для интернет-магазинов и всех, кому постоянно требуется работать с различными графическими форматами. Выполнена по технологии NativeAPI. Работает с форматами: jpg (jpeg), png, bmp, gif, tif

3600 руб.

02.09.2010    77743    73    257    

191

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

Внешняя компонента, позволяющая посылать команды и получать ответы по GraphQL протоколу из 1С.Может быть использована при интеграции. В 1С работает на стороне "клиента".

4600 руб.

27.06.2023    3752    3    0    

5

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

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

1500 руб.

17.09.2018    36984    115    127    

115

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

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

2400 руб.

04.05.2018    47560    124    66    

67

Разработка внешних компонент Системный администратор Программист Стажер Бесплатно (free)

Библиотека для работы с базами SQLite из 1С на основе внешней компоненты. Для Linux и Windows, бесплатно и с открытым исходным кодом!

14.01.2025    2554    bayselonarrend    14    

48

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

В статье описывается приложение-конструктор внешних компонент (native API). Конструктор упрощает процесс разработки за счет удобного добавления всех нужных функций и процедур в графическом режиме, с указанием их параметров и типов параметров. На выходе приложение генерирует готовый код на С++ и Rust и позволяет сразу приступить к реализации, без настройки API компоненты вручную.

04.12.2024    5287    kovalevdmv    26    

77
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. DoctorRoza 24.08.15 09:18 Сейчас в теме
Очередной источник ошибок и релизов платформы. Но (+) однозначно!
2. Alien_job 192 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 463 26.08.15 08:06 Сейчас в теме
6. nextkmv 129 26.08.15 09:40 Сейчас в теме
(5) kuntashov, это очень круто. Интересно а можно как нибудь подключить к oneScript dll библиотеку написанную на c#, не прибегая к перекомпиляции самого oneScript?
7. Evil Beaver 8270 26.08.15 12:07 Сейчас в теме
(6) dll подключить пока нельзя, но это сделать очень легко будет. Я включу это в очередную версию.
задачу создал: https://bitbucket.org/EvilBeaver/1script/issues/167/dll
9. Evil Beaver 8270 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 8270 26.08.15 12:08 Сейчас в теме
Кстати, добавьте, пожалуйста в статью ссылку на сайт http://oscript.io
И, кстати, в oscript есть поддержка cgi. Если запустить его с ключом -cgi, то доступен класс ВебЗапрос и у него соответствия переменных для GET POST и SERVER
Я это показывал на прошлом infostart event. Спасибо за интерес к проекту!
Оставьте свое сообщение