Запуск серверного кода SimpleOne из VS Code

Для работы понадобятся три файла (архив во вложении).
В файле server_run.ps1 изменить переменные:
$instanseUrl = “https://dev-ainergy.simpleone.ru/”;
$simpleAdminToken = “Bearer zEHSn0pmLNEwa4pZGZ3XL1Ue1zHd0lnx”;
на свой инстанс и токен.

Файл server_run.ps1:

# Смена кодировки, предполагаем что файл пришел в UTF8
#[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
# Считываем содержимое файла, переданного в качестве аргумента
$scriptContent = Get-Content -Path $args[0] -Raw -Encoding UTF8
# Формируем JSON строку для тела запроса
$jsonBody = @{"script" = $scriptContent.toString()} | ConvertTo-Json
$instanseUrl = "https://dev-ainergy.simpleone.ru/";
$simpleAdminToken = "Bearer zEHSn0pmLNEwa4pZGZ3XL1Ue1zHd0lnx";

# Отправляем запрос
$response = Invoke-WebRequest -UseBasicParsing -Uri $instanseUrl"v1/admin-script/run" `
-Method "POST" `
-Headers @{
    "Accept"="application/json, text/plain, */*"
	"Authorization"=$simpleAdminToken
}`
-ContentType "application/json; charset=UTF-8" `
-Body $jsonBody

# Обрабатываем ответ
$contentObj = $response.Content | ConvertFrom-Json
$contentObj.data.info
$contentObj.data.result
$contentObj.messages[0].message


Запуск происходить с помощью User Task, у меня он находится по адресу
C:\Users\molodik\AppData\Roaming\Code\User\tasks.json
или через интерфейс:


меняем на значение:

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "SimpleOne Run Server script",
            "type": "shell",
            "command": ".\\server_run.ps1 ${fileBasename}",
            "problemMatcher": [],
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ]
}

Берем наш скрипт SimpleOne:

let counter = 0;let counterIns = 0;let counterUpd = 0;

const forRecord = new SimpleRecord('sys_log')
forRecord.addEncodedQuery('()');
forRecord.setLimit(10);
forRecord.query();
print("Количество sys_log by condition: "+ forRecord.getRowCount() + "\n");
// forRecord.deleteMultiple();
// forRecord.setMultipleValue('source', ''); 
// forRecord.updateMultiple();

while(forRecord.next()){
  print("\n info: " + forRecord.message)  
  let updID; 
  // updID = forRecord.update(); 
  if(updID == 0) {print("UpdErr for "+ forRecord.getDisplayValue() +": " +forRecord.getErrors().join("\n") + "\n");}else{ counterUpd++; }

  counter++;
}

ss.info("Counter: " + counter + ";\n counterUpd: " + counterUpd + "; counterIns: " + counterIns + ";\n diff: " + (counterUpd - counterIns));


после этого когда перейдем на наш серверный скрипт и нажмем сочетание клавиш Ctrk+Shift+B

В консоли увидели исполнение скрипта:

  • Executing task: .\server_run.ps1 server_script.js

Количество sys_log by condition: 10

info: RabbitMQ Consumer ‘Default AI Service Consumer’ processed message successfully
info: RabbitMQ Consumer ‘Default AI Service Consumer’ processed message successfully
info: BR Name: “output_json to target_record_field”, Error : Unexpected token S in JSON at position 0
info: RabbitMQ Consumer ‘Default AI Service Consumer’ processed message successfully
info: RabbitMQ Consumer ‘Default AI Service Consumer’ processed message successfully
info: RabbitMQ Consumer ‘Default AI Service Consumer’ processed message successfully
info: RabbitMQ Consumer ‘Default AI Service Consumer’ processed message successfully
info: RabbitMQ Consumer ‘Default AI Service Consumer’ processed message successfully
info: RabbitMQ Consumer ‘Default AI Service Consumer’ processed message successfully
info: RabbitMQ Consumer ‘Default AI Service Consumer’ processed message successfullyInfo: Counter: 10;
counterUpd: 10; counterIns: 0;
diff: 10

  • Terminal will be reused by tasks, press any key to close it.
6 лайков

VSCodeRun.zip.sop (1,6 КБ)

7 лайков

В качестве небольшого дополнения, в task.json добавил
“options”: {
“cwd”: “${workspaceFolder}/sys_script”
}
Полезная опция при использовании стандартной иерархии каталогов проекта ).
Большущее спасибо Владимир!

1 лайк