Ниже приведены все необходимые процедуры и функции для извлечения из базы данных файла по его номеру:
//________________________________________________________
Процедура глПолучитьИмяИПуть (ИмяФайла ,Путь ,Имя ) Экспорт //(с) www.perlscript.ru Перем ВремСтрока ; ВремСтрока =ИмяФайла ; ВремСтрока =СтрЗаменить(ВремСтрока ,"" ,РазделительСтрок); Имя =СтрПолучитьСтроку(ВремСтрока ,СтрКоличествоСтрок(ВремСтрока )); Путь =Лев(ИмяФайла ,СтрДлина(ИмяФайла )-СтрДлина(Имя )); КонецПроцедуры
//________________________________________________________ Функция глЗаписатьФайлИзБазы (ТекНомер ,ИмяФайла ) Экспорт Если МонопольныйРежим()=1 Тогда Предупреждение("Невозможно выполнить запрос в монопольном режиме!" ,10 ); //Действия Возврат 0 ; //******** КонецЕсли; ВремКаталог =КаталогПользователя(); ИмяФайлаФормы =ВремКаталог +"s.frm" ; ИмяФайлаАрхива =ВремКаталог +"xxx.rar" ; Текст =СоздатьОбъект("Текст" ); Если ФС.СуществуетФайл (ИмяФайла )=1 Тогда ФС.УдалитьФайл (ИмяФайла ); КонецЕсли; Если ФС.СуществуетФайл (ИмяФайлаАрхива )=1 Тогда ФС.УдалитьФайл (ИмяФайлаАрхива ); КонецЕсли; Если ФС.СуществуетФайл (ИмяФайлаФормы )=1 Тогда Текст .Открыть (ИмяФайлаФормы ); КонецЕсли; Текст .Очистить (); Текст .ДобавитьСтроку ("8.0" ); Текст .ДобавитьСтроку ("1" ); Текст .ДобавитьСтроку ("1 SQLIMAGE 0 0 " "" " 1 Picture " "" "" +РазделительСтрок); Текст .Записать (ИмяФайлаФормы ); КомандаСистемы("bcp " "Select Picture From Sertificat.dbo.pics where Number=" +ТекНомер +"" " queryout " +ИмяФайлаАрхива +" -Usa -S" +глСервер +" -P" +глПароль +" -f" +ИмяФайлаФормы ); //теперь разархивируем. ТекПуть ="" ; ТекИмя ="" ; глПолучитьИмяИПуть (ИмяФайла ,ТекПуть ,ТекИмя ); КомандаСистемы("c:rar.exe e -o+ " +ИмяФайлаАрхива +" " +ТекИмя +" " +ТекПуть ); Если ФС.СуществуетФайл (ИмяФайлаФормы )=1 Тогда ФС.УдалитьФайл (ИмяФайлаФормы ); КонецЕсли; Если ФС.СуществуетФайл (ИмяФайлаАрхива )=1 Тогда ФС.УдалитьФайл (ИмяФайлаАрхива ); КонецЕсли; Возврат 1 ; КонецФункции
В случае удачного выполнения операции функция возвращает единицу, иначе ноль.
Обратите внимание: в данном примере считается что архиватор «rar.exe » находится на диске «С: »
Вернуться к статье "Организация хранилища файлов внутри базы данных 1C+MS-SQL"
|