![]() |
![]() |
![]() |
|
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Значение()
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |