Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
15 мая 2024, 22:09

Как прочитать файл pdf из двоичных данных

Автор Алексей_1985_06, 26 апр 2024, 20:02

0 Пользователей и 1 гость просматривают эту тему.

Алексей_1985_06

Уважаемые программисты, подскажите как при получении двоичных данных открыть pdf (который там храниться)?
При создании формы, получаю из РС данные,ю если они есть - то необходимо их (файл pdf) отобразить на форме.
Попробовал реализовать так, но выходит ошибка! Подскажите как правильно это сделать?

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)     

ЕстьЭлектронныйДокумент = Ложь; // Реквизит формы с типом Булево

Если НЕ Параметры.Ключ.Пустая() Тогда   // Если открывается не новый элемент.

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
// ФайлДокумента - это реквизит с типом ХЗ
| ЭлектронныеДокументыНаИзделия.ФайлДокумента КАК ФайлДокумента
|ИЗ
| РегистрСведений.ЭлектронныеДокументыНаИзделия КАК ЭлектронныеДокументыНаИзделия
|ГДЕ
| ЭлектронныеДокументыНаИзделия.ОбъектЭксплуатации = &ОбъектЭксплуатации
| И ЭлектронныеДокументыНаИзделия.НаименованиеДокумента = &НаименованиеДокумента";

Запрос.УстановитьПараметр("НаименованиеДокумента", Объект.Ссылка); 
Запрос.УстановитьПараметр("ОбъектЭксплуатации", Объект.Владелец); 
РезультатЗапроса = Запрос.Выполнить();

Если НЕ РезультатЗапроса.Пустой() Тогда // Есть документ
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать(); 
Выборка.Следующий();

ДвоичныеДанныеФайла = Выборка.ФайлДокумента.Получить(); // ДвоичныеДанныеФайла - это реквизит формы.
Если ДвоичныеДанныеФайла <> "" Тогда  // есть двоичные данные
ЕстьЭлектронныйДокумент = Истина; //ЕстьЭлектронныйДокумент - это реквизит формы, тип Булево

       
// Показать считанный из БД документ пользователю

// ЗДЕСЬ ОШИБКА:
// Значение не является значением объектного типа (ОткрытьПотокДляЧтения)
// {Справочник.ДокументыНаИзделия.Форма.ФормаЭлемента.Форма(37)}:Поток = ДвоичныеДанныеФайла.ОткрытьПотокДляЧтения(); // ДвоичныеДанныеФайла - это реквизит формы
//[ОшибкаВоВремяВыполненияВстроенногоЯзыка, ОшибкаИспользованияВстроенногоЯзыка]   


   Поток = ДвоичныеДанныеФайла.ОткрытьПотокДляЧтения(); // ДвоичныеДанныеФайла - это реквизит формы
   ДокументПДФ.ПрочитатьАсинх(Поток);  


КонецЕсли;
КонецЕсли;
КонецЕсли;

КонецПроцедуры


antoneus

Потому что не надо, наверно, двоичные данные преобразовывать в строку. Сделайте ДвоичныеДанныеФайла не реквизитом формы, а переменной и проверяйте ее на Неопределено, тогда, наверно, получится.

Алексей_1985_06

antoneus, Большое спасибо  :ooifh: ! Действительно упустил я этот момент из вида!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск