Переключение на Главную Страницу Страницы: 1 [2]  ОтправитьПечать
Очень популярная тема (более 25 ответов) Запись файла в базу SQL (число прочтений - 11297 )
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Запись файла в базу SQL
Ответ #15 - 25. Ноября 2011 :: 07:32
Печать  
mozer писал(а) 25. Ноября 2011 :: 07:17:
1. Таким образом можно хранить файлы любого типа ?

да файл же двоичный.
только своя таблица а не таблица 1с.
  
Наверх
 
IP записан
 
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: Запись файла в базу SQL
Ответ #16 - 25. Ноября 2011 :: 08:07
Печать  
Все что душа пожелает.
Причем если сделать
Данные.ЗагрузитьИзФайла(Файл,1)
то файл еще и сожмется ZIP-ом, что не маловажно.
  
Наверх
 
IP записан
 
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: Запись файла в базу SQL
Ответ #17 - 28. Ноября 2011 :: 07:22
Печать  
Продолжу по ходу.
Запихнуть то запихнули.
А вот терь друга проблема.
Вытащить.
Код
Выбрать все
	Текст="
	|select
	|	Хранилище.Данные Данные,
	|	Хранилище.ИмяФайла ИмяФайла,
	|	Хранилище.Архив Архив
	|from Хранилище Хранилище (nolock)
	|WHERE
	|Хранилище.Объект=:Объект*
	|";
	Запрос=глСоединение();
	ИТЗ=СоздатьОбъект("ИндексированнаяТаблица");
	Запрос.УстановитьТекстовыйПараметр("Объект",Форма.Параметр.ТекущийДокумент());
	Запрос.ВыполнитьИнструкцию(Текст,ИТЗ);
	ИТЗ.ВыбратьСтроки();
	Каталог=КаталогВременныхФайлов();
	Пока ИТЗ.ПолучитьСтроку() = 1 Цикл
		Данные=ИТЗ.Данные;
		Сообщить(Данные.Размер());
		Файл=СокрЛП(ИТЗ.ИмяФайла);
		Архив=ИТЗ.Архив;
		Путь=Каталог+Файл;
		Данные.СохранитьВФайл(Путь,Архив);
		Данные.Закрыть();
		ЗапуститьПриложение(Путь);
	КонецЦикла;

 



Таким запросом я извлекаю из базы.
Но когда прохожусь по ИТЗ Файла получаються нулевого размера.
Че я не так делаю?
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Запись файла в базу SQL
Ответ #18 - 28. Ноября 2011 :: 09:44
Печать  
может Данные.Закрыть() не нужет
попробуйте сделать выборку из одного элемента
  
Наверх
 
IP записан
 
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: Запись файла в базу SQL
Ответ #19 - 28. Ноября 2011 :: 10:20
Печать  
Z1 писал(а) 28. Ноября 2011 :: 09:44:
может Данные.Закрыть() не нужет
попробуйте сделать выборку из одного элемента

Это для надежности.
Вопрос так решил.
Вот вариант решения:
Код
Выбрать все
	Текст="
	|select
	|	Хранилище.Номер Номер,
	|	Хранилище.ИмяФайла ИмяФайла,
	|	Хранилище.Архив Архив
	|from Хранилище Хранилище (nolock)
	|WHERE
	|Хранилище.Объект=:Объект*
	|";
	Запрос=глСоединение();
	ИТЗ=СоздатьОбъект("ИндексированнаяТаблица");
	ТЗ=СоздатьОбъект("ТаблицаЗначений");
	Запрос.УстановитьТекстовыйПараметр("Объект",Форма.Параметр.ТекущийДокумент());
	Запрос.ВыполнитьИнструкцию(Текст,ИТЗ);
	ИТЗ.ВыбратьСтроки();
	Текст="
	|select Хранилище.Данные
	|from Хранилище Хранилище (nolock)
	|WHERE
	|Хранилище.Объект=:Объект*
	|and
	|Хранилище.Номер=?
	|";
	Запрос.УстановитьТекстовыйПараметр("Объект",Форма.Параметр.ТекущийДокумент());
	Запрос.ДобПараметр(1,4,0,0);
	Запрос.Подготовить(Текст);

	Пока ИТЗ.ПолучитьСтроку() = 1 Цикл
		Запрос.УстПараметр(1,ИТЗ.Номер);
		Данные=Запрос.ВыполнитьСкалярный();
		Архив=ИТЗ.Архив;
		Файл=СокрЛП(ИТЗ.ИмяФайла);
		Путь=КаталогВременныхФайлов()+Файл;
		Данные.СохранитьВФайл(Путь,Архив);
		Данные.Закрыть();
		ЗапуститьПриложение(Путь);
	КонецЦикла;
Выходить так что Данные должны возвращаться в 1 экземпляре.
ТОгда все пашет!
 

  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Запись файла в базу SQL
Ответ #20 - 28. Ноября 2011 :: 11:19
Печать  
нет я же писал
1. попробуй для выборки из одного объекта
2.из своего кода убери вообще оператор

Данные.Закрыть();

Если этого не делать то внутри цикла нужно каждый раз
создавать объект Данные.
  
Наверх
 
IP записан
 
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: Запись файла в базу SQL
Ответ #21 - 29. Ноября 2011 :: 06:37
Печать  
Z1 писал(а) 28. Ноября 2011 :: 11:19:
нет я же писал
1. попробуй для выборки из одного объекта
2.из своего кода убери вообще оператор

Данные.Закрыть();

Если этого не делать то внутри цикла нужно каждый раз
создавать объект Данные.

Да не уж-то?
Где ты в цикле видишь чтобы я создавал объект?
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Запись файла в базу SQL
Ответ #22 - 29. Ноября 2011 :: 06:42
Печать  
varelchik писал(а) 29. Ноября 2011 :: 06:37:
Z1 писал(а) 28. Ноября 2011 :: 11:19:
нет я же писал
1. попробуй для выборки из одного объекта
2.из своего кода убери вообще оператор

Данные.Закрыть();

Если этого не делать то внутри цикла нужно каждый раз
создавать объект Данные.

Да не уж-то?
Где ты в цикле видишь чтобы я создавал объект?

Что то мы не понимаем друг друга.
Ответь Зачем в цикле используется
Данные.Закрыть();
На мой взгляд это действие лишнее и именно из-за него у тебя проблемы
  
Наверх
 
IP записан
 
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: Запись файла в базу SQL
Ответ #23 - 29. Ноября 2011 :: 06:44
Печать  
Как раз проблем то и нет.
А ты про это не забыл?
ЗапуститьПриложение(Путь);
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Запись файла в базу SQL
Ответ #24 - 29. Ноября 2011 :: 06:51
Печать  
varelchik писал(а) 29. Ноября 2011 :: 06:44:
Как раз проблем то и нет.
А ты про это не забыл?
ЗапуститьПриложение(Путь);

так проблемы могут быть если имя файла получается одно и тоже.
опять же для теста можешь и ЗАпуститьПриложение для теста закоментарить и у меня данные получаются по другому.
Код
Выбрать все
Данные=rc.ПолучитьЗначение("Архив");
 


  
Наверх
 
IP записан
 
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: Запись файла в базу SQL
Ответ #25 - 29. Ноября 2011 :: 07:04
Печать  
Какой тест?
Уже работает в живой базе.
+ Файлы всегда у обного объекта уникальны.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 
ОтправитьПечать