@UserTrue понял понял
Как использовать SetResourceValue в веб-интерфейсе?
-
@arcos said in Как использовать SetResourceValue в веб-интерфейсе?:
Я использую vue.js. Интерфейс динамический, поля создаются по кликам на кнопки, потом собираю все данные с формы функцией submitData(), и пытаюсь назначить объект из собранных данных единственному ресурсу mainData (других способов передать множественные данные в скрипт - не придумал).
Самый простой способ это создать ресурс с типом "строка" и передавать все данные в виде json строки. В vue в data создаёте объект с настройками

в функцию "GetResourceValue" помещаете передачу данных:
function GetResourceValue(ResourceName) { if(ResourceName == "items_settings") return JSON.stringify(app.settings); return GetValue(ResourceName) }Восстановление интерфейса в vue можно реализовать через "SetResourceValue":
function SetResourceValue(ResourceName, ResourceValue) { if (ResourceName == "items_settings") { try { var settings = JSON.parse(ResourceValue); settings.forEach(function (el) { app.settings.push(el); }); } catch (err) { console.log(err); } console.log("Восстановили данные из ресурса") } return SetValue(ResourceName, ResourceValue) } -
@Fox спасибо за пояснение. Но я не понимаю, почему я не могу выполнить SetResourceValue в submitData? Происходит клик по кнопке, собираются все данные в JSON, и закидываются в ресурс mainData. В чём заключается логика, зачем мне вообще GetResource, если мне нужно ресурсу назначить значение, а не забрать. Хотелось бы разобраться в этом
-
@arcos said in Как использовать SetResourceValue в веб-интерфейсе?:
@Fox спасибо за пояснение. Но я не понимаю, почему я не могу выполнить SetResourceValue в submitData? Происходит клик по кнопке, собираются все данные в JSON, и закидываются в ресурс mainData. В чём заключается логика, зачем мне вообще GetResource, если мне нужно ресурсу назначить значение, а не забрать. Хотелось бы разобраться в этом
А зачем вы прерываете функцию SetResourceValue?
Что-то не очень понятно, что вы хотите. Посмотрите внимательнее, в функции "GetResourceValue()" стоит вызов функции "GetValue()". В функции "SetResourceValue()" стоит вызов "SetValue()". "GetValue()" и "SetValue()" объявляются в подключенной библиотеке
https://bablosoft.com/buildinterface/interface-extensions/extensions.js?v=2


-
@arcos said in Как использовать SetResourceValue в веб-интерфейсе?:
Документация просто ужас, никаких пояснений и примеров. Два дня потратил только чтоб понять что глобал переменные нельзя создавать в веб-интерфейсе (до запуска)..
У меня есть исходник мануала по веб интерфейсу, саппорт мне его передал, но запретил редактировать самому. Так что, если кто нибудь сможет его дополнить, могу скинуть в личку или выложить в общий доступ
-
@Fox за мануал в лс буду очень благодарен.
А задача у меня очень простая: в скрипте есть только 1 ресурс mainData (тип строка)
В веб интерфейсе формируется массив данных из выбранных параметров (вместо создания десятков переменных в ресурсах, т.к. переменные не статические). При нажатии на кнопку Старт - я пытаюсь ресурсу mainData назначить значение этого массива. То есть, чтобы когда скрипт запустился, я получил из ресурса mainData массив, сформированный в веб-интерфейсе, и на основе его выстроил необходимые режимы работы. И ни один из вариантов не срабатывает. Но функция вызывается правильно, и переданное значение не пустое. Я пробовал даже вот так (это просто для теста):function SetResourceValue(ResourceName, ResourceValue) { $("mainData").val('test1') window.alert('mainData: ' + GetResourceValue(ResourceName)) SetValue('mainData', 'test2') window.alert('mainData: ' + GetResourceValue(ResourceName)) return }Я видимо просто не понимаю логики работы функции. В моей голове это выглядит вот так:
function SetResourceValue(ресурс, значение)
{
ресурс = значение
} -
@arcos said in Как использовать SetResourceValue в веб-интерфейсе?:
Я видимо просто не понимаю логики работы функции. В моей голове это выглядит вот так:
function SetResourceValue(ресурс, значение)
{
ресурс = значение
}Смотрите, веб интерфейс генерируется автоматически в зависимости от ресурсов исходного скрипта. Для корректной работы к веб интерфейсу прикрепляются библиотеки, в одной из них есть определение функций "GetValue()" и "SetValue()", которые отвечают за получение и установку значений элементов ресурса. Что бы ими было проще управлять, в самом интерфейсе добавляются функции "GetResourceValue() и "SetResourceValue()", внутри которых и находятся вызовы функций "GetValue()" и "SetValue()".
Для тех, кому лень вникать:
function SetResourceValue(ResourceName, ResourceValue) { if(ResourceName == "mainData") { ResourceValue = "нужное значение" } return SetValue(ResourceName, ResourceValue) } -
@Fox у меня в импорте присутствует https://bablosoft.com/buildinterface/interface-extensions/extensions.js?v=2
По какой причине тогда, алерты из явного вызова SetResourceValue отдают пустые значения?
SetValue('mainData', 'test2') window.alert(GetResourceValue('mainData'))При этом повторю, функция вызывается правильно, проект обновлен и скомпилирован, проект веб-интерфейса сохранён. GetResourceValue так же, определён в коде (интерфейс Стандартный, не с нуля). После запуска скрипта log({{mainData}}) отдаёт пустое значение.
-
@arcos said in Как использовать SetResourceValue в веб-интерфейсе?:
@Fox у меня в импорте присутствует https://bablosoft.com/buildinterface/interface-extensions/extensions.js?v=2
По какой причине тогда, алерты из явного вызова SetResourceValue отдают пустые значения?
SetValue('mainData', 'test2') window.alert(GetResourceValue('mainData'))При этом повторю, функция вызывается правильно, проект обновлен и скомпилирован, проект веб-интерфейса сохранён. GetResourceValue так же, определён в коде (интерфейс Стандартный, не с нуля). После запуска скрипта log({{mainData}}) отдаёт пустое значение.
Я вам три раза описал причину и следствие, больше смысла в этом не вижу. Прикладывайте экспортированный веб интерфейс, покажу предметно
-
@Fox я 20 раз уже перечитал ваши сообщения, и хоть убей, не могу понять где у меня ошибка. Я понимаю, что мы экспортировали модуль, в котором обозначаются SetValue и GetValue. В самом коде создали функции SetResourceValue и GetResourceValue, в которых и используются SetValue и GetValue. Я так же понимаю, что при каждом запуске, функция SetResourceValue выполняется автоматически, для каждого ресурса. Но мне не нужно назначать ресурс при первоначальном запуске веб-интерфейса. Мне нужно назначать дальше, перед нажатием на кнопку старт. Я же вызываю функцию явно, по нажатии на кнопку старта. Значение ресурса должно меняться, всё же как по документации. Функция вызывается, значение не пустое, ресурс верный. Но почему он во всех случаях пустой? Может await нужны для этих действий?
function GetResourceValue(ResourceName){ return GetValue(ResourceName) } function SetResourceValue(ResourceName, ResourceValue) { window.alert('ResourceName: ' + ResourceName + '; ResourceValue: ' + ResourceValue) //Зачем вообще это условие, если я функцию вызываю явно? if(ResourceName == "mainData" && ResourceValue){ ResourceValue = ResourceValue } var r = SetValue(ResourceName, ResourceValue) window.alert('get: ' + GetResourceValue(ResourceName)) return r } //Вызываю функцию при нажатии на Run: SetResourceValue('mainData', "TEST1") /** В ответ - пустота */ -
@arcos said in Как использовать SetResourceValue в веб-интерфейсе?:
@Fox я 20 раз уже перечитал ваши сообщения, и хоть убей, не могу понять где у меня ошибка. Я понимаю, что мы экспортировали модуль, в котором обозначаются SetValue и GetValue. В самом коде создали функции SetResourceValue и GetResourceValue, в которых и используются SetValue и GetValue. Я так же понимаю, что при каждом запуске, функция SetResourceValue выполняется автоматически, для каждого ресурса. Но мне не нужно назначать ресурс при первоначальном запуске веб-интерфейса. Мне нужно назначать дальше, перед нажатием на кнопку старт. Я же вызываю функцию явно, по нажатии на кнопку старта. Значение ресурса должно меняться, всё же как по документации. Функция вызывается, значение не пустое, ресурс верный. Но почему он во всех случаях пустой? Может await нужны для этих действий?
Я сказал выше, прикладывайте экспортированный интерфейс (можно в личку если там всё так секретно), и я вам отвечу предметно. Или обращайтесь в премиум поддержку, правда там попросят тоже самое и вопрос перенаправят скорее всего тоже мне
:D