Передача картинки из ХранилищаЗначения во внешнюю базу на MSSQL
Здравствуйте.
Подобный вопрос, скорее всего, неоднократно поднимался, я честно пытался искать по форуму, но не нашел ничего конкретного про мой случай.
Суть такова. Конфигурация УПП 1.3. Требуется фото сотрудника из справочника ФизЛиц передать в СКУД. База СКУД реализована на MSSQL, в ней у таблицы сотрудника для хранения картинки служит поле типа image.
Получил я ДвоичныеДанные
но что с этим делать дальше и как передать на сервер чтоб оно корректно работало, не могу сообразить.
Подобный вопрос, скорее всего, неоднократно поднимался, я честно пытался искать по форуму, но не нашел ничего конкретного про мой случай.
Суть такова. Конфигурация УПП 1.3. Требуется фото сотрудника из справочника ФизЛиц передать в СКУД. База СКУД реализована на MSSQL, в ней у таблицы сотрудника для хранения картинки служит поле типа image.
Получил я ДвоичныеДанные
Хранилище = ФизЛицо.ОсновноеИзображение.Хранилище;
Картинка = Хранилище.Получить();
ДвоичныеДанные = Картинка.ПолучитьДвоичныеДанные();
но что с этим делать дальше и как передать на сервер чтоб оно корректно работало, не могу сообразить.
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Сам разобрался. Может, кому пригодится. Да, это для обычного приложения.
Процедура ЗагрузитьФото(ФизЛицо)
Хранилище = ФизЛицо.ОсновноеИзображение.Хранилище;
Картинка = Хранилище.Получить();
Попытка
ДвоичныеДанные = Картинка.ПолучитьДвоичныеДанные();
Исключение
Сообщить("У пользователя " + ФизЛицо.Наименование + " нет фото");
Возврат;
КонецПопытки;
//записать на жесткий
ИмяФайла = "E:\Photo.jpg";
ДвоичныеДанные.Записать(ИмяФайла);
ИдПользователя = ПолучитьИДПользователя(ФизЛицо);
Если ИдПользователя <> "" Тогда
ИмпортКартинки(ИмяФайла,ИдПользователя, ФизЛицо);
Иначе
Сообщить("Пользователь " + ФизЛицо.Наименование + " не обнаружен на СКУД");
КонецЕсли;
УдалитьФайлы(ИмяФайла);
КонецПроцедуры
Показать
Процедура ИмпортКартинки(ИмяФайла,ИдПользователя, ФизЛицо)
Stream = Новый COMОбъект("ADODB.Stream");
Stream.Type = 1;
Stream.Open();
Stream.LoadFromFile(ИмяФайла);
//ADOСоединение - переменная COMОбъект("ADODB.Connection")
Connection = ADOСоединение;
RecordSet = Новый COMОбъект("ADODB.Recordset");
RecordSet.CursorLocation=3;
RecordSet.LockType=2;
//UserPhotoStream - поле, куда пишется картинка
Запрос = "Sel ect UserPhotoStream fr om dbo.users where users_id = '" + ИдПользователя + "'";
RecordSet.Open(Запрос, Connection);
Если RecordSet.RecordCount=0 Тогда
Сообщить("В СКУД не обнаружен пользователь " + ФизЛицо.Наименование);
Иначе
RecordSet.MoveFirst();
КонецЕсли;
RecordSet.Fields("UserPhotoStream").Value=Stream.Read(-1);
RecordSet.Upd ate();
Stream.Close();
RecordSe t.Close();
КонецПроцедуры
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот