|   |   | 
| 
 | 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 | 
        ДвоичныеДанныеФайла = ТвоиДвоичныеДанные; // РаботаСФайлами.ДвоичныеДанныеФайла(Объект.Файл);
 Поток = ДвоичныеДанныеФайла.ОткрытьПотокДляЧтения(); ДокументПДФ.Прочитать(Поток); | |||
| 11
    
        andrewrocker naïve 28.07.25✎ 19:50 | 
        (10) спасибо за пример, дописал, чтобы заработало
 ДвоичныеДанныеФайла = Объект.Ссылка.СканОбразДоговора.Получить(); Поток = ДвоичныеДанныеФайла.ОткрытьПотокДляЧтения(); СсылкаНаСканОбраз.Прочитать(Поток); | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |