Имя: Пароль:
1C
1С v8
Открыть HTML страничку с отработкой JS НаСервере
, , ,
0 TrueBuild
 
02.03.22
13:59
Есть сайт, который выполняет некоторые расчеты средствами JavaScript и отображает их на страничке. Необходимо эти расчеты автоматизировать.
Сохранил страничку просто в .html, запихнул код в 1С на форму в Поле HTML документа, динамически правлю html код и парсю результат после выполнения JS скрипта с этого же поля, все ок.
Но необходимо этот процесс автоматизировать, чтобы он выполнялся в фоне, то есть на сервере, а не на клиенте.
Формы и соответственно Поле HTML документа я на сервере никак не получу. Обращение к сайту через HTTPСоединение тоже не даст результата, так как в этом случае никакие JS скрипты не выполняются.
Пока вижу единственный вариант, это сделать прослойку на чем-нибудь компилируемом, которую вызывать из 1С, где с помощью Selenium открывать сайт с выполнением JS скриптов и парсить, затем возвращать результат в 1С.
Но может есть какой-то способ попроще или обойтись только платформой 1С?
1 Kassern
 
02.03.22
14:01
(0) делайте расчеты с помощью php скриптов, через http соединение дергайте скрипт с нужными параметрами. Либо считайте на стороне 1с, либо пилите dllку, либо микросервисы вам в помощь
2 TrueBuild
 
02.03.22
14:02
Переписать сам алгоритм скрипта JS на 1С - самый длинный и сложный путь в данном случае. Во первых сам скрипт JS обфусцирован, во вторых, он отправляет штук 5-6 POST запросов еще на свои сервера, причем тоже зашифрованные.
3 TrueBuild
 
02.03.22
14:02
(1) => (2)
4 Kassern
 
02.03.22
14:03
(2) тагда пилите прослойку, которая будет на клиенте отрабатывать ваш скрипт и писать куда-нить результат. Вот к нему и будете обращаться, раз переписать нет возможности
5 TrueBuild
 
02.03.22
14:06
(4) Такое решение я и придумал сам) Вот и спрашиваю, есть ли что-нибудь попроще. Может быть в платформе есть что-то типа Поля HTML документа, но НаСервере. Либо как-то из платформы обращаться к WinAPI и запускать браузер и читать html открытой страницы.
6 Kassern
 
02.03.22
14:06
даже банальный ПодключитьОбработчикОжидания может справиться с этим заданием, если на стороне 1с пилить обращение
7 TrueBuild
 
02.03.22
14:12
(6) Он вызывается с клиента. Я в первом же посте написал, что мне надо решить задачу используя только сервер запуская процесс регл. заданием.
8 Kassern
 
02.03.22
14:13
(7) через сервер вы вряд ли сможете js запустить
9 Kassern
 
02.03.22
14:16
имхо, это как пытаться с сервера запустить процедуры клиентские.
10 Вафель
 
02.03.22
14:32
selenium
11 Garykom
 
гуру
02.03.22
15:40
(0) нода же
12 Garykom
 
гуру
02.03.22
15:41
(11)+ https://ru.wikipedia.org/wiki/Node.js
чуть чуть поправь свои js и запускай на сервере
13 Fragster
 
гуру
02.03.22
16:55
(12) скорее нужно нодой запустить сервак, который слушает запросы и через puppeteer делает нужные действия в headless chrome
14 TrueBuild
 
02.03.22
17:18
(12) (13) Слишком заморочено )
Сделал прослойку на C# с использованием Селениума, получилось минимум кода и настроек.
15 acht
 
02.03.22
17:54
(5) > запускать браузер и читать html открытой страницы.
Новый COMОбъект("InternetExplorer.Application");
16 Garykom
 
гуру
02.03.22
17:55
(14) ыыы
ты понимаешь что у тебя это даже не костыли а "стоя в гамаке"?
17 Garykom
 
гуру
02.03.22
17:56
(13) какой смысл в headless chrome?
если надо просто js запускать?
18 Fragster
 
гуру
02.03.22
18:03
(17) как правило js если на веб странице - то он не изолированно от html существует
19 Fragster
 
гуру
02.03.22
18:06
+ он может быть минифицирован
20 Garykom
 
гуру
02.03.22
18:24
(18) (19) угу и обфусцирован
в этом случае согласен
21 TrueBuild
 
02.03.22
19:30
(16) В чем костыль то? 1С вызывает внешний сервис передавая туда параметры и получает в ответ нужную информацию. Работает, как часы.

(18) Верно.
22 TrueBuild
 
02.03.22
20:01
(15) Да, вот это я и искал изначально, спасибо)
23 TrueBuild
 
02.03.22
20:06
(15) (22) Для интереса попробовал, в эксплорере конкретно мой JS уже не выполняется.
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.