Сохранение PDF-файла из сторонней SQL базы. #697045


#0 by sergejkonet
Добрый день! Нужно реализовать сохранение или открытие pdf-файлов из сторонней sql-базы. в sql хранится одна таблица с двумя параметрами: номер и само изображение(бинарник), К базе подключается, запись нужную находит, а вот открыть не получается. Выдает ошибку "Неправильный путь к файлу '25 50 44 46 2D 31 2E....." и дальше содержание бинарника. Я так пониманию нужно указать в ОписанииПердаваемогоФайла, другие параметры. Но какие что-то не пойму. Пробовал ссылку на ВнешниеИсточникиДанных, не проходит. Да. при нажатии кнопки запускающей процедуру, предлагает сохранить или открыть, при сохранении выдает ошибку, но в папке qw появляется файл pdf 0байт..Прошу подсказать с решением данной проблемы. Процедура VievНажатие(Элемент)
#1 by sapphire
видимо, надо через ADO DB Stream :)
#2 by sergejkonet
Так. пойду гуглить. Но если не затруднит, можно немного подробнее описать что к чему.
#3 by sapphire
Че там описывать - открываешь поток, сохраняешь в файл.
#4 by golden-pack
#5 by sergejkonet
Что-то я торможу. не могу никак разобраться что куда. Пытался вставить поток но при выполнении вылетает ошибка "Ошибка при вызове метода контекста (Write)     Stream.Write(p); по причине: Произошла исключительная ситуация (ADODB.Stream): Аргументы имеют неверный тип, выходят за пределы допустимого диапазона или вступают в конфликт друг с другом." Может есть у кого-то рабочие примеры, что бы можно было разбираться по аналогии, что куда, или здесь ткните пальцем. А то в инете в основном обще примеры, и внять им не получается:(
#6 by sergejkonet
Вот что получилось в новом запросе: Connection.Provider = "SQL Server Native Client 10.0";     Сообщить ("Проблемы с подключением к InterBase" ); КонецПроцедцры Но здесь новая проблема. Как обяснить SQL что переменная НомерЧертежа, заданная первой строкой и Значение НомерЧертежа в самом запросе, есть одно и то же. 1С при отладке это понимает, присваиет нужное значение, но вот SQL выдает ошибку: Ошибка при вызове метода контекста (Open) RecordSet.Open(Запрос,Connection); по причине: Произошла исключительная ситуация (Microsoft SQL Server Native Client 10.0): Недопустимое имя столбца "НомерЧертежа". Но здесь и в самом запросе очевидно какой-то косяк, т.к. когда подставлял в запрос значение номера, существующего в базе он ругался что не может найти такую запись в таблице.
#7 by shuhard
[SELECT image FROM dbo.Chertezhi WHERE number = НомерЧертежа] феерично
#8 by sergejkonet
О да(((Я просто реально впервые с 1С сталкиваюсь, поэтому извините за такие тупые ошибки и если можно подскажите как поправить.
#9 by sergejkonet
Так-с. докопался. Вот этот код робит. Процедура VievНажатие(Элемент) Connection.Provider = "SQL Server Native Client 10.0";     Сообщить ("Проблемы с подключением к InterBase" ); Если исполнять весь код, то открывается пустой пдф-ридер, если же удалить последние 3 строчки, то открывается с изображением. все как надо. все открывается,но как удалять из временной папки после закрытий пдф-ридера? Есть какие-то идеи может?
#10 by sergejkonet
Было бы допустимо просто при совпадении имен перезаписывать файл, т.к. все файлы будут во временной папке, а компы выключаются каждый день, то пользователи немного места отхватят, я так понимаю здесь нужно указать параметр какой-то. но где и какой?
#11 by sergejkonet
Решилась проблема введением параметра adSaveCreateOverWrite, но правда перед этим пришлось присвоить ему значение 2. Не знаю правда насколько это правильное решение, но вроде как все работает. Прошу проконсультировать по степени кривости такого подхода.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С