Имя: Пароль:
1C
1С v8
Справочник Хранилище дополнительной информации как изменить размер файла?
0 Eeelena
 
23.08.13
09:54
Добрый день!В УТ 10.3 есть справочник Хранилище дополнительной информации как ограничить размер изображения которого загружают. И как вообще получить размер всех файлов загруженных в систему?
1 John83
 
23.08.13
11:52
получить размер файлов:
- удалить все картинки, сделать ТиИ, выгрузить-загрузить, сравнить с размером рабочей базы
- скачать обработку (например с инфостарта), которая показывает размер таблиц инф. базы
2 Eeelena
 
23.08.13
11:54
В обработке написала на кнопке выполнить:

Запрос = Новый Запрос;Запрос.
Текст =
"ВЫБРАТЬ| ХранилищеДополнительнойИнформации.Ссылка,
| ХранилищеДополнительнойИнформации.Объект,
| ХранилищеДополнительнойИнформации.Хранилище,
| ХранилищеДополнительнойИнформации.ИмяФайла
|ИЗ
| Справочник.ХранилищеДополнительнойИнформации КАК ХранилищеДополнительнойИнформации";


ВыполнениеЗапроса=Запрос.Выполнить();
ТЗ = ВыполнениеЗапроса.Выгрузить();

ЭлементыФормы.ТЗ.Значение = ТЗ;
ЭлементыФормы.ТЗ.СоздатьКолонки();

Выборка=ВыполнениеЗапроса.Выбрать();  

Пока Выборка.Следующий() Цикл
ХранилищеЗначенияФайла = Выборка.Хранилище;
Сообщить(ХранилищеЗначенияФайла);
ДанныеBase64 = Base64Строка(ХранилищеЗначенияФайла.Получить());
Сообщить(ДанныеBase64);
КонецЦикла;


Появилась ошибка!
Ошибка при вызове метода контекста (Base64Строка)ДанныеBase64 = Base64Строка(ХранилищеЗначенияФайла);по причине:Несоответствие типов (параметр номер '1')
3 H A D G E H O G s
 
23.08.13
11:57
(2) Там может быть и Картинка
4 H A D G E H O G s
 
23.08.13
11:57
(2) У ДВоичныхДанных - есть функция Размер()
У Картинки есть функция ПолучитьДвоичныеДанные()
5 Eeelena
 
23.08.13
12:10
так а как мне тогда написать?
ДанныеBase64 = Base64Строка(ХранилищеЗначенияФайла.ПолучитьДвоичныеДанные());
6 Eeelena
 
23.08.13
12:10
будет вылазить такая же ошибка (
7 Eeelena
 
23.08.13
12:13
ХранилищеЗначенияФайла=ХранилищеЗначенияФайла.Получить();
    
     ДанныеBase64 = Base64Строка(ХранилищеЗначенияФайла.ПолучитьДвоичныеДанные());
8 Eeelena
 
23.08.13
12:14
Сделала вот так, ошибки нет.
9 H A D G E H O G s
 
23.08.13
12:15
(7) Проверь на тип значения ХранилищеЗначенияФайла
10 H A D G E H O G s
 
23.08.13
12:15
Зачем тебе ДанныеBase64 кстати?
11 Eeelena
 
23.08.13
12:16
а, нет есть ошибка(((((((((((((((
12 Eeelena
 
23.08.13
12:17
мне нужно получить размер загруженных файлов
13 Eeelena
 
23.08.13
12:17
можешь помочь?
14 Eeelena
 
23.08.13
12:18
у  ХранилищеЗначенияФайла тип значения ХранилищеЗначения
15 H A D G E H O G s
 
23.08.13
13:28
Запрос = Новый Запрос;Запрос.
    Текст =
    
    "ВЫБРАТЬ
    |    ХранилищеДополнительнойИнформации.Ссылка,
    |    ХранилищеДополнительнойИнформации.Объект,
    |    ХранилищеДополнительнойИнформации.Хранилище,
    |    ХранилищеДополнительнойИнформации.ИмяФайла
    |ИЗ
    |    Справочник.ХранилищеДополнительнойИнформации КАК ХранилищеДополнительнойИнформации";
    
    
    ВыполнениеЗапроса=Запрос.Выполнить();
    Выборка=ВыполнениеЗапроса.Выбрать();  
    Пока Выборка.Следующий() Цикл
        ХранилищеЗначенияФайла = Выборка.Хранилище;
        Если ХранилищеЗначенияФайла=Неопределено Тогда
            Продолжить;
        КонецЕсли;
        
        Значение=ХранилищеЗначенияФайла.Получить();
        Если ТипЗнч(Значение)=Тип("ДвоичныеДанные") Тогда
            Значение.Размер();
        ИначеЕсли ТипЗнч(Значение)=Тип("Картинка") Тогда
            Сообщить(Значение.ПолучитьДвоичныеДанные().Размер());
        Иначе
            Сообщить("В хранилище объект типа"""+Строка(ТипЗнч(Значение))+"""");
            
        КонецЕсли;
    КонецЦикла;
Программист всегда исправляет последнюю ошибку.