Имя: Пароль:
1C
 
Хранение бинарных данных во внешней обработке.
0 афаф
 
15.06.08
11:17
Приветствую!

Поиск не помог - спрошу у знающих людей. Умеют ли внешние обработки хранить внутри себя бинарные данные например в хранилище значения? Ведь хранят же они картинки.

Есть желание сделать отчет используюущий ВК, а саму ВК хранить внутри отчета - т.е. запустились, достали ВК, ею попользовались, удалили. Оставив для нужд пользователя вручную распаковать ВК...
1 ТелепатБот
 
гуру
15.06.08
11:17
2 афаф
 
15.06.08
11:18
(1) Не, не то - это про базу, а мне надо хранить данные во внешней обработке...
3 Господин ПЖ
 
15.06.08
11:19
Курить Макет - Двоичные данные
4 Мелкий бес
 
15.06.08
11:34
ФайлДрайвера = Новый Файл(КаталогПрограммы() + "\1CScan.dll");
Если НЕ ФайлДрайвера.Существует() Тогда
   ДрайверДвоичныеДанные = ЭтотОбъект.ПолучитьМакет("Driver");
   ДрайверДвоичныеДанные.Записать(КаталогПрограммы() + "\1CScan.dll");
КонецЕсли;
   
Попытка
   ЗагрузитьВнешнююКомпоненту(КаталогПрограммы() + "\1CScan.dll");
   Сканеры = Новый("AddIn.ScanManager");
Исключение
   Предупреждение("Не удалось загрузить внешнюю компоненту!");
   Отказ = Истина;
   Возврат;
КонецПопытки;
5 zyto
 
15.06.08
12:31
(4)А как дллка попала в макет?
6 Мелкий бес
 
15.06.08
12:35
(5) в конструкторе макета после указания типа маета - двоичные данные появляется поле загрузки из файла
7 MRAK
 
15.06.08
13:03
а чем хранение в реквизите не нравится?
8 Ковычки
 
15.06.08
13:09
echo ====Начинаем вклейку >> ФайлОтчета
copy /b ФайлОтчета + /b НужныйФайл ФайлОтчета
9 афаф
 
15.06.08
14:38
(4), (6) Премного благодарен, именно то, что нужно.
(7) Пример?
(8) А разлеплять сию кашу как?
10 MRAK
 
15.06.08
15:16
(9) посмотри, как в типовых обращаются к внешним обработкам.
11 афаф
 
15.06.08
15:29
(10) В типовых - их хранят в ХранилищеЗначения распаковывая в каталог временных файлов и от туда загружают.
Вот код из спр.ВнешниеОбработки в УПП

ИмяФайла = ПолучитьИмяВременногоФайла();
ДвоичныеДанные = ВыбраннаяСтрока.ХранилищеВнешнейОбработки.Получить(); // у спр есть реквизит ХранилищеВнешнейОбработки тип ХранилищеЗначения.
ДвоичныеДанные.Записать(ИмяФайла);
Форма = ВнешниеОбработки.ПолучитьФорму(ИмяФайла);
Форма.Открыть();

Идея достаточно близка к (4). Вопрос в том, как присобачить к обработке ХранилищеЗначения(стандартно платформа не дает делать у внешних обработок реквизиты с этим типом), да потом положить в него бинарник так, чтобы он хранился в теле обработки.

Или имеется ввиду нечто другое?
12 MRAK
 
15.06.08
15:50
(11) да, ошибся, во внешней нельзя. Тогда только в макете.
Закон Брукера: Даже маленькая практика стоит большой теории.