...

Получение файлов произвольного приложения

Тема в разделе "Примеры сценариев", создана пользователем vl.varankin, 3 окт 2024.

  1. vl.varankin

    vl.varankin Новичок

    Допустим у приложения есть в свойствах какое-то свойство с типом Произвольное приложение. На форме просмотра есть кнопка, которая запускает searchAllFile().
    Приложение в системе это json объект, у которого есть определенные данные. Через console.log(JSON.stringify(random_app)) можно посмотреть какие конкретно эти данные. В RandomAppField я выбрал code и type у свойств этого объекта, чтобы в дальнейшем, если type имеет название FILE - отобрать это свойство.
    Код:
    
    declare const consoleany;

    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 fileFileItem await file_ref.fetch();
                            
    console.log(file.data.__name);
                        }                  
                    }
                    else{
                        const 
    file_refFileItemRef random_app.data[field.code];
                        
    ViewContext.data.list_file.push(file_ref);
                        const 
    fileFileItem 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 {
      
    codestring
      type
    string
    }
    Скриншоты и файл с разделом во Вложении.

    Вложения:

    Последнее редактирование: 3 окт 2024