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