Допустим у приложения есть в свойствах какое-то свойство с типом Произвольное приложение. На форме просмотра есть кнопка, которая запускает searchAllFile().
Приложение в системе это json объект, у которого есть определенные данные. Через console.log(JSON.stringify(random_app)) можно посмотреть какие конкретно эти данные. В RandomAppField я выбрал code и type у свойств этого объекта, чтобы в дальнейшем, если type имеет название FILE - отобрать это свойство.
Код:
declare const console: any;
async function searchAllFile(): Promise<void> {
if(!Context.data.random_app) return;
const random_app = await Context.data.random_app.fetch();
//Достаем json произвольного приложения, чтобы определить конкретные типы его свойств
const JSON_string = JSON.stringify(random_app);
console.log(JSON_string)
const random_app_root : RandomAppRoot = JSON.parse(JSON_string);
ViewContext.data.list_file = [];
for(const field of random_app_root.fields){
//проверка на определенный тип поля, в данном случае тип свойства - FILE
if(field.type == "FILE"){
if(random_app.data[field.code]){
//если одно из свойств имеет тип Файлы Несколько
if(Array.isArray(random_app.data[field.code])){
for(const file_ref of random_app.data[field.code]){
ViewContext.data.list_file.push(file_ref);
//Можно достать свойства файла
const file: FileItem = await file_ref.fetch();
console.log(file.data.__name);
}
}
else{
const file_ref: FileItemRef = random_app.data[field.code];
ViewContext.data.list_file.push(file_ref);
const file: FileItem = await file_ref.fetch()
console.log(file.data.__name);
}
}
}
}
ViewContext.data.list_file = ViewContext.data.list_file;
}
/**Основные данные рандомного приложения */
interface RandomAppRoot {
namespace: string
code: string
id: string
fields: RandomAppField[]
}
/**Свойство рандомного приложения и поля этого свойства (в данном случае только type и code)*/
interface RandomAppField {
code: string
type: string
}
Скриншоты и файл с разделом во Вложении.