EvilBeaver / OneScript

Исполняющая среда скриптов на языке 1С
http://oscript.io
Mozilla Public License 2.0
471 stars 106 forks source link

ПодключитьВнешнююКомпоненту("OneScript") #548

Closed nixel2007 closed 6 years ago

nixel2007 commented 6 years ago

Есть часть автоматизационных задач, которые проще делать на OneScript в силу наличия в нем различных библиотек. При этом некоторые управляющей конструкцией должна выступать 1С.

ЗапуститьПриложение, конечно, работает, но предлагаю обсудить возможность подключения оскрипта как внешней компоненты по NativeApi, с единственным (для начала) методом Выполнить().

В 18 движка релизе появился нативный Выполнить, типы из в с# пробрасываются тоже более-менее прозрачно.

/discuss

artbear commented 6 years ago

Тема интересная. Но, если я не ошибаюсь, нативный Выполнить грузит только код без методов, верно, как и 1С?

artbear commented 6 years ago

и как определить путь к библиотекам для подключения в случае нативной ВК ?

dmpas commented 6 years ago

.net уже пробрасывали в 1с. Теми же средствами можно попробовать подключить движок односкрипта.

nixel2007 commented 6 years ago

Помимо Выполнить вроде бы ещё хотели добавить (добавили?) ВыполнитьСценарий.

EvilBeaver commented 6 years ago

Некроссплатформенно - смотри вариант от @dmpas. Там только винда, но вроде как функционал полный, т.е. выполнить код 1скрипта будет можно.

Кроссплатформенно - пока идей нет. C++ CLI в моно не работает. Кажется, что ЗапуститьПриложение - дешево и сердито - наиболее жизнеспособный вариант.

EvilBeaver commented 6 years ago

Совсем ж0сткий вариант: NativeAPI, которое под капотом делает запуск приложения :)

nixel2007 commented 6 years ago

Вроде никто не мешает сделать native-api so'шник?

dmpas commented 6 years ago

https://infostart.ru/public/541518/

EvilBeaver commented 6 years ago

Вроде никто не мешает сделать native-api so'шник?

Зачем?

nixel2007 commented 6 years ago

Чтобы из него подключать .Нет? Я мож чего не знаю. В моем понимании Native api компонента - это просто обёртка, реализующая определённый интерфейс. Соответственно по сути задача сводится к подключению к движку из этой компоненты.

Я правильно понимаю, что проблема в вызове .нет из си?

EvilBeaver commented 6 years ago

Да, на моно

nixel2007 commented 6 years ago

Оно как-то жутко костыльно и трудозатратно или в целом пока не особо реализуемо? Мне просто чтобы понять, стоит с этим вообще возиться или не очень.

EvilBeaver commented 6 years ago

Нереализуемо/сложно, поэтому можно эакостылить через запуск процесса, но зачем?

nixel2007 commented 6 years ago

@EvilBeaver чтобы код скриптов не хранить где-то сбоку, в прямо в конфе, при этом не флашить их на диск, а сразу в памяти запускать.

Это так, размышления на тему решения прикладной задачи, которую я тебе вчера описывал.

dmpas commented 6 years ago

Запускаем односкрипт-хост-процесс, который слушает определённый порт, получает текст сценария и исполняет. В 1С будет как обычный вызов HTTP-службы.

EvilBeaver commented 6 years ago

Этот варинт я тоже понимал под" Запуск процесса" а вот внутри процесса 1с - проблемно