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