Меня задолб.. спрашивают часто на счёт стандартного диалога выбора файлов в веб интерфейсе. По этому приведу пример реализации, чтобы не пересказывать всем одно и тоже.
А ещё @support запланировал немного изменить диалог выбора файла:
Есть несколько причин, почему @support сделал кастомную реализацию выбора файла:
@support said in Конструктор интерфейса.:
В следующей версии интерфейс можно будет запускать только на том же пк, где находится бот. Но потом его можно будет запускать отдельно, на любом устройстве, в том числе и на мобильном.
Именно для этого был сделан свой диалог открытия файла, чтобы использовать файл на сервере, где работает БАС, а не там, где запущен интерфейс.
БАС и дальше будет развиваться в этом направлении, будут еще несколько компонентов, которые работают в браузере отдельно от софта, например, планировщик, управление фермой.
Так же браузер не позволяет получить путь к файлу. Поэтому придется пересылать в BAS содержание файла. Это не очень удобно.
Вместо этого используется своя реализация, но вы можете использовать и системный диалог, для этого его просто нужно прописать в коде. Здесь пример, как это можно сделать https://wiki.bablosoft.com/web-interface/#/codeeditor?id=adding-custom-components
По этому единственный способ передать содержимое файла в скрипт через стандартный диалог выбора файла, это прочитать файл в веб интерфейсе через File API и перенести содержимое в ресурс с типом "строка". Вариант с передачей содержимого файла через глобальную переменную или базу я расскажу в следующий раз.
Для начала создадим проект и добавим в него ресурс file с типом "строка"

выгрузим проект на сервер bablosoft и сгенерируем интерфейс скрипту:

Далее надо создать простой input для выбора файла в любом удобном для вас месте:
<input type="file"/>

чтобы пользователь не изменял содержимое файла в строке, спрячем элемент с ресурсом:
<div class="table-row" hidden="true">

Затем находим строку /////Events в окне Javascript и создаём обработчик события с чтением файла в переменную:
$("input:file").change(function(){
var reader = new FileReader();
reader.onload = function (e) {
res = e.target.result;
};
reader.readAsText(this.files[0]);
})
});
следом находим функцию GetResourceValue, она идёт тремя строками ниже, и добавляем в неё условие для ресурса file
var res = ""//объявляем переменную чтобы небыло ошибки, если пользователь не укажет файл и запустит скрипт.
function GetResourceValue(ResourceName){
if(ResourceName == "file"){
return res
}
return GetValue(ResourceName)
}

В скрипте всего два действия:

Вот так выглядит результат:

Самый простой вариант применения, это в функции OnApplicationStart распарсить строку по переносу строк \r\n в массив и перенести его в локальный ресурс, чтобы в скрипте использовать как обычный ресурс:

Тестовый скрипт
и экспортированный интерфейс