Имя: Пароль:
1C
 
v8: Работа с картинками в 1с8(забрать с SQL сервера, закачать в 1С)
0 SergPas
 
23.11.09
18:19
необходимо с SQL сервера запросом забрать картинку лежащую в поле  image и в 1с8 показать ее. подскажите как в 1с8 вытянутые с помощью запроса данные показать в виде картинки ?
1 shuhard
 
23.11.09
18:23
(0) в последние две недели была  идентичная ветка - ищи
2 shuhard
 
23.11.09
18:25
(1) было по свежее
v8: Загрузка image из SQL в 1С
3 SergPas
 
23.11.09
18:58
к примеру я с помощью запроса получил значение картинки
Средствами 1с  двДанные = Base64Значение(ЗначениеКартинки);
и далее ее можно поместить в хранилище?
4 SergPas
 
24.11.09
06:40
данные удалось поместить в хранилище значений. а как теперь их от  достать
       Карт= RS1.Fields("picture").Value;
       карт1 = Base64Значение(Карт);
       сотр=Справочники.Сотрудники.НайтиПоРеквизиту("Таб_Номер",ххх);
       я=сотр.ПолучитьОбъект();
              я.Картинка= новый ХранилищеЗначения(Карт1)      ;
5 SergPas
 
24.11.09
08:30
подскажите, как получить картинку с сервера и затолкать ее в 1с в хранилище значения, не сохраняя при этом картинку в файл
6 Kasper076
 
24.11.09
08:45
Вот так может быть:
КартинкаSQL = RS1.Fields("picture").Value;
Картинка1C = Base64Значение(КартинкаSQL);
Хранилище = Новый ХранилищеЗначения(Картинка1C, Новый СжатиеДанных());

ЭлементыФормы.ПолеКартинки1.Картинка = Хранилище.Получить();
7 SergPas
 
24.11.09
09:02
(6) ошибка при установке значения атрибута контекста (Картинка): Несоответствие типов
8 est
 
24.11.09
09:09
(5) без временного файла никак :)
9 SergPas
 
24.11.09
10:44
очень плохо
10 H A D G E H O G s
 
24.11.09
10:55
(8) Можно!
11 H A D G E H O G s
 
24.11.09
11:13
Функция ВСтрокуBase64(safeArray)
   obj = Новый COMОбъект("MSXML2.DomDocument.3.0");
   helper=obj.createElement("a");
   helper.DataType = "bin.base64";
   helper.nodeTypedValue = safeArray;
   Возврат helper.text;
КонецФункции


Процедура ОсновныеДействияФормыd(Кнопка)
   Connection=Новый COMОбъект("ADODB.Connection");
   Connection.Open("Provider=SQLOLEDB.1; Data Source=mowd-dejov; Initial Catalog=empty; User ID=sa; pwd=1;");
   RecordSet=Новый COMОбъект("ADODB.Recordset");
   RecordSet.CursorLocation=3;
   RecordSet.LockType=2;
   Запрос="Select data from dbo.MyTable";
   RecordSet.Open(Запрос, Connection);
   RecordSet.MoveFirst();
   СтрокаBase64=ВСтрокуBase64(RecordSet.Fields("Data").Value);
   Двоичные=Base64Значение(СтрокаBase64);
   ВотВиситКартина=Новый Картинка(Двоичные);
   ЭлементыФормы.ПолеКартинки.Картинка=ВотВиситКартина;
КонецПроцедуры
12 H A D G E H O G s
 
24.11.09
11:14
Поиск - рулит!
13 H A D G E H O G s
 
24.11.09
11:21
Автор покинул наши пределы?
14 SergPas
 
24.11.09
11:35
нет не покинул, просто отходил от рабочего места
15 SergPas
 
24.11.09
11:41
а за что отвечает данная функция

obj = Новый COMОбъект("MSXML2.DomDocument.3.0");
16 H A D G E H O G s
 
24.11.09
11:42
Конвертация
ComSafeArray->Base64
17 Kasper076
 
24.11.09
11:44
(41) XML-парсер использутся для получения двоичных данных.
18 SergPas
 
24.11.09
11:47
Спасибо всем за участие. Все получилось. ВСЕМ БОЛЬШОЕ СПАСИБО
19 Kasper076
 
24.11.09
11:51
А почему Base64Значение() не работает?

Base64Значение (Base64Value)
Синтаксис:
Base64Значение(<Строка>)
Параметры:
<Строка> (обязательный)
Тип: Строка. Строка, закодированная по алгоритму base64.
Возвращаемое значение:
Тип: ДвоичныеДанные.
Описание:
Получает из строки закодированной по алгоритму base64 двоичные данные.
20 H A D G E H O G s
 
24.11.09
11:52
(17) Нет, не то.
Я бы мог сам перегнать ComSafe->Base64, НО

В 1С нельзя обратиться к символу строки по индексу, типа
МояСтрока[5]="У";

Это не позволит мне создать фиксированную строку и заполнять ее сконвертированными символами, а заставит использовать конструкцию
СтрокаBase64=СтрокаBase64+СконвертированныйСимвол
в цикле.
Что приведет к цикличному перевыделению памяти и дико затормозит алгоритм.

Можно конечно ВК свайять, но лениво.
21 Kasper076
 
24.11.09
11:53
+(19) Затупил. Функцией ВСтрокуBase64(safeArray) мы как раз и получаем аргумент для Base64Значение()
AdBlock убивает бесплатный контент. 1Сергей