![]() |
![]() |
![]() |
|
v8: просмотр PDF файлов средствами платформы 8.3.25.1680 из интерфейса 1с:Нетленка | ☑ | ||
---|---|---|---|---|
0
andrewrocker
naïve
26.07.25
✎
21:08
|
Добрый день всем,
добавил на форму PDF поле "СсылкаНаСканОбраз", тип "Строка" длина 0. На форме поле "СсылкаНаСканОбраз" представлено как поле PDF документа. Оно не показывает PDF. В справочнике "Договор" есть реквизит "СканОбразДоговора" с типом ХранилищеЗначений. В нем хранятся собственно сами договоры. Помогите написать код, чтобы при открытии элемента справочника поле PDF показывало скан договора. |
|||
1
andrewrocker
naïve
26.07.25
✎
21:08
|
Пытался решить вопрос самостоятельно, получил два неработающих варианта:
<вариант 1> Поток = СсылкаНаСканОбраз.ОткрытьПотокДляЧтения(); ДокументПДФ = Новый ДокументPDF(); ДокументПДФ.Прочитать(СсылкаНаСканОбраз); СсылкаНаСканОбраз = ДокументПДФ; ДокументПДФ.Показать(СсылкаНаСканОбраз); <вариант 2> СсылкаНаСканОбраз = ПолучитьНавигационнуюСсылку(Объект.Ссылка, "СканОбразДоговора"); ДвоичныеДанныеФайла = ПолучитьИзВременногоХранилища(СсылкаНаСканОбраз); Поток = ДвоичныеДанныеФайла.ОткрытьПотокДляЧтения(); СсылкаНаСканОбраз.Прочитать(Поток); |
|||
2
Волшебник
26.07.25
✎
21:09
|
Пора уже перестать верить в чудеса, что поле типа "строка" покажет PDF
|
|||
3
Волшебник
26.07.25
✎
21:10
|
Хотя я согласен, что иногда они показывают картинки при типе "строка". Но это чёрная магия
|
|||
4
andrewrocker
naïve
26.07.25
✎
21:38
|
(2) тут намек понял, сделал это поле типа "документ PDF".
Осталось разобраться с кодом показа PDF Сейчас накреативил Вариант 3. Он тоже не работает. Ошибка "неправильный заголовок PDF файла". ДокументПДФ = Новый ДокументPDF(); СсылкаНаСканОбраз = ПолучитьНавигационнуюСсылку(Объект.Ссылка, "СканОбразДоговора"); ДокументПДФ.Прочитать(СсылкаНаСканОбраз); |
|||
5
Волшебник
26.07.25
✎
21:41
|
(4) Система не врёт. Программа никогда не врёт. Она честно докладывает о всех проблемах, которые ей встретились на пути и которые предусмотрел программист.
|
|||
6
Волшебник
26.07.25
✎
21:50
|
а может действительно "неправильный заголовок PDF файла"?
и может ПолучитьНавигационнуюСсылку выдаёт ссылку, а не файл? Ну это так, я накидываю мыслишек на алтарь логики |
|||
7
andrewrocker
naïve
26.07.25
✎
21:59
|
(6) спасибо за мысль,
Теперь ловлю ошибку, что у меня неправильный путь к файлу. Не могу понять причин - у меня есть навигационная ссылка и она вполне себе возвращает адрес. Но по этому адресу я не могу получить файл. ДокументПДФ = Новый ДокументPDF(); СсылкаНаСканОбраз = ПолучитьНавигационнуюСсылку(Объект.Ссылка, "СканОбразДоговора"); ДокументПДФ = ПолучитьИзВременногоХранилища(СсылкаНаСканОбраз); ДокументПДФ.Прочитать(СсылкаНаСканОбраз); |
|||
8
Мимохожий Однако
27.07.25
✎
06:35
|
Покажи, как помещаешь в реквизит "СканОбразДоговора" данные. Гложат смутные сомнения...
|
|||
9
Chameleon1980
27.07.25
✎
07:50
|
что за ересь в каждой попытке
? сохрани ДД во временный файл или получи дд поток и прочитай ДокументPDF (PDFDocument) Прочитать (Read) Вариант синтаксиса: Из файла Синтаксис: Прочитать(<ИмяФайла>, <Пароль>) Параметры: <ИмяФайла> (обязательный) Тип: Строка. Имя файла для чтения PDF-документа. <Пароль> (необязательный) Тип: Строка. Пароль для доступа к PDF-документу. Описание варианта метода: Считывает документ PDF из файла. Позволяет считывать PDF-документ из файла формата "документ PDF". Если документ защищен паролем и пароль не указан или является не верным, то генерируется исключение. Вариант синтаксиса: Из потока Синтаксис: Прочитать(<Поток>, <Пароль>) Параметры: <Поток> (обязательный) Тип: Поток, ПотокВПамяти, ФайловыйПоток. Поток для чтения PDF-документа. <Пароль> (необязательный) Тип: Строка. Пароль для доступа к PDF-документу. Описание варианта метода: Считывает документ PDF из потока. Позволяет считывать PDF-документ из файла формата "документ PDF". Если документ защищен паролем и пароль не указан или является не верным, то генерируется исключение. Описание: Считывает PDF-документ из файла. Доступность: Тонкий клиент, сервер, толстый клиент. Использование в версии: Доступен, начиная с версии 8.3.21. Методическая информация <вариант 2> СсылкаНаСканОбраз = ПолучитьНавигационнуюСсылку(Объект.Ссылка, "СканОбразДоговора"); ДвоичныеДанныеФайла = ПолучитьИзВременногоХранилища(СсылкаНаСканОбраз); Поток = ДвоичныеДанныеФайла.ОткрытьПотокДляЧтения(); СсылкаНаСканОбраз.Прочитать(Поток); зачем тут ПолучитьНавигационнуюСсылку? и получить из ВХ? у тебя есть ХЗ там ДД. прочитай как поток и прочитай поток в документПДФ пьяный не?
|
|||
10
Chameleon1980
27.07.25
✎
08:16
|
ДвоичныеДанныеФайла = ТвоиДвоичныеДанные; // РаботаСФайлами.ДвоичныеДанныеФайла(Объект.Файл);
Поток = ДвоичныеДанныеФайла.ОткрытьПотокДляЧтения(); ДокументПДФ.Прочитать(Поток); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |