@Dodok said in Извлечь данные из переменной (кубик):
@Mister-X Всмысле не выходит
alt text
вот и я не понял) Буду тестить. Спасибо!
Юзаю стандартный интерфейс. ДО нажатия на "Run" формирую некоторые данные, и нужно передать их в потоки. Второй день читаю документацию, перепробовал все варианты - ничего не работает. Глобал переменные создавать нельзя до старта, вот еще что пробовал:
Создал простую функцию в басе (ADD), которая принимает 2 параметра: name, data; создает ресурс name и добавляет в него data.
Затем вызываю функцию из веб-интерфейса:
await Api.RunFunction("ADD", {name: "testRes", data: "123"})
Результат: потоки крашатся с ошибкой: Все данные были обработаны для testRes
Пробовал явно создать ресурс testRes, и в функции просто закинуть в него параметр data.
Результат - ресурс testRes всегда пустой.
Уже хочется комп разбить, или бас удалить, почему код не работает?
Задача самая элементарная: передать переменную в потоки.
@arcos Сохраняй локально в текстовик. Например:
name: "testRes", data: "123"
Если надо распределить это значение только один раз по всем потокам, можно использовать запись номера потока в этот текстовик. Например:
2pot; name: "testRes", data: "123"
Где: 2pot; - запись от первого потока. Если будет этот текст, то второй поток возьмёт эти данные и после перезапишет 2pot; на 3pot;
Последний поток после использования данных из текстовика удаляет его.
@arcos said in Как из веб-интерфейса передать данные в потоки?:
Юзаю стандартный интерфейс.
В BAS есть стандартный интерфейс и веб интерфейс. Веб интерфейс ещё подразделяется на сгенерированный и пустой интерфейс
ДО нажатия на "Run" формирую некоторые данные, и нужно передать их в потоки. Второй день читаю документацию, перепробовал все варианты - ничего не работает. Глобал переменные создавать нельзя до старта, вот еще что пробовал:
Создал простую функцию в басе (ADD), которая принимает 2 параметра: name, data; создает ресурс name и добавляет в него data.Затем вызываю функцию из веб-интерфейса:
await Api.RunFunction("ADD", {name: "testRes", data: "123"})Результат: потоки крашатся с ошибкой: Все данные были обработаны для testRes
Пробовал явно создать ресурс testRes, и в функции просто закинуть в него параметр data.
Результат - ресурс testRes всегда пустой.Уже хочется комп разбить, или бас удалить, почему код не работает?
Задача самая элементарная: передать переменную в потоки.
Какие то ужасти описываете. Не совсем понятно зачем создавать ресурс, вызывать функцию.. Если вы используете сгенерированный веб интерфейс, значит в интерфейсе есть кнопка "Старт", значит тип повторения, количество потоков, всё настроено в скрипте. Значит распределять данные в потоках проще всего через ресурсы, но раз у вас интерфейс генерирует поля, то данные проще собрать в объект, передать объект в виде json строки через ресурс с типом "строка", что бы в функции "OnApplicationStart" распарсить json строку и заполнить локальный ресурс, который уже будет использоваться в остальных потоках.
На случай если возникнут проблемы с vue, вот реализация добавления инпутов на js: https://codepen.io/FoxV/pen/JjmVJgw
Теперь по шагам:
data-resource-name="res1", добавляем в него атрибут hidden="true" что бы спрятать. После этого элемента добавляем кнопку с контейнером<button id="createInput">Create Input Field</button>
<div id="input-container"></div>
var inputCount = 0;
$("#createInput").on("click", function () {
inputCount++;
var span = document.createElement("span");
span.class = "block"
var div = document.createElement("div");
var container = document.getElementById("input-container");
var input = document.createElement("input");
input.type = "text";
input.className = "test_resource";
input.id = "input-" + inputCount;
div.appendChild(input);
span.appendChild(div);
var deleteButton = document.createElement("button");
deleteButton.innerHTML = "Delete";
deleteButton.onclick = function () {
container.removeChild(span);
};
div.appendChild(deleteButton);
span.appendChild(div);
container.appendChild(span);
})
function GetResourceValue(ResourceName) {
if (ResourceName == "res1") {
var values = [];
document.querySelectorAll('.test_resource').forEach(input => {
values.push(input.value);
});
return JSON.stringify(values);
}
return GetValue(ResourceName)
}

Всё! Теперь в функции Main можно использовать локальный ресурс как обычный ресрус:

Тестовый скрипт: 2679.xml
Экспортированный интерфейс: qw2.main.interface.27_05_2023_13_03.txt