|
Конвертация фотографий в 16 ричный формат? | ☑ | ||
---|---|---|---|---|
0
Pasha_Nik
06.05.15
✎
13:17
|
В 1С есть возможность получить двоичный код картинки
Можно ли в 1С получить 16-ричный код картинки? |
|||
1
H A D G E H O G s
06.05.15
✎
13:19
|
(0) Отличная идея, запишем!
|
|||
2
Asmody
06.05.15
✎
13:23
|
Лучше всего, конечно, 36-ричный код картинки.
|
|||
3
Garykom
гуру
06.05.15
✎
13:25
|
(2) x64, не меньше!
|
|||
4
Garykom
гуру
06.05.15
✎
13:36
|
(0) Base64?
|
|||
5
Fish
06.05.15
✎
13:38
|
(0) Можно хоть пятеричный. В школе проходили системы счисления?
|
|||
6
Pasha_Nik
06.05.15
✎
13:41
|
А как перевести в 36 - ричный код?
|
|||
7
Rebelx
06.05.15
✎
13:43
|
мне больше нравится 69ричный
|
|||
8
Pasha_Nik
06.05.15
✎
13:45
|
Мне нужно этот код вставить
в базу SQL Server в поле с типом image |
|||
9
Fish
06.05.15
✎
13:45
|
(6) Можно воспользоваться школьными знаниями: http://matworld.ru/calculator/perevod-chisel.php
|
|||
10
Ващета
06.05.15
✎
13:45
|
(8) с этого и надо было начинать
|
|||
11
DGorgoN
06.05.15
✎
13:45
|
(0) А теперь после всех издевательств объясняем что в итоге нужно то, т.е. поясняем что есть в понимании ТС "16-ричный код картинки"?
|
|||
12
DGorgoN
06.05.15
✎
13:47
|
||||
13
Pasha_Nik
06.05.15
✎
14:17
|
Написал обновление картинки через Stream
Stream=Новый COMОбъект("ADODB.Stream"); Stream.Type=1; Stream.Open(); Stream.LoadFromFile("C:\БылЗвонок.bmp"); Connection=Новый COMОбъект("ADODB.Connection"); Connection.Open("Provider=SQLOLEDB.1; Data Source=NEXTGEN; Initial Catalog=MyBase; User ID=sa;"); RecordSet=Новый COMОбъект("ADODB.Recordset"); RecordSet.CursorLocation=3; RecordSet.LockType=2; Запрос="Select data from dbo.MyTable"; RecordSet.Open(Запрос, Connection); Если RecordSet.RecordCount=0 Тогда RecordSet.AddNew(); // RecordSet.Fields(0).Value=1; Иначе RecordSet.MoveFirst(); КонецЕсли; RecordSet.Fields("Data").Value=Stream.Read(-1); RecordSet.Update(); Stream.Close(); выдает ошибку Ошибка при вызове метода контекста (Update): Произошла исключительная ситуация (Microsoft Cursor Engine): Недостаточные сведения о ключевом столбце для обновления. Почему возникает такая ошибка? |
|||
14
Rebelx
06.05.15
✎
15:18
|
(13) может ты опишешь задачу?
|
|||
15
Garykom
гуру
06.05.15
✎
15:19
|
(14) зачем? тут ведь сплошные телепаты...
|
|||
16
mehfk
06.05.15
✎
15:20
|
||||
17
Pasha_Nik
06.05.15
✎
15:57
|
Есть фотографии сотрудников нужно переенести эти фотографии
в базу SQL Server в поле image Делаю запрос по фотографии получаю её двоичный данные Фотография = Фотография.ПолучитьДвоичныеДанные(); Сохраняю их в каталог НоваяКартинка = Новый Картинка(Фотография); НоваяКартинка.Записать("c:\Картинки\" + Строка(ТабНомер) + ".bmp"); и пытаюсь обновить их в таблице SQL Stream=Новый COMОбъект("ADODB.Stream"); Stream.Type=1; Stream.Open(); Stream.LoadFromFile("c:\Картинки\" + Строка(ТабНомер) + ".bmp"); Connection=Новый COMОбъект("ADODB.Connection"); Connection.Open("Provider=SQLOLEDB.1; Data Source=192.168.0.2; Initial Catalog=Baze1; User ID=sa; PWD=nix"); RecordSet=Новый COMОбъект("ADODB.Recordset"); RecordSet.CursorLocation=3; RecordSet.LockType=2; //ЗапросДля="Select PORTRET from dbo.STAFF"; ЗапросДля="Select PORTRET from dbo.STAFF where TABEL_ID = '" + Строка(ТабНомер) + "'"; RecordSet.Open(ЗапросДля, Connection); Если RecordSet.RecordCount=0 Тогда // RecordSet.AddNew(); // RecordSet.Fields(0).Value=1; Иначе RecordSet.MoveFirst(); КонецЕсли; RecordSet.Fields("PORTRET").Value=Stream.Read(-1); RecordSet.Update(); Stream.Close(); Выдает ошибку Ошибка при вызове метода контекста (Update): Произошла исключительная ситуация (Microsoft Cursor Engine): Недостаточные сведения о ключевом столбце для обновления. |
|||
18
Fragster
гуру
06.05.15
✎
16:07
|
есть мнение, что у тебя там кроме поля PORTRET есть еще поле id или подобное
|
|||
19
vhl
06.05.15
✎
16:08
|
(17) Наверное надо посмотреть ключевые поля этой таблицы
|
|||
20
Pasha_Nik
06.05.15
✎
16:11
|
Есть ещё и другие поля
|
|||
21
fisher
06.05.15
✎
16:11
|
(17) Мне сложно понять ход твоей мысли, в процессе которого ты решил, что во всём виноваты системы исчисления.
|
|||
22
Pasha_Nik
06.05.15
✎
16:35
|
Есть поле ID_STAFF
как правильно написать RecordSet.Update()? |
|||
23
DmitrO
06.05.15
✎
16:45
|
Command = Новый COMОбъект("ADODB.Command");
Command.ActiveConnection = Connection; Command.CommandText = "update STAFF set PORTRET = ? where TABEL_ID = ?"; ParPORTRET = Command.CreateParameter(, 205, 1, -1); ParTABEL_ID = Command.CreateParameter(, 200, 1, 20); //varchar(20) - возможно тут что-то другое Command.Parameters.Append(ParPORTRET); Command.Parameters.Append(ParTABEL_ID); ParPORTRET.Value = Stream.Read(Stream.Size); ParTABEL_ID.Value = ТабНомер; Command.Execute(); |
|||
24
Pasha_Nik
07.05.15
✎
08:41
|
Пишу так
Stream=Новый COMОбъект("ADODB.Stream"); Stream.Type=1; Stream.Open(); Stream.LoadFromFile("c:\Картинки\" + Строка(ТабНомер) + ".bmp"); Connection=Новый COMОбъект("ADODB.Connection"); Connection.Open("Provider=SQLOLEDB.1; Data Source=192.168.0.2; Initial Catalog=Pitanie; User ID=sa; PWD=********"); Command = Новый COMОбъект("ADODB.Command"); Command.ActiveConnection = Connection; Command.CommandText = "update STAFF set PORTRET = ? where TABEL_ID = ?"; ParPORTRET = Command.CreateParameter(, 205, 1, -1); ParTABEL_ID = Command.CreateParameter(, 200, 1, 20);//varchar(20) - возможно тут что-то другое Command.Parameters.Append(ParPORTRET); Command.Parameters.Append(ParTABEL_ID); ParPORTRET.Value = Stream.Read(Stream.Size); ParTABEL_ID.Value = ТабНомер; Command.Execute(); Stream.Close(); У некоторых сотрудников вставляет все нормально а у некоторых выдает ошибку Ошибка при вызове метода контекста (LoadFromFile): Произошла исключительная ситуация (ADODB.Stream): Не удается открыть файл. Он не находит файл фотографии? |
|||
25
Pasha_Nik
07.05.15
✎
08:50
|
Подскажите а можно ли сделать
что бы загружались в Stream двоичный код картинки Stream.LoadFromFile(Картинка.ПолучитьДвоичныеДанные()); ?? |
|||
26
DmitrO
07.05.15
✎
09:08
|
(24)вероятно у некоторых сотрудников значит нет доступа к c:\Картинки\
(25)нельзя, разработчики платформы 1С считают, что нам это не нужно. Поэтому только через файл: ИмяВремФайла = ПолучитьИмяВременногоФайла(); Картинка.ПолучитьДвоичныеДанные().Записать(ИмяВремФайла); Stream.LoadFromFile(ИмяВремФайла); |
|||
27
DmitrO
07.05.15
✎
09:14
|
(26)+ уточняю мысль, возможен был бы такой код:
ParPORTRET.Value = Картинка.ПолучитьДвоичныеДанные(); если бы объект ДвоичныеДанные передавался в COM типом (VT_ARRAY|VT_UI1), но это не сделано в платформе. |
|||
28
DmitrO
07.05.15
✎
09:15
|
(27)+ таким образом можно было бы обходиться вообще без Stream-а.
|
|||
29
H A D G E H O G s
07.05.15
✎
11:09
|
(27) Это то как раз не проблема.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |