Имя: Пароль:
1C
 
Получить данные из присоединенного файла
0 Веселый Джузеппе
 
01.12.15
15:44
Добрый вечер. Есть справочник, подключенный к подсистеме двоичные данные. Сделан в самописной системе по аналогии с номенклатурой в УТ 11. Как программно получить значение хранилища с файлом? Визуально картинка храниться и отображается. Пытаюсь сделать так:
&НаСервере
Процедура ппппНаСервере()
    
    Запрос = Новый запрос("ВЫБРАТЬ
                          |    ОбъектПрисоединенныеФайлы.ТекстХранилище КАК ТекстХранилище,
                          |    ОбъектПрисоединенныеФайлы.Представление КАК Представление,
                          |    ОбъектПрисоединенныеФайлы.ФайлХранилище КАК ФайлХранилище
                          |ИЗ
                          |    Справочник.ОбъектПрисоединенныеФайлы КАК ОбъектПрисоединенныеФайлы");
    Для каждого строка из Запрос.Выполнить().Выгрузить() Цикл
        аа = ПолучитьРазмерДанных(строка.ФайлХранилище);
        сообщить(аа);
        сообщить(строка.Представление);
    КонецЦикла;
    
КонецПроцедуры

&НаСервере
Функция ПолучитьРазмерДанных(Знач Данные)

    Если ТипЗнч(Данные) = Тип("ХранилищеЗначения") Тогда
        
        ДанныеХранилища = Данные.Получить();
        Если ДанныеХранилища = Неопределено Тогда
            Возврат 0;
        КонецЕсли;
    
        Если ТипЗнч(ДанныеХранилища) = Тип("Картинка") Тогда
            ДанныеХранилища = ДанныеХранилища.ПолучитьДвоичныеДанные();
        ИначеЕсли ТипЗнч(ДанныеХранилища) = Тип("Строка") Тогда
            Возврат СтрДлина(ДанныеХранилища);
        КонецЕсли;
        
        ДанныеBase64 = Base64Строка(ДанныеХранилища);
    ИначеЕсли ТипЗнч(Данные) = Тип("ДвоичныеДанные") Тогда
        ДанныеBase64 = Base64Строка(Данные);
    ИначеЕсли ТипЗнч(Данные) = Тип("Картинка") Тогда
        ДанныеBase64 = Base64Строка(Данные.ПолучитьДвоичныеДанные());
    Иначе
        Возврат СтрДлина(XMLСтрока(Данные));
    КонецЕсли;
    
КонецФункции

Но и ФайлХранилище и ТекстХранилище после Данные.Получить(); = нНеопределено.
1 Веселый Джузеппе
 
01.12.15
15:51
Запрос = Новый запрос("ВЫБРАТЬ
                          |    ОбъектПрисоединенныеФайлы.ТекстХранилище КАК ТекстХранилище,
                          |    ОбъектПрисоединенныеФайлы.Представление КАК Представление,
                          |    ОбъектПрисоединенныеФайлы.ФайлХранилище КАК ФайлХранилище,
                          |    ОбъектПрисоединенныеФайлы.Ссылка
                          |ИЗ
                          |    Справочник.ОбъектПрисоединенныеФайлы КАК ОбъектПрисоединенныеФайлы");
    Для каждого строка из Запрос.Выполнить().Выгрузить() Цикл
        
        ДвоичныеДанные = ПрисоединенныеФайлы.ПолучитьДвоичныеДанныеФайла(строка.ссылка);
        Строка64 = Base64Строка(ДвоичныеДанные);
        
    КонецЦикла;


разобрался.
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс