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

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:Бухгалтерия Платные (руб)

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

3600 руб.

02.09.2010    77826    73    257    

191

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

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

3000 руб.

12.05.2020    29157    139    100    

92

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

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

1500 руб.

17.09.2018    37163    115    128    

116

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

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

2400 руб.

25.06.2024    1331    3    4    

3

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

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

14.01.2025    2722    bayselonarrend    14    

48

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

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

04.12.2024    5480    kovalevdmv    26    

77

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

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

26.01.2024    7898    starik-2005    40    

47
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
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 8276 26.08.15 12:07 Сейчас в теме
(6) dll подключить пока нельзя, но это сделать очень легко будет. Я включу это в очередную версию.
задачу создал: https://bitbucket.org/EvilBeaver/1script/issues/167/dll
9. Evil Beaver 8276 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 8276 26.08.15 12:08 Сейчас в теме
Кстати, добавьте, пожалуйста в статью ссылку на сайт http://oscript.io
И, кстати, в oscript есть поддержка cgi. Если запустить его с ключом -cgi, то доступен класс ВебЗапрос и у него соответствия переменных для GET POST и SERVER
Я это показывал на прошлом infostart event. Спасибо за интерес к проекту!
Оставьте свое сообщение