Получить bytea в 1С #761182


#0 by KuJIT
Собственно, ищу способ получить bytea в 1С. Подключаюсь к БД на psql, используя команды     Connection.ConnectionString = "Driver={PostgreSQL Unicode};data source=PostgreSQL35W;Server="+Хост+";Port=" + Выполняю запрос в БД при помощи Как обработать поля с типом bytea. Например, вытащить из БД картинки, который там хранятся в bytea?
#1 by Serginio1
#2 by Мэс33
Искать пробовали? Например, тут хорошая подсказка
#3 by KuJIT
этот вариант слишком костыльный какой-то, что ли. Выгрузить файлы диск, где-то вести учет какой файл к какой строке БД принадлежит, потом по этому соответствию подгружать в 1Ску.
#4 by KuJIT
А вот это не понял как использовать -_- Не совсем понятно что именно возвращает последняя строка. Для простых типов тип строки, возвращает строку, которую комфортно можно прочитать, а если там был bytea, то какой тип получается в 1Ске?
#5 by oleg_km
Вроде как COMSafeArray
#6 by oleg_km
Но зато если выгрузить на диск в файл, то можно потом загрузить в ДвоичныеДанные или Картинка и записать в ХранилищеЗначений в базу
#7 by Serginio1
В отладчике посмотреть. По идее должен в COMSafeArray. Который можно перекодировать в Base64 а из неё в Двоичные данные. Либо Врап.ПолучитьТип("System.IO.File").WriteAllBytes(имяФайла,Массив);
#8 by Serginio1
Или
#9 by KuJIT
1Ска крашится, как только я пытаюсь value столбца с bytea из запроса записать в какую-либо переменную в 1С. Отсюда невозможно как-либо его обработать (придётся, видимо, в файлы выгружать) -_-
#10 by Мэс33
придется.
#11 by KuJIT
Кстати, поле Type для этого столбца возвращает загадочное число 204 оО
#12 by Serginio1
Там вроде возврашаем массив char Попробуй
#13 by KuJIT
Есть мнение, что там что-то побитое (сломанное) может лежать в некоторых полях из-за чего все и ломается.
#14 by KuJIT
В отладчике ничего и не посмотришь, бо при попытке почитать value 1Ска крашится
#15 by МимохожийОднако
А не надо напрямую если чё
#16 by Serginio1
#17 by Serginio1
Посмотри там есть пример работы с bytea Working with large object support This sample is nearly identical to the bytea code above. It stores the retrieved file in Postgresql, and then later removes it. As with the bytea sample, it writes a file with a “database” suffix. public class c {     public static void Main(String[] args)     {         NpgsqlConnection newconn = new NpgsqlConnection("server=localhost;user id=npgsql_tests;password=npgsql_tests");         LargeObjectManager lbm = new LargeObjectManager(newcon);          public static void DeleteLargeObject(Int32 noid)     {         NpgsqlConnection conn = new NpgsqlConnection("server=localhost;user id=npgsql_tests;password=npgsql_tests"); }
#18 by Serginio1
Там же command = new NpgsqlCommand("select field_bytea from tableBytea where field_serial = (select max(select field_serial) from tableBytea);", conn);
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С