Вход | Регистрация

1С:Предприятие ::

Метки: 

Как записать картинку во внешнюю SQL базу

Я
   ЭЦ
 
11.01.13 - 15:14
Господа !
Есть необходимость обработкой писать данные во внешнюю базу MS SQL.
Все типы пишутся нормально, но записать картинку в Blob поле не получается.
Прошу подсказать рабочий пример.
Спасибо
 
 
   mikecool
 
1 - 11.01.13 - 15:15
http://www.1c-galaxy.ru/forum4/topic410837/
первая ссылка по красной Я
   pessok
 
2 - 11.01.13 - 15:20
(1) там вроде не решили :)
(0) в блоб у меня тоже не писалось как-то, в итоге клали на фтп, а вместо блоба сделали стринг с названием картинки. уже потом веб-сервис грузил на сайт с фтп
   ЭЦ
 
3 - 11.01.13 - 15:20
насчет первой ссылке - не понял, а за пример спасибо щас будем пробовать
   mikecool
 
4 - 11.01.13 - 15:21
(2) а я не разбирал, просто механизм немного путанный, но когда то сам делал и все работало
   mikecool
 
5 - 11.01.13 - 15:21
+4 отличие есть в методике заливки через разные провайдеры
   pessok
 
6 - 11.01.13 - 15:22
(4) а вот у меня вроде не писало... а может и писало, но сайтостроители не могли блоб разобрать... не помню, помню, что делали фтп :)
   ЭЦ
 
7 - 12.01.13 - 17:28
ЕСли кому интересно то вот так пишет :

Попытка
    Поток = Новый COMОбъект("ADODB.Stream");
    Поток.Type = 1;
    Поток.Mode = 3;
    Поток.Open();
    Поток.LoadFromFile(фИмяФайла); 

    ЗагружаемыйФайл = Новый ДвоичныеДанные(фИмяФайла);
 
    Команда = Новый COMОбъект("ADODB.Command"); 
    Команда.ActiveConnection = SQLСоединение; 
    Команда.NamedParameters = True;
    Команда.CommandType = 1;
     Команда.CommandText = "UPDATE Anketa SET Anketa.Anketa_Pic = ? WHERE Anketa.Anketa_Guid = '395e5380-44fa-11e1-9025-00155dc80406'";
     ПараметрSQL=Команда.CreateParameter("@Pic", 205, 1,10000,Поток.Read());
    
    Поток.Close();
    
    Команда.Parameters.Append(ПараметрSQL);
      Команда.Execute();    
    
    Исключение
        Сообщить("НЕУДАЧНАЯ ПОПЫТКА ЗАПИСИ ИЗОБРАЖЕНИЯ !",СтатусСообщения.Важное);
        Сообщить("  описание = " + ОписаниеОшибки());
    КонецПопытки;
    SQLСоединение.Close();
   mikecool
 
8 - 12.01.13 - 17:30
(7) нормально так ))
а ЗагружаемыйФайл = Новый ДвоичныеДанные(фИмяФайла); зачем?
   mikecool
 
9 - 12.01.13 - 17:32
и вопрос: вот это нельзя было сократить?
    Поток.Open();
    Поток.LoadFromFile(фИмяФайла); 
    Поток.Read()
может там все в одну строку делается...
   vde69
 
10 - 12.01.13 - 18:23
(7) с большими файлами будут проблеммы

более правильно использовать спец оператор AppendChunk   который "кусочками" отправляет данные

пример вот тут http://infostart.ru/public/16687/ только тип поля там в базе другой но будет работать и с имж
 
 Рекламное место пустует
   ЭЦ
 
11 - 12.01.13 - 19:17
Господа
Я Вам выложил работающий пример
если есть желание улучшить - то улучшите и выложите работающий код.
Это будет правильно
   ЭЦ
 
12 - 12.01.13 - 19:18
Например хотелось бы юзать параметр по наименованию а не по номеру.
   vde69
 
13 - 12.01.13 - 21:15
(11) ты в своем примере не сможешь залит файл в 100 метров, ну не сможешь по определению и даже в 10 метров скорее всего не сможешь и дажу в 1 метр зальешь только если на сервере будет дофига памяти....
   Jofa
 
14 - 12.01.13 - 21:32
(13)Напиши свой пример
   vde69
 
15 - 12.01.13 - 22:08
   vde69
 
16 - 12.01.13 - 22:11
(15) + сам офигел, пример 7 ми летней давности
   Jofa
 
17 - 12.01.13 - 22:17
(15)Таким образом любой файл можно записать?
   vde69
 
18 - 12.01.13 - 22:42
(17) в разумных пределах, сколько сам скуль тянет
   Jofa
 
19 - 13.01.13 - 12:32
(18)Что ты подразумваешь под "сам скуль тянет"?
   vde69
 
20 - 13.01.13 - 18:03
(19) у самого скуля есть ограничения на размер поля имж, на память не помню какие, да и от версий вроде зависит вообще максимальный размер базы, например на стандарт едишен теробайный имдж не возмет по определению...


Список тем форума
Рекламное место пустует Рекламное место пустует
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует