1Script.Web. Интернет-приложения на языке 1С

20.05.19

Интеграция - WEB-интеграция

Запросы рынка таковы, что любое современное клиент-серверное приложение должно иметь веб-интерфейс. Почему бы не писать такие приложения на языке 1С? Андрей Овсянкин расскажет о возможностях разработки веб-приложений на базе 1Script, рассмотрит перспективы этого направления и в качестве демонстрации покажет «боевое» веб-приложение на новом движке – кроссплатформенную консоль администрирования парка кластеров 1С.

Я расскажу вам про интернет-технологии и их возможное будущее в мире 1С.

 

Ситуация с интернет-технологиями в 2018 году

Мы живем в удивительное время – сейчас нет таких приложений или устройств, которые бы не работали с интернетом. Интернет-технологии и протокол HTTP – повсюду. Куда ни глянь, в любом месте – везде вы наткнетесь на интернет.

Основной тренд интернет-технологий в 2018 году:

  • Растет популярность концепции микросервисов – маленьких приложений, которые независимы, масштабируемы и т.д. и общаются по HTTP.

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

  • И, что самое интересное, всех этих сервисов нужно все больше и больше – аппетит приходит во время еды. Эта тенденция будет только расти и расти. И скоро уже, наверное, в вилке или в ложке будет стоять какой-нибудь веб-сервер.

 

Потребность в HTTP-приложениях

Как я уже сказал, потребность в HTTP-приложениях растет. Какими они вообще могут быть?

  • Это могут быть сайты;

  • Сервера с веб-интерфейсами;

  • Админские приложения и инструменты – те же Zabbix, Jenkins – у них у всех есть веб-интерфейс.

Современные приложения, как правило, уже не десктопные. Они уже работают в браузере, и в будущем, на мой взгляд, все будет только больше и больше уходить в веб.

Поэтому, если вам в вашей системе 1С нужно что-то сделать интересное, классное, привлекательное для клиентов – вам тоже, скорее всего, придется смотреть в сторону HTTP-протокола и веб-приложений.

  • Например, вам может потребоваться какой-то красивый современный веб-интерфейс к 1С.

  • Или вам может потребоваться какая-то витрина данных для удаленного филиала, где можно заполнить какие-то три поля, чтобы подать заявку в Service Desk. Это может быть всего лишь одна формочка – отправлять эти данные в 1С может быть даже избыточно.

  • Потребность в HTTP-приложениях в любом случае есть, она понятна, вам всегда может потребоваться что-то, что взаимодействует по HTTP. Обычно для таких вещей приходится привлекать сторонние команды разработчиков, которые знают JavaScript, PHP, NodeJS, т.е. какой-нибудь фреймворк, который умеет вашему приложению (например, вашей 1С) отвечать по HTTP-протоколу. Получается, что вам приходится нанимать веберов и зависеть от них, а они начинают хитрить, говорить, что им некогда, что это стоит много денег и т.д.

  • Но мы, как 1С-ники, можем реализовать такие приложения сами – нам для HTTP-приложений не нужны Node.js-еры или питонщики. Цель этого доклада – рассказать о том, как мы можем делать все это сами.

Типичный пример – у бизнеса появляется классная идея сделать слушалку для запросов клиентов, которая будет по HTTP из базы 1С возвращать какие-то JSON-чики. И ваш заказчик просит вас такую сделать.

Вы говорите – я могу сделать HTTP-сервис на 1С, захостим на наших мощностях, все будет отлично.

Вам говорят – нет, он должен хоститься в Амазоне или в облаке Azure, чтобы был доступ по всему миру – как мы туда 1С прокинем? Нам нужно что-то полегче, чем 1С.

Вы говорите – тогда нужно на Python или на NodeJS писать – я это не умею.

Бизнес говорит – ну придумай что-нибудь, ты же 1С-ник, ты должен уметь все.

И мы начинаем думать, какой инструмент веб-разработки нам, как 1С-никам, подошел бы.

 

История разработки OneScript.Web

Сейчас хочется немного истории.

  • В 2014 году я на конференции Инфостарта презентовал любопытный инструмент, который я написал. Этот инструмент я назвал OneScript. На тот момент мне хотелось просто поделиться с сообществом тем, что есть такая любопытная штука, с которой можно делать разные интересные вещи.

  • В 2015 году инструментом OneScript заинтересовались в одном крупном федеральном ритейлере, и мы в этой компании начали активно его применять. Это дало очень большой позитивный выхлоп. Впоследствии инструменты, которые там родились, вышли в мир OpenSource.

  • 2016-2017 год. Продукт начал широко развиваться – родилось большое количество решений, написанных с его помощью. OneScript стал широко известен в сообществе.

  • По состоянию на сегодняшний день «знание OneScript» – это отдельный навык, который можно встретить в резюме.

  • По сути, мы вместе с вами, с сообществом OpenSource-разработчиков 1С, создали внутри нашей отрасли отдельную отрасль «автоматизации автоматизаторов», продвигая в среде 1С-специалистов такую концепцию, как DevOps.

  • Сегодня OneScript, как инструмент, применяется уже в сотнях компаний, причем, как правило, в крупных, потому что им это нужнее. В мелких компаниях не особо нужно себя автоматизировать, а когда баз становится много, там уже без автоматизации никуда.

  • Мы настроены серьезно и будем продолжать расширять наш инструментарий.

И сегодня я так же, как и в 2014 году, хотел бы анонсировать новый продукт на базе OneScript, который называется OneScript.Web. Это рабочее название. Возможно, кто-то предложит более классное, но пока оно такое.

  • Как я уже говорил, потребность в HTTP-приложениях огромна, рынок требует, чтобы они были.

  • Нам нужно научиться писать их самим, чтобы не зависеть от каких-то сторонних веб-разработчиков – мы можем делать это сами.

  • Причем, это не только сайты, это, скорее, веб-приложения или какие-то REST-сервисы, но и сайты в том числе.

  • Самое главное, что теперь появился инструмент написания веб-приложений на языке 1С.

 

Архитектура фреймворка 1Script.Web

Как я уже говорил, OneScript.Web сделан на базе уже известного инструмента OneScript.

Архитектурно он основан на кроссплатформенном веб-фреймворке от Microsoft ASP.NET MVC – поэтому, благодаря новому .NET Core, абсолютно кроссплатформенный, будет работать на любых linux-системах и даже в докер-контейнерах.

Иными словами, OneScript.Web – это MVC-фреймворк, которым можно управлять с помощью кода 1С.

 

Подход MVC

Как работает протокол HTTP? У вас есть некий браузер, в котором клиент в адресной строке что-то вбивает, этот запрос уходит на сервер, там он обрабатывается, и обратно в браузер возвращается ответ. Так работают абсолютно все HTTP-приложения.

И подход MVC – это такой подход к проектированию веб-приложений, когда внутри этого «черного ящика»-сервера обработка HTTP-запроса поделена на три части – модель, контроллер и представление (Model, View и Controller), каждая из которых отвечает за свою осмысленную деятельность.

Если упрощать и возвращаться к 1С, то:

  • Модель – это предметная область, метаданные, то, чем наше приложение вообще занимается. Это какие-то описания реального мира – контрагенты, номенклатура, что угодно.

  • View – это представления, формочки, то, что видит на экране пользователь.

  • А Controller – это входная точка обработки, с которой все начинается. Чаще всего, это либо HTTP-сервис, либо обработчик команды в модуле формы. Прямого аналога в мире 1С нет.

 

URL – основа навигации по приложению

Взаимодействие с удаленным веб-приложением всегда строится вокруг URL – именно он является «точкой входа» для получения от приложения какой-то информации.

Как правило, URL выглядит следующим образом: есть имя сервера, и дальше через какие-то сегменты (разделы) вы осуществляете навигацию внутри приложения.

Эти сегменты URL можно представить как некие классы внутри приложения, у которых есть методы. То есть, какой-то клиент по этому адресу может запросить у определенного класса вашего приложения вызов определенного действия.

Как вы можете ответить на этот запрос в приложении, написанном на OneScript.Web?

Чтобы запрос по этому адресу смог обрабатываться в вашем коде 1С, вам нужно просто добавить в ваше приложение модуль с соответствующим названием и реализовать в нем обработку этого метода. Например, вы можете создать в модулях приложения контроллер обработки заказа – файл orders.os с методом Details и каким-то параметром этого метода.

Все это довольно гибко настраивается, для этого существует схема шаблонизации:

  • Вы задаете в приложении один или несколько шаблонов маршрута, по которым ваше приложение будет отвечать.

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

  • Если в адресной строке будет вбит URL, который не совпадает с шаблоном, программа будет автоматически отвечать «404 Не найдено».

  • А в случае совпадения с шаблоном запрос будет попадать в ваш код – в соответствующий метод контроллера.

Вот так это работает.

 

Инициализация приложения

Как происходит инициализация приложения?

Вспомним картинку с браузером – HTTP-запрос пролетает некий конвейер. Пришел запрос, как-то обработался, и возник ответ. За то, как этот запрос обрабатывается, отвечает конвейер обработки запроса.

Этот конвейер состоит из кубиков, которые по-английски называются Middleware (софт, который посередине). Я не знаю, как перевести это слово на русский, дам шоколадку тому, кто скажет хороший перевод этого слова на русский язык.

Так вот, путь обработки запроса строится из блоков, кубиков конвейера.

  • Например, приходит HTTP-запрос.

  • Если в нем есть обращение к какому-то статическому файлу на диске, этот файл сразу отдается клиенту. Например, пришел запрос к картинке, которая есть на диске – она отдается клиенту.

  • Дальше проверяется логин-пароль.

  • И, если запрос попадает в шаблонный URL, клиенту возвращается ответ.

Как настроить такой конвейер?

  • В фреймворке есть модуль приложения, и в нем, как в настоящей 1С, есть инициализирующая процедура «ПриНачалеРаботыСистемы».

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

На скриншоте показано, как с помощью кода построить конвейер, который был описан на предыдущем слайде.

Первые две строчки я могу поменять местами. Например, мы не хотим отдавать картинки кому попало, мы хотим, чтобы всегда спрашивался пароль, а только потом отдавались картинки. Тогда мы первые две строчки просто поменяем местами, чтобы у нас сначала спрашивался пароль.

Тогда конвейер будет выглядеть следующим образом:

  • Сначала авторизация;

  • Потом проверка на отдачу статики;

  • И затем бизнес-логика.

Конвейер обработки можно строить любым образом – например, мы можем вообще выкинуть весь этот MVC и просто отдавать статические файлы по паролю – тогда мы можем построить конвейер так, как на слайде.

Соответственно, в процедуре «ПриНачалеРаботыСистемы» мы решаем, что вообще будет делать наше веб-приложение – будет ли в нем нужна авторизация, маршрутизация и пр.

 

Вызов методов приложения. РезультатДействия

А что же такое Контроллер? Это, как я уже говорил, входная точка, которая обрабатывает запрос.

По сути, это модуль 1С, у которого есть экспортные методы. Все экспортные методы вашего модуля-контроллера доступны извне – внешняя система по URL может вызвать любой экспортный метод вашего контроллера.

Например, метод-действие Details возвращает некое представление – вьюшку «КарточкаТовара». Это – экспортный метод, который вызывается по URL в браузере.

Запрос приходит в контроллер, в нем выполняется некое действие и возвращается результат этого действия, как отдельный объект.

Что такое «Результат действия»? Это – базовый тип для различных вариантов ответа клиенту. Нам необязательно отвечать клиенту именно HTML-страничкой:

  • Мы можем отдать ему с сервера какой-то файл на скачивание;

  • Мы можем ответить ему каким-то JSON или XML;

  • Мы можем просто возвращать коды ошибок – «Не найден», «Не авторизован» и т.д.

HTTP-приложения традиционно отвечают разным типом содержимого. Для каждого из таких типов содержимого в системе предусмотрен отдельный объект:

  • РезультатДействияСодержимое;

  • РезультатДействияФайл;

  • РезультатДействияПредставление;

  • РезультатДействияКодСостояния и т.д.

Контроллер должен вернуть один из таких результатов действия. Это сделано для разделения ответственности, потому что формирование и отправка ответа – это разные действия.

 

Как верстать страницы?

Итак, самое интересное – как же верстать HTML-страницы?

Понятно, что мы можем ответить XML-кой, но интересно строить еще и интерфейс – красивые формы, чтобы там все было модно-молодежно и т.д. И это – самая сложная часть, потому что мир фронтэнда крайне разнообразен.

  • Существуют тысячи фреймворков и способов формирования веб-интерфейса (HTML-интерфейса). И выбрать какой-то, который был бы прост для вхождения 1С-ников, достаточно сложно – потому что все это выглядит очень низкоуровневым. Вообще, HTML и CSS – это, по сути, язык ассемблера, они очень низкоуровневые, очень избыточные. И мыслить в терминах HTML и CSS – это трудоемко. Нужно что-то более высокоуровневое.

  • Например, уже сейчас с помощью различных JS-фреймворков типа React, Angular и пр. вы можете строить Single Page Application, передавая им на вход JSON-чики, сформированные с помощью Oscript.Web, а какие-то JavaScript-еры вам будут писать интерфейс на Angular.

  • Как я уже говорил, рынку требуется построение фронтэнд-а для 1С. Поэтому мы в «Серебряной пуле» ведем свои исследовательские работы по теме «Фронтэнд для 1С-ников» – об этом вчера рассказывал Алексей Лустин.

  • Также есть доклад Игоря Антонова, который рассказывал, как строить интерфейсы для 1С на React – вы также можете применить его наработки.

И сейчас движок OneScrip.Web предлагает для верстки страниц родной ASP-шаблонизатор, который называется Razor. Он достаточно простой, легковесный и мощный, представляет собой HTML-страницу с вкраплениями кода на C#. Поскольку это родной движок от Microsoft, в него ничего дополнительно не прикручено, поэтому русскоязычная документация, которая есть на сайте Microsoft полностью соответствует тому, что вы можете делать с веб-движком OneScript с помощью Razor.

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

В эту вьюшку передается некий объект языка 1С, который нужно вывести, например, это может быть таблица значений или структура.

И дальше внутри Razor-овской вьюшки вы можете работать с этим объектом, как со структурой – через @ можете обращаться к методам класса 1С, перебрать строки, колонки с помощью цикла «Для каждого из» – что угодно.

Сейчас развитие фреймворков, особенно WebAssembly, идет семимильными шагами.

  • Мы уже можем уйти от HTML и верстать так, как показано на слайде – создавать высокоуровневые компоненты – командные панели, кнопки. Такое можно делать на React или на Blazor.

  • Можно пойти еще дальше и сделать это все через «Новый ВебФронт», о котором рассказывал Алексей.

Вариантов, которые можно было бы применить, очень много. Пока что мы не выбрали какой-то идеальный. Поэтому так же, как это было с обычным OneScript, с OneScript.Web мы тоже рассчитываем на то, что сообщество OpenSource подскажет нам наиболее правильный путь.

 

Работающие приложения. Odminus

Какие уже существуют работающие приложения, которые можно пощупать?

  • Во-первых, существует хранилище готовых пакетов OneScript – то самое облачное хранилище пакетов, с которого мы все, как девопсеры (те, кто занимается DevOps для 1С), скачиваем готовые приложения. У нас есть консольный пакетный менеджер opm, мы набираем в нем «opm install ЧтоНибудь» – и с этого сайта hub.oscript.io скачивается какой-то пакет. Веб-интерфейс хаба пакетов написан на движке OneScript.Web.

  • Кроме того, мы у себя внутри разрабатываем Личный кабинет клиента «Серебряной пули», тоже на OneScript.Web.

  • И существует еще одна почти готовая разработка, которую можно щупать и смотреть – административная консоль кластера 1С. Называется она Odminus. Название канонично написано через «о», потому что правильный «одмин» всегда пишется через «о».

Что такое Odminus?

  • Это – та самая «Административная консоль управления серверами в кластере 1С», но только в браузере.

  • При этом, за счет того, что она использует сервер администрирования RAS, она еще и не зависит от версий платформы.

  • И, самое главное – не требует регистрации COM-компонент. Зачем я вообще начал ее писать? Потому что каждый раз, когда мне нужно было посмотреть сеансы на сервере или завершить какой-то сеанс, мне приходилось перерегистрировать COM-оснастку, потому что сервер, на котором находится нужный мне сеанс – другой версии. Я выходил из себя из-за того, что мне приходилось делать какие-то лишние телодвижения, чтобы что-то поправить. Поэтому я разработал эту веб-консоль. Теперь, чтобы сделать что-нибудь с кластером, мне достаточно просто зайти на страничку в браузере – ничего не устанавливая и не настраивая.

  • Код открытый, его можно дорабатывать – он написан на 1С. Эту веб-консоль уже сейчас можно брать и дописывать исключительно средствами языка 1С, не изучая вообще никаких PHP.

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

Можно зайти на страницу агента кластера – он покажет, где он хостится, какой у него сетевой порт. Это – честная HTML-ная веб-форма – здесь все, как положено.

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

Можно добавить какой-то рабочий сервер, поработать с объектами кластера.

Можно прямо в браузере отрегулировать интервал перезапуска и лимит по памяти.

Бекэндом для приложения Odminus является код на 1С, реализующий обертку к стандартной консольной утилите от фирмы 1С, которая называется RAC (Remote Administration Client).

Я даже не писал эту обертку сам, ее написал Артем Кузнецов – OpenSource рулит. Я просто скачал с хаба opm готовый пакет, который вы уже сейчас можете использовать. С помощью этой обертки я получил готовую объектную модель для управления своими серверами, чтобы просто писать: Кластер.Серверы(), ИнформационнаяБаза.Сеансы() и прочее.

Я просто взял готовое решение и, вызывая его методы в контроллерах своего приложения, рисую такие веб-формочки. В приведенном на слайде куске кода я получаю кластер по ID, передаю объект кластера в формочку, и она рисуется.

Даже без веб-движка, если вам нужно как-то порулить вашим кластером, вы можете скачать эту библиотеку и в объектной модели работать с кластером 1С без COM, на Linux, без регистрации версий и т.д. Я рассказываю это к тому, что в экосистеме пакетов OneScript уже сейчас представлено очень большое количество инструментов, с которыми можно работать.

 

Выгоды и перспективы

Зачем все это нужно?

  • Это все нужно для того, чтобы быстро выводить свое решение на рынок. Если у вас или у вашего бизнеса есть некая идея, но вы понимаете, что вам придется для ее реализации пойти покланяться в ножки команде веб-разработчиков – попросить их сделать для вас маленький HTTP-сервис, который будет что-нибудь отвечать. Чтобы этого избежать, остаться в рамках той же команды и решить свою задачу, не завися не от кого и не прося никого – можете воспользоваться инструментом OneScript.Web. Он даст вам быстрый старт уже имеющейся командой, независимо от смежников.

  • Более того, вам не потребуется лицензия 1С на эти серверы. В 1С каждый HTTP-вызов требует лицензию, а OneScript.Web не требует никаких лицензий. Развернули его на сервере и точно так же отвечаете по HTTP, по REST, какими угодно файликами. Никаких лицензий при этом не требуется.

  • Программируете вы все равно на 1С. Это – тот же самый язык 1С, только несколько библиотечек добавлено сверху.

  • Тут еще и удовольствие, что вы изучаете что-то новое, модное. Как я уже говорил, в каждой кофеварке сегодня стоит веб-сервер. OneScript.Web тоже сделан на базе очень легковесного, контейнеризируемого веб-сервера от Microsoft – Kestrel. Если вы вдруг делаете умную кофеварку с HTTP-сервисом, которым хотите управлять с телефона, вы можете залить в нее код на 1С, и он будет работать, потому что занимает очень мало места. OneScript.Web использует новое ядро ASP.NET от Microsoft, которое как раз заточено под такие легковесные приложения. Поэтому вы можете программировать кофеварки на 1С и оставаться при этом в тренде. Это очень круто, на мой взгляд.

 

Данная статья написана по итогам доклада, прочитанного на конференции INFOSTART EVENT 2018 EDUCATION.

См. также

Сайты и интернет-магазины WEB-интеграция Системный администратор Программист Пользователь Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM разных брендов в одной информационной базе в ручном и автоматическом режиме.

36000 руб.

03.08.2020    18022    18    22    

17

Сайты и интернет-магазины Интеграция WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Управленческий учет Платные (руб)

Интеграция 1С и Битрикс 24. Разработка имеет двухстороннюю синхронизацию 1С и Bitrix24 задачами. Решение позволяет создавать пользователя в 1С из Битрикс24 и наоборот. Данная разработка технически подходит под все основные конфигурации линейки продуктов 1С:Предприятие 8.3 (платформа начиная с 8.3.23). При приобретении предоставляется 1 месяц бесплатных обновлений разработки. Доступна демо-версия продукта с подключением Вашего Битрикс24

7200 руб.

04.05.2021    20165    13    19    

18

WEB-интеграция 8.3.8 Конфигурации 1cv8 Автомобили, автосервисы Беларусь Украина Россия Казахстан Управленческий учет Платные (руб)

Расширение предназначено для конфигурации "1С:Предприятие 8. Управление Автотранспортом. ПРОФ". Функционал модуля: 1. Заполнение регистров сведений по подсистеме "Мониторинг", а именно: события по мониторингу, координаты по мониторингу, пробег и расход по мониторингу, текущее местоположение ТС по мониторингу 2. Заполнение путевого листа: пробег по мониторингу, время выезда/заезда, табличная часть ГСМ, места стоянок по геозонам. 3. Отчеты по данным загруженным в регистры сведений. 4. Предусмотрена автоматическая загрузка данных в фоновом режиме (условия работы данной загрузке читайте в описании товара) Модуль работает без включенной константы по настройкам мониторинга. Модуль формы предоставляется с открытым кодом, общий модуль защищен. Любой заинтересованный пользователь, имеет возможность скачать демо-версию расширения.

22656 руб.

25.05.2021    14565    42    8    

18

WEB-интеграция Программист Руководитель проекта Платформа 1С v8.3 Конфигурации 1cv8 1С:Франчайзи, автоматизация бизнеса Платные (руб)

Расширение значительно упрощает написание API на 1С. Веб программисты получают простой и понятный доступ к 1С. Описание API создаётся автоматически и представляется в виде удобном как для человека, так и для программной обработки.

24000 руб.

27.09.2024    1757    1    0    

3
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. tusv 212 20.05.19 19:21 Сейчас в теме
Когда то игрался с v7script.dll Елы палы работал и без 1с
2. blackhole321 1314 20.05.19 20:22 Сейчас в теме
3. FreeArcher 162 21.05.19 06:03 Сейчас в теме
Может я пропустил, но что будет web сервером выступать IIS или Nginx+PHP тоже можно, какие модули потребуются?

У вас нет образа docker (раз его упоминали) чтобы развернуть быстро и посмотреть действительно это того стоит?
5. ltfriend 21.05.19 08:35 Сейчас в теме
(3) причём тут вообще PHP? А пропустили последний пункт в конце статьи из списка «Зачем все это нужно?». Как я понял, сделано это все на .net core, а там используется свой кроссплатформенный веб-сервер Kestrel. В итоге, как в статье и было сказано, можно использовать хоть на кофеварке. Доп. софта ни какого не нужно. Как вариант, можно дополнительно использовать nginx в качестве обратного прокси для повышения производительности.
Кстати вопрос к автору: как с производительностью?
25. ArchLord42 83 23.05.19 02:50 Сейчас в теме
(5) запросы обрабатываются примерно с такой же скоростью как и чистый asp.net core. Производительность oscript в целом приблизительно равна c#, но не во всех случаях)
28. Perfolenta 206 25.06.19 13:02 Сейчас в теме
(25) ну, это вы серьезно загнули, на счет производительности сравнимой с C#....
8. sikuda 677 21.05.19 09:37 Сейчас в теме
(3) Для любителей PHP лучше транслятор 1С-PHP php1c.ru ;)
10. JohnyDeath 302 21.05.19 10:19 Сейчас в теме
(3) Советую ознакомиться с подробным примером от автора: https://infostart.ru/public/783435/
Serg O.; azhilichev; +2 Ответить
4. insurgut 208 21.05.19 06:15 Сейчас в теме
Что-то я с типичным примером не понял - а что мешает HTTP-сервис 1С поднять, который будет доступен "по всему миру"?
7. azhilichev 214 21.05.19 08:50 Сейчас в теме
(4) Наверное, ограничения по лицензиям 1С.
YPermitin; JohnyDeath; +2 Ответить
11. FreeArcher 162 21.05.19 11:01 Сейчас в теме
(7) Не понятно в чем ограничение? Лицензия задействуется только на момент соединения, это меньше секунды. Как правило через http сервисы делают для личных кабинетов, где количество одновременно работающих пользователей очень небольшое. А если ещё использовать схему когда раз получаются данные и потом просто используются, то лицензия и вовсе не надолго занята будет. Вобщем это не должно быть проблемой.
12. пользователь 21.05.19 12:52
(11) Вы говорите про технический аспект лицензирования.

А есть само лицензионное соглашение, где явно сказано, что лицензий нужно столько, сколько клиентов будет подключаться.

Так что придется в этом случае лицензии все же покупать и договариваться с фирмой "1С".

Пруф: http://v8.1c.ru/predpriyatie/questions_licence.htm#mvv
kwazi; azhilichev; +2 Ответить
13. FreeArcher 162 21.05.19 13:04 Сейчас в теме
(12)
В соответствии с действующим Лицензионным соглашением, организация должна приобрести такое количество клиентских лицензий, сколько в действительности пользователей одновременно работают с системой "1С:Предприятие 8".


Так одновременно будет работать 1-2 клиента по 1 секунде, на них и будет выдана лицензия. И при использование 1Script.Web ничего не меняется ведь, схема забора лицензий такая же, что и если бы запирал сервер на PHP или на чем то другом.
ice-net; YPermitin; +2 1 Ответить
14. пользователь 21.05.19 13:07
(13)
Так одновременно будет работать 1-2 клиента по 1 секунде, на них и будет выдана лицензия. И при использование 1Script.Web ничего не меняется ведь, схема забора лицензий такая же, что и если бы запирал сервер на PHP или на чем то другом.


Лицензия выдается на пользователей, а не на клиентов и соединения.

Если нет доверия к моим словам, то Вы можете написать в саппорт фирмы "1С", описав ситуацию.
Возможно, их ответ Вас очень удивит.
15. FreeArcher 162 21.05.19 13:25 Сейчас в теме
(14) Да я не то что не доверяю, я хочу понять. Просто нельзя учесть сколько пользователей работают в момент времени.

Да и что значит пользователей. Например их всего 1000. Сегодня работает 10 сколько нужно лицензий? 10 верно ведь?
Так получается если из этих 10 в данную секунду работает только 1, то и нужно 1 лицензию?

Это в компании число пользователей условно постоянно, а как только выходим в веб оно становится постоянно меняющимся.
16. acanta 21.05.19 13:32 Сейчас в теме
(15) точно. Представим себе Гугл, который взимает плату с владельца сайта в интернете за каждого пользователя, который на него зашёл из поисковика.
Причем для доступа пользователя требуется внесение аванса в пользу гугля от владельца сайта.
При отсутствии аванса Гугль не открывает страницу результата поиска и пишет пользователю сообщение что у владельца сайта закончились деньги.
Внесённый аванс наш Гугль не возвращает, но если владелец хочет сделать ещё один сайт, то можно получить скидку при условии замены старого сайта на новый.
17. пользователь 21.05.19 13:32
(15) вот тут то и нужно идти в фиому 1С для обсуждения сотрудничества.

Ситуация схожа с лицензированием мобильной платформы. Почти.
22. Darklight 33 22.05.19 13:46 Сейчас в теме
(12)Да, с лицензированием web-среды в 1С всё очень туго. Увы. В этом плане - OneSncript.Web - это как глоток свежего воздуха свободы. Но, чтобы был целый зелёный сад свежего воздуха тут конечно в комплекте должен быть и фроентэнд и бакэнд, понятный 1С-снику (об этом я ниже в отдельном комментарии надписал, т.к. это уже за рамками данного контекста).

Ещё в пользу OneScript.Web - развернуть его в стороннем облаке гораздо дешевле и проще чем, чем всю платформу 1С (в силу его легковестности, кроссплатформенности и, главное, независимости от установки лицензионных ключей - которые ставить в облаке очень сложно). В общем - проморгала 1С целый рынок, ну есть конечно 1С-Битрикс - но это всё-таки уже для крупных компаний, это не дешёвое решение, и требующее отдельно обученных специалистов. Да и в облаков с развёрнутым 1С-Битрикс не та уж много существует и не дёшёвы они (ну я предполагаю - не ручаюсь за достоверность - не сталкивался лично).
9. FreeArcher 162 21.05.19 10:13 Сейчас в теме
(4) Как я понял это замена прослойки (проксирующего веб сервера, например php, не важно). Т.е. фронтенд пишется на JS, но из JS достучатся до http сервиса 1С с авторизацией проблематично. А например из PHP вобще без проблем. Т.е. как работаю личные кабинеты в интернет магазинах например: JS=>PHP=>1C и обратно. По скольку на PHP писать 1С-ники не хотят, они могут заменить эту прослойку на 1Script.Web.
Пусть автор поправит.

(5) Спасибо за пояснения.

(6) Кстати я уже попробовал пример из другой статьи работает. Вот только после изменения кода приходится перезапускать 1Script.Web, не привычно. Ну и конечно, вроде бы от знания PHP избавляет, но боюсь на начальном этапе потребуется знать С# разбираться в исходниках, решать какие то вопросы и расширять функционал.
18. Evil Beaver 8253 21.05.19 18:39 Сейчас в теме
(9)
после изменения кода приходится перезапускать 1Script.Web, не привычно

Платформу 1С тоже приходится перезапускать после изменения кода, и ничего. В девелопе уже лежит fast-reload версия для контроллеров, но она только в исходниках.

Т.е. как работаю личные кабинеты в интернет магазинах например: JS=>PHP=>1C и обратно. По скольку на PHP писать 1С-ники не хотят, они могут заменить эту прослойку на 1Script.Web.

Ну так тоже можно, а можно и JS не писать, а делать олдскульный HTML с минимумом jQuery/bootstrap, тогда кубиков будет два: OsWeb=>1C

боюсь на начальном этапе потребуется знать С# разбираться в исходниках, решать какие то вопросы

Не бойтесь. C# это такой же 1С, только на английском. Все классы похожи на 1С. И потом, изучив C# вы автоматически изучите синтаксис JavaScript, PHP, Java, Groovy и C++ Радикальный рост компетенций и зарплаты в перспективе!

И все это легко, т.к. там учить то и нехер, на самом деле. Одну-две книжки в метро зачитать.

Бесплатный секрет вот вам рассказал, если чо.
Darklight; JohnyDeath; +2 Ответить
30. jif 16.09.19 11:10 Сейчас в теме
(18)
Бесплатный секрет вот вам рассказал, если чо.


Добрый день, Андрей. Подскажите пожалуйста литературу по C# для начала изучения! С каких материалов, по Вашему мнению, стоит начать ? Спасибо!
32. Necessitudo 18.09.19 15:04 Сейчас в теме
(18) Андрей - а если C# учить просто, то зачем был придуман OneScript, хотя уже есть PowerShell?
6. azhilichev 214 21.05.19 08:49 Сейчас в теме
Был на Хакатоне-2019 от "Серебряной пули". Алексей Лустин на мастер-классе показывал пример разработки на 1Script.Web. Прикольно. Но нужна документация.
Darklight; JohnyDeath; +2 Ответить
19. Glebis 13 22.05.19 10:24 Сейчас в теме
Midleware. Шоколадка за лучший перевод на русский.

Софтосредник.
Где могу забрать шоколадку?
20. пользователь 22.05.19 12:45
(19) прокладка или костыль еще можно перевести :)
21. Darklight 33 22.05.19 13:36 Сейчас в теме
(19)"Посредник" проще (ну или "Посредник бизнес логики" - но это уже слишком длинно), ну можно ещё "Сервиспосредник"
23. Darklight 33 22.05.19 14:12 Сейчас в теме
Очень интересное решение - пока никак не доходя руки пощупать. Но всё-таки без фронтэнда и бакэнда которые были бы реализованы в аналогичном понятном, 1С-разработчику, ключе - данное решение очень ограничено в применении. Ну если опять-таки - не учить разработчика 1С разработке WEB-приложений, да ещё и языку C# и работе с базами данных, пусть хоть и через фреймворки - но это всё будут другие фреймворки, целая туча различных фреймворков - да ещё и на английском - в общем далеко не всем 1С-разработчикам это подсилу - так что пока обойти "Вы говорите – тогда нужно на Python или на NodeJS писать – я это не умею" - не эти, так другие сторонние и чуждые 1С-нику концепции разработки всё-равно ему придётся изучать.

Вот хорошо было бы если для:
Фронтенда - можно было бы набрасывать Web-морду хоть в том же конфигураторе 1С (или EDT) как это привычно 1С-разработчику - а потом выгружать её в XML (хоть тот же 1С-вский от выгрузки метаданных) и уже на основе этого XML - генерировать свою HTML страницу (напрямую или через конвертирование в другой фремворк, да хоть в тот же RAZR), если не целиком, то хоть ограничено (и имметь готовые web-компоненты для этого, на JavaScript). Ну и код алгоритмов формы 1С конвертировать в JavaScript как это делает платформа 1С для WEB-Клиента (ну хотя бы тоже ограничено). Вот это было бы мощное решение. И нет тут ничего не выполнимого - всё это можно сделать и в одиночку (базиз), и потом потихоньку развивать OpenSoure сообществом.

Бакэнд - аналогично тоже нужен фремворк, понятный 1С-разработчику. В первую-очередь - это просто доступ к СУБД, в терминах платформы 1С. Да, я не спорю, что в мире .NET есть свои фремворки для работы с СУБД, и может даже более мощные, чем 1С Предприятие 8, но их концепция далека от привычной. Иметь привычный фремворк для работы с СУБД - тоже очень хорошо. Причём саму СУБД так же можно спроектировать через 1С конфигуратор (или EDT) - выгрузить проект в xml файл, и на его основе сгенерировать набор классов в DotNET - а-ля структура метаданных 1С Предприятие 8, подключить это всё к OneScript как библиотеку - и использовать эти объекты метаданных доступа к СУБД почти так же как и в "родной" среде 1С Предприятие 8.

Такой бакэнд - я, кстати, уже разрабатываю, но у меня не так много времени на это - так что не ждите скоро...
В проекте по фронтэнд я бы тоже потом поучаствовал бы - но я далёк от web-разработки - хотя содействие в конвертации xml-форм 1С Предприятие 8 оказать бы тоже смог - у меня тут тоже есть один проект, находящийся в процессе разработки - фреймы для 1С, там есть разбор xml-форм 1С Предприятие 8.

Ну и сам по себе OneScript.Web мне тоже интересен, т.к. есть у меня и Мобильный 1С проект, требующий наличия web-сервера, способного обслуживать тысячи одновременных обращений (ну, я так предполагаю), при сотнях тысяч пользователей, а лицензионная политика 1С мне такое не позволяет сделать, даже если я бы купил несколько тысяч лицензий - и даже это очень дорого для такого проекта. А OneScript.Web это позволил бы сделать, правда не знаю - справился бы он технически с нагрузкой в 10К-соединений в секунду! Ну тут я лукавлю - конечно же, для такой нагрузки полюбому придётся делить рабочее серверное пространство на несколько параллельных blade-стеков обслуживания (иначе будет не оправдано дорого). Но 1000 одновременных соединений - на сервер - это необходимый минимум!


В общем - OneScript.Web проект очень интересный и перспективный! Автору большой респект!
24. SkyHunter 22.05.19 19:27 Сейчас в теме
Бизнес говорит – ну придумай что-нибудь, ты же 1С-ник, ты должен уметь все.


Опять исход от неверной посылки, что 1Сник должен уметь всё, быть этаким человеком-оркестром. Опять это желание сэкономить на количестве спецов.

А правильный ответ -- этим должны заниматься специально обученные люди, использующие нативные, проверенные годами и опытом инструменты.
zqzq; Elisy; acanta; +3 Ответить
26. Elisy 951 23.05.19 07:58 Сейчас в теме
Подход интересный. Инструмент полезен для мелких ненагруженных систем.
К сожалению, не может конкурировать со связкой Asp.Net MVC + 1С.

Что произойдет при увеличении нагрузки? 1С станет слабым звеном.

Вижу нерешаемые структурные проблемы
1. Сам по себе скрипт 1С медленный.
2. Нет многопоточности
3. Коммьюнити раз в 100000 меньше, чем у C# Asp.Net MVC.

Что планируется делать с частыми задачами Asp.Net MVC? Переписывать средствами 1С?
1. OAuth авторизация
2. Обработка ошибок 404, 500
3. Кэширование
4. Сокеты
5. Настройка допустимых сиволов URL, максимального тела запроса,
6. https- www-редиректы
7. Bundle-минифицирование css и js
8. Управление заголовками
27. Evil Beaver 8253 30.05.19 17:34 Сейчас в теме
Сам по себе скрипт 1С медленный

Можно замеры конкретных кусков кода 1Script в сравнении с 1С, на основании которых вы сделали такой вывод? 1Script не медленнее 1С.

Нет многопоточности

Откуда такой вывод? В Node.js, кстати говоря, ее тоже нет. И ничего, пишут промышленные сервера :) А в 1Script.Web есть потоки на уровне Kestrel.

Что планируется делать с частыми задачами Asp.Net MVC
1. OAuth авторизация
2. Обработка ошибок 404, 500
3. Кэширование
4. Сокеты
5. Настройка допустимых сиволов URL, максимального тела запроса,
6. https- www-редиректы
7. Bundle-минифицирование css и js
8. Управление заголовками


Планируется дать примерно те же средства, которые дает платформа 1С. Что-то позволить, а что-то спрятать в платформу/опции Kestrel
29. shiaju 25 08.07.19 13:12 Сейчас в теме
(27) "Не медленнее 1С" вовсе не означает "быстрый", к сожалению. Я тут на днях попробовал шутки ради решить пару задач с https://projecteuler.net и, в общем, сильно удивился, насколько 1С неэффективно считает.
31. alyaev.a.v 17.09.19 15:43 Сейчас в теме
В чем может быть проблема?

Необработанное исключение: ScriptEngine.Compiler.CompilerException: {Модуль C:\WORK\OneScript\odminus\models\modules\АдминистрированиеАген­та.os / Ошибка в строке: 3 / Библиотека не найдена logos}

Все стандартно установлено,логос установлен, другие проекты работают.
33. infokey 01.03.20 10:25 Сейчас в теме
Все любители шоколада отдыхают, а приз получает автор MVC - Microsoft за перевод: Middleware - "ПО промежуточного слоя".
Оставьте свое сообщение