Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Достать внешние файлы из базы MS SQL

Достать внешние файлы из базы MS SQL
Я
   Naps2
 
30.08.18 - 21:22
Здравствуйте, есть база 1С, работает в серверном варианте, в качестве БД -MS SQL. Конфигурация: "Аренда и управление недвижимостью для "1С:Бухгалтерия 8", редакция 1.6 (1.6.25.6/3.1.6.4)".

Там к договорам аренды, да и к допникам, можно прикладывать файлы (обычно это pdf со сканами).

Мне необходимо внешними средствами иногда вытаскивать оттуда эти файлы, в какой таблице и в каком поле они хранятся я нашёл. Тип поля: image.
Но вот сама 1С с ними что-то делает, поскольку они ни в какую не хотят после извлечение открываться как pdf.

Ещё смущает что абсолютно все файлы имееют одинаковое начало в 16-ном формате: 0x0201534B6FF4888DC14EA0D5EBB6BDA0A70D(далее уже идут различия). Сначала я подумал что это сигнатуры pdf или прочее, но нет, слишком длинно.

В общем, кто-нибудь сталкивался с такой задачей и знает ли решение?
 
 
   Fram
 
1 - 30.08.18 - 21:28
Читаешь наверно неправильно. Вот пример на c# как читается image 


var bytes = (byte[])read[3];
using(MemoryStream ms = new MemoryStream(bytes))
{
    pictureBox1.Image = Image.FromStream(ms);
}
   МихаилМ
 
2 - 30.08.18 - 21:30
они хроняться в формате хранилища значения : сжаты deflate
и Base64 . или наоборот.
   Naps2
 
3 - 30.08.18 - 21:35
(1) Ну я делаю это на php, читаю так:

$STH = $DB1C->prepare("SELECT convert(varbinary(max), _Fld8845, 1) as data FROM _Reference8748 WHERE _IDRRef=:id");
$STH->bindParam(':id', hex2bin($_GET['id']), PDO::PARAM_LOB, 0, PDO::SQLSRV_ENCODING_BINARY);
$STH->execute();
$STH->setFetchMode(PDO::FETCH_ASSOC);
$STH->bindColumn('data',$data, PDO::SQLSRV_ENCODING_BINARY);
$row=$STH->fetch();
$data=$row["data"];
$data=hex2bin($data);        
header("Content-Type: application/pdf");
echo($data);
die();

с другой базой (не 1С) но той же MS SQL и тем же типом поля (image) работало без проблем.
   Fram
 
4 - 30.08.18 - 21:38
(3) Ну (2) прав, скорее всего. 1С кодирует и оборачивает данные своим классом
   Fram
 
5 - 30.08.18 - 21:39
Пишите веб сервис на 1с и оттуда забирайте
   Fram
 
6 - 30.08.18 - 21:39
Или COM
   timurhv
 
7 - 31.08.18 - 14:42
(0) Включить хранение в томах на диске, а не в БД.

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует