Имя: Пароль:
1C
1С v8
Запись картинок не в 1с базу данных
0 kolts23381
 
29.08.15
21:56
Хочу записать картинки в базу данных постре.
Пытаюсь так
"INSERT INTO images(
|  image)
|VALUES("
+ Данные.Хранилище.Получить() + ")";
В отладчике вместо двоичных данных просто слово "картинка".
Тип данных колонки image bytea. Но ничего не записывается.
Получать картинки с другой базы данных и записать их в 1с могу, используя ADODB.Stream, а как записать в стороннюю базу не знаю
1 Стальная Крыса
 
30.08.15
05:31
А байтики в текст кто переводить будет?
2 Стальная Крыса
 
30.08.15
05:33
В одном месте значит ADODB.Stream, а тут почему не так?
3 kolts23381
 
30.08.15
12:39
image = Новый COMОбъект("ADODB.Stream");
image.type = 1;
image.Open();
image.LoadFromFile("C:\database\1.jpg");
RecordSet    =    Новый COMОбъект("ADODB.Recordset");
RecordSet.CursorLocation    =    3;
RecordSet.ActiveConnection = Connection;
RecordSet.Open("Select * FROM images",Connection,2,3);
RecordSet.AddNew();
RecordSet.Fields("image").Value = image.Read();
Recordset.Fields("product").Value = Данные.Объект.УникальныйИдентификатор();    
RecordSet.Update();
RecordSet.Close();
Сейчас пробую так. Картинку пишет, правда пока не проверил правильно ли.Не хочет писать уникальный идентификатор, он имеет такой вид 'cbcf493f-55bc-11d9-848a-00112f43529a'. Через ADODB.Connection пишет без проблем.
4 kolts23381
 
30.08.15
12:50
И картинка тоже не хочет. Тип данных может не нравится, bytea стоит.
5 jsmith82
 
30.08.15
12:56
Данные.Хранилище.Получить() это и есть картинго
а если сначала в файл, а потом в двоичные данные
6 kolts23381
 
30.08.15
14:45
Нашел на этот сайте такой способ
image = Новый COMОбъект("ADODB.Stream");
                    image.Type = 1;
                    image.Mode = 3;
                    image.Open();
                    image.LoadFromFile("C:\database\1.jpg");
                    Команда = Новый COMОбъект("ADODB.Command");
                    Команда.ActiveConnection = Connection;
                    Команда.NamedParameters = True;
                    Команда.CommandType = 1;
                Команда.CommandText = "INSERT INTO images (image,product) VALUES(?,'"+ Данные.Объект.УникальныйИдентификатор() +"')";
                ПараметрSQL=Команда.CreateParameter("@Pic", 205, 1,10000,image.Read());
                    image.Close();    
                    Команда.Parameters.Append(ПараметрSQL);
                    Команда.Execute();

Выбивает ошибку:
Ошибка при записи изменений при обмене:  Ошибка при вызове метода контекста (CreateParameter): Произошла исключительная ситуация (ADODB.Command): Приложение использует для текущей операции значение неверного типа.
Программист всегда исправляет последнюю ошибку.