![]() |
![]() |
![]() |
|
v7: Сохранение картинки полученой из базы SQLLite | ☑ | ||
---|---|---|---|---|
0
ПеАлНи
14.03.19
✎
11:50
|
Доброго дня.
Есть база данных SQLLite в одной из таблиц храняться картинки. Пытаюсь с 1С прочитать данные картинки и сохранить на диск. Все читается записываеться на диск, но размер файла 0 байт. Смотрю базу SQLLite с помощью SQLLite Studio в нужном поле есть данные. В базе поле имеет тип данных BLOB. Может кто то подскажет где я делаю не то. Код процедуры Процедура ФотоОтчет() ЗапросБД = БДSQLLite.НовыйЗапрос(); ТекстЗапросаSQL = " |SELECT | Visit.created, | Visit.date, | Visit.id, | Visit.remark, | Visit.userid, | Visit$items.id AS picture |FROM Visit |INNER JOIN Visit$items on | Visit.userid = Visit$items.Visit$userid | AND Visit.date = Visit$items.Visit$date |WHERE | datetime(Visit.date / 10000000 - 11644473600, 'unixepoch') >= :Дата1 | AND datetime(Visit.date / 10000000 - 11644473600, 'unixepoch') < :Дата2 | AND Visit.userid = :Юзер |"; Дата1 = Формат(НачДата-1,"ДГГГГММДД"); Дата2 = Формат(КонДата,"ДГГГГММДД"); Дата1 = Лев(Дата1,4)+"-"+Сред(Дата1,5,2)+"-"+Прав(Дата1,2); Дата2 = Лев(Дата2,4)+"-"+Сред(Дата2,5,2)+"-"+Прав(Дата2,2); ТекАгент = ВернутьАгента(); ЗапросБД.Подставлять("Дата1",Дата1); ЗапросБД.Подставлять("Дата2",Дата2); ЗапросБД.Подставлять("Юзер", Прав(ТекАгент.Код,3)); Рез = СоздатьОбъект("ТаблицаЗначений"); Рез = ЗапросБД.ВыполнитьЗапрос(ТекстЗапросаSQL); Если Рез.КоличествоСтрок() > 0 Тогда Попытка Картинка = СоздатьОбъект("BinaryData"); Исключение Сообщить("Не удалось создать класс BinaryData","!"); Возврат; КонецПопытки; Рез.ВыбратьСтроки(); Пока Рез.ПолучитьСтроку() = 1 Цикл Картинка.ПрочитатьДанные(Рез.picture); Папка = "G:\ФотоОтчеты\"; Картинка.СохранитьВФайл(Папка + Прав(ТекАгент.Код,3) + "_" + Рез.id + ".jpg", 0); Картинка.Закрыть(); КонецЦикла; КонецЕсли; КонецПроцедуры |
|||
1
Djelf
гуру
14.03.19
✎
15:43
|
(0) Во первых:
ПрочитатьДанные / ReadData Синтаксис: ПрочитатьДанные(Данные, [Режим]) Параметры: Данные - тип: Число. Число, для приема прочитанных данных; Режим - тип: Число. Режим чтения: 0 - читается число в 1 байт (по умолчанию); 1 - читается число в 2 байта; 2 - читается число в 4 байта. Описание: читает число из данных объекта. Если данных недостаточно для чтения числа - происходит исключение. Во вторых Рез.pictureв лучшем случае строка, но ни как не блоб, т.к. в блобе могут быть нули и т.п., а в строке нет. Хочешь получить BinaryData используй 1sqlite http://catalog.mista.ru/public/559826/ |
|||
2
ПеАлНи
14.03.19
✎
15:48
|
(1)
БЛАГОДАРЮ ЗА НАВОДКУ. БУДУ КОПАТЬ. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |