Имя: Пароль:
1C
1С v8
Из COMSafeArray в ДвоичныеДанные.
,
0 Ashtray
 
11.07.13
09:15
В базе есть справочник. У справочника есть реквизит с типом ХранилищеЗначения. Пробую получить файл сразу из SQL базы

c = New COMОбъект("ADODB.Connection");
c.Open("Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=base;Data Source=server");

rs  = New COMОбъект("ADODB.Recordset");
s   = New COMОбъект("ADODB.Stream");    
       
ИД = "0x8013001E8C0F8D1C11E17A47B9715573";
rs.Open("select * from [_Reference8365] where [_IDRRef] = " + ИД, c, 2, 3);
   
s.Type = 1;
s.Mode = 3;
s.Open();
s.Write(rs.Fields("_Fld8502").Value);    
s.SaveToFile("D:\222.pdf",2);

И получаю файл который не открывается. Adobe пишет поврежден или не поддерживается.
rs.Fields("_Fld8502").Value имеет тип COMSafeArray. Как можно еще из COMSafeArray получить ДвоичныеДанные?
1 Cube
 
11.07.13
09:27
Может так:

COMSafeArray (COMSafeArray)
GetValue (GetValue)
Вариант синтаксиса: Список индексов

Синтаксис:

GetValue(<Индекс0>, <Индекс1>)
Параметры:

<Индекс0> (обязательный)

Тип: Число.
Значение старшего индекса.
<Индекс1> (необязательный)

Тип: Число.
Значение следующего индекса, если массив более, чем одномерный.
Описание варианта метода:

В параметрах указываются значения индексов элемента массива, начиная со старшего.
Каждый параметр определяет значение одного индекса. Параметров столько, сколько измерений в массиве. Тип всех параметров - Число.
Вариант синтаксиса: Массив индексов

Синтаксис:

GetValue(<Индексы>)
Параметры:

<Индексы> (обязательный)

Тип: Массив.
Массив индексов, начиная со старшего.
Описание варианта метода:

Все индексы перечислены в одном массиве, начиная со старшего индекса. Индексов столько, сколько измерений в массиве COMSafeArray. Тип всех элементов массива параметров - Число.
Описание:

Получает значение элемента массива по указанным индексам.

Доступность:

Сервер, толстый клиент, внешнее соединение.
Примечание:

Если какой-нибудь из индексов выходит за допустимый диапазон, то никаких действий не производится и выдается сообщение "Значение индекса выходит за границы диапазона".
2 1Сергей
 
11.07.13
09:27
можешь просмотреть что в файле? нули?
3 Ashtray
 
11.07.13
09:37
(2) Файл не пустой.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан