Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2, свеженьких 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Запись графических файлов в базу MS SQL 2 страниц V   1 2 >          
andrew76 Подменю пользователя
сообщение 07.07.16, 6:20
Сообщение #1

Оратор
*****
Группа: Пользователи
Сообщений: 443
Из: Казахстан
Спасибо сказали: 43 раз
Рейтинг: 43

Доброе всем утро !

Возникла необходимость записи графических файлов (тип jpg) в базу SQL.
Файлы jpg хранятся на диске в определенном каталоге.Как записывать строковые значения из 1с в базу sql понятно,
а вот как с графикой команду писать ?

logist Подменю пользователя
сообщение 07.07.16, 8:55
Сообщение #2

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Вероятно как двоичные данные.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

andrew76 Подменю пользователя
сообщение 07.07.16, 9:13
Сообщение #3

Оратор
*****
Группа: Пользователи
Сообщений: 443
Из: Казахстан
Спасибо сказали: 43 раз
Рейтинг: 43

А по-подробнее (если можно с примером) можно ? в базе tbFoto есть поле Foto.

andrew76 Подменю пользователя
сообщение 07.07.16, 11:48
Сообщение #4

Оратор
*****
Группа: Пользователи
Сообщений: 443
Из: Казахстан
Спасибо сказали: 43 раз
Рейтинг: 43

вот,кое-что нашёл :


Поток = Новый COMОбъект("ADODB.Stream");
Поток.Type = 1;
Поток.Open();
Поток.LoadFromFile(ПолноеИмяФайла);
...НужноеПоле.SQL= Поток.Read();




andrew76 Подменю пользователя
сообщение 08.07.16, 7:49
Сообщение #5

Оратор
*****
Группа: Пользователи
Сообщений: 443
Из: Казахстан
Спасибо сказали: 43 раз
Рейтинг: 43

При импорте данных всё ок.Но при открытии проги,в базу sql которой пишем фотки-вываливается ошибка "Error stream".
В путаной документации на БД есть указание ,что фото (содержимое поля Foto) должно быть преобразовано к типу Base64.Кто-нибудь
с таким сталкивался ?

Vofka Подменю пользователя
сообщение 08.07.16, 8:03
Сообщение #6

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4519 раз
Рейтинг: 3641.2

Есть функция Base64Строка

andrew76 Подменю пользователя
сообщение 08.07.16, 8:23
Сообщение #7

Оратор
*****
Группа: Пользователи
Сообщений: 443
Из: Казахстан
Спасибо сказали: 43 раз
Рейтинг: 43

Так тоже не работает :

Поток = Новый COMОбъект("ADODB.Stream");
Поток.Type = 1;
Поток.Open();
Поток.LoadFromFile(ПолноеИмяФайла);
Строка64=Base64Строка(Поток.Read());

Vofka Подменю пользователя
сообщение 08.07.16, 9:16
Сообщение #8

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4519 раз
Рейтинг: 3641.2

Потому что надо не поток кодировать, а двоичные данные.

andrew76 Подменю пользователя
сообщение 08.07.16, 9:31
Сообщение #9

Оратор
*****
Группа: Пользователи
Сообщений: 443
Из: Казахстан
Спасибо сказали: 43 раз
Рейтинг: 43

Подскажите ,пожалуйста,как это реализовать ?

Vofka Подменю пользователя
сообщение 08.07.16, 9:34
Сообщение #10

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4519 раз
Рейтинг: 3641.2

ДвоичныеДанные = Новый ДвоичныеДанные(ПутьКФайлу);
СтрокаБэйс64 = Base64Строка(ДвоичныеДанные);

andrew76 Подменю пользователя
сообщение 08.07.16, 9:52
Сообщение #11

Оратор
*****
Группа: Пользователи
Сообщений: 443
Из: Казахстан
Спасибо сказали: 43 раз
Рейтинг: 43

не работает : (ошибка не вылеьает,но и в базе нет ничего)

ДвоичныеДанные = Новый ДвоичныеДанные("c:\san\s.jpg");
СтрокаБэйс64 = Base64Строка(ДвоичныеДанные);
Значение=Base64Значение(СтрокаБэйс64);
..НужноеПоле.SQL= Значение;

logist Подменю пользователя
сообщение 08.07.16, 10:57
Сообщение #12

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(andrew76 @ 08.07.16, 10:52) *
Значение=Base64Значение(СтрокаБэйс64);

Это зачем? Вы же этим обратно вернули в двоичные данные.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

andrew76 Подменю пользователя
сообщение 08.07.16, 10:59
Сообщение #13

Оратор
*****
Группа: Пользователи
Сообщений: 443
Из: Казахстан
Спасибо сказали: 43 раз
Рейтинг: 43

Так что-ли :

ДвоичныеДанные = Новый ДвоичныеДанные("c:\san\s.jpg");
СтрокаБэйс64 = Base64Строка(ДвоичныеДанные);
..НужноеПоле.SQL= СтрокаБэйс64;

logist Подменю пользователя
сообщение 08.07.16, 11:00
Сообщение #14

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

ДвоичныеДанные = Новый ДвоичныеДанные("c:\san\s.jpg");
..НужноеПоле.SQL= Base64Строка(ДвоичныеДанные);


Signature
Личные бесплатные консультации не даю, для этого есть форум!

andrew76 Подменю пользователя
сообщение 08.07.16, 11:10
Сообщение #15

Оратор
*****
Группа: Пользователи
Сообщений: 443
Из: Казахстан
Спасибо сказали: 43 раз
Рейтинг: 43

Не получается.При открытии проги сразу прёт ошибка -"Bitmap Image is Not Valid"

logist Подменю пользователя
сообщение 08.07.16, 12:18
Сообщение #16

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(andrew76 @ 08.07.16, 12:10) *
-"Bitmap Image is Not Valid"

Это скорее всего значит, что изображение не соответствует формату JPG, т.е. по факту в файле JPEG например, или битый файл.

У меня подобная штука работает, таким кодом
СодержимоеФайла = Base64Строка(Новый ДвоичныеДанные(ПутьФайла));


Попробуйте так:
    Картинка = Новый Картинка(ПутьФайла);
    ИмяВрФайла = ПолучитьИмяВременногоФайла();
    Картинка.Записать(ИмяВрФайла);
    СодержимоеФайла = Base64Строка(Новый ДвоичныеДанные(ИмяВрФайла));


Signature
Личные бесплатные консультации не даю, для этого есть форум!

andrew76 Подменю пользователя
сообщение 08.07.16, 12:44
Сообщение #17

Оратор
*****
Группа: Пользователи
Сообщений: 443
Из: Казахстан
Спасибо сказали: 43 раз
Рейтинг: 43

та же история : При открытии проги сразу прёт ошибка -"Bitmap Image is Not Valid"

может в коде что :

    Картинка = Новый Картинка("c:\san\s.jpg");
    ИмяВрФайла = ПолучитьИмяВременногоФайла();
    Картинка.Записать(ИмяВрФайла);
    СодержимоеФайла = Base64Строка(Новый ДвоичныеДанные(ИмяВрФайла));
    
    ТекстЗапросаADO ="Insert into tbFoto (Active,MainID,Foto) Values (1,'" + un + "','"+СодержимоеФайла+"')";
    Connection.Execute(ТекстЗапросаADO,,128);

Petre Подменю пользователя
сообщение 08.07.16, 13:10
Сообщение #18

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2905
Из: Київ, Україна
Спасибо сказали: 1147 раз
Рейтинг: 1228.9

andrew76 @ Сегодня, 13:44 *,
Какой тип поля?


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

andrew76 Подменю пользователя
сообщение 08.07.16, 13:15
Сообщение #19

Оратор
*****
Группа: Пользователи
Сообщений: 443
Из: Казахстан
Спасибо сказали: 43 раз
Рейтинг: 43

тип image

andrew76 Подменю пользователя
сообщение 14.07.16, 15:27
Сообщение #20

Оратор
*****
Группа: Пользователи
Сообщений: 443
Из: Казахстан
Спасибо сказали: 43 раз
Рейтинг: 43

Попробовал переписать код :

Поток = Новый COMОбъект("ADODB.Stream");
Поток.Type = 1;
Поток.Open();
Поток.LoadFromFile("c:\san\s.jpg");
RecordSet = Новый COMОбъект("ADODB.RecordSet");
RecordSet.CursorLocation = 3;
RecordSet.LockType = 4;
Запрос = "";

RecordSet.Open("Select * from tbFoto", Connection);

RecordSet.AddNew();
ТекстЗапросаADO ="SET IDENTITY_INSERT tbFoto OFF";
Connection.Execute(ТекстЗапросаADO,,128);
RecordSet.Fields("MainID").Value = un;  
RecordSet.Fields("Foto").Value = Поток.Read(-1);
RecordSet.Fields("Active").Value = 1;  
RecordSet.Update();
Поток.Close();
RecordSet.Close();


в строке присваивания полю MainID значения идентификатора -RecordSet.Fields("MainID").Value = un; вываливается ошибка следующего содержания :{Форма.ФормаОтчета.Форма(606)}: Ошибка при установке значения атрибута контекста (Value): Произошла исключительная ситуация (Provider): Член группы не найден.

Что это ?

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


2 страниц V   1 2 >
Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 19.04.24, 2:55
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!