Имя: Пароль:
1C
 
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
ДвоичныеДанныеФайла = ТвоиДвоичныеДанные; // РаботаСФайлами.ДвоичныеДанныеФайла(Объект.Файл);
Поток = ДвоичныеДанныеФайла.ОткрытьПотокДляЧтения();
ДокументПДФ.Прочитать(Поток);
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.