Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Справочник для хранения фото (число прочтений - 4923 )
sapp
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 1
Зарегистрирован: 23. Мая 2010
Справочник для хранения фото
23. Мая 2010 :: 18:02
Печать  
Доброго времени суток.
Облазил почти все что знает яндекс по данному вопросу и ничего стоящего не нашел, и даже специально не поленился зарегиться что бы спросить у великих мозгов о помощи в проблеме Улыбка

Суть в том что нужен справочник в 1с7.7 ТиС 9.2 в котором будут храниться фото в формате .jpg
Ну а фото эти потом будут использовать товары из номенклатуры обращаясь к этому справочнику.
Буду ждать хоть какого нито ответа Улыбка

каким образом это можно реализовать? да и РЕАЛЬНО ли это в 7.7? Ведь наверняка кто то уже сталкивался с такой задачей. Где то тут есть в курилки уже подобный вопрос был задан, но немного не то, и пример был дан... но в примере чет не разобрался таки.
И теперь я тут пишу
  
Наверх
 
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: Справочник для хранения фото
Ответ #1 - 23. Мая 2010 :: 19:13
Печать  
ИМХО, если и реально, то слишком уж геморно. Как вариант - при помощи binary data преобразовывать в поток байт, которые вставлять в скуль-таблицу. Только при отображении все равно надо будет сохранять этот поток во временный файл, так как 1С-ка не умеет рисовать без файла. Самое простое, по моему, сохранять файл в общедоступном хранилище, а в базе хранить только ссылку на файл из этого хранилища.
  
Наверх
ICQ  
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Справочник для хранения фото
Ответ #2 - 23. Мая 2010 :: 20:37
Печать  
В одном из решений как в 7.7 (собственно похожее и на 8.2 предстоит) была необходимость хранения большого количества разных файлов (в т.ч. и картинки разного формата). В итоге после некоторых экспериментов пришли к выводу что ничего лучше стандартной файловой системы + хранения относительных путей нет. Может конечно и строки неограниченной длины и таблицы SQL, но вообще то SQL для подобных данных не совсем предназначена.
Имхо.. ФС + FileSystemObject + Справочник для путей.
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Справочник для хранения фото
Ответ #3 - 24. Мая 2010 :: 05:04
Печать  
Хочешь именно в самой базе хранить ?..
Баловство.

http://www.forum.mista.ru/topic.php?id=390858
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Справочник для хранения фото
Ответ #4 - 24. Мая 2010 :: 05:05
Печать  
(0) Зачти ветку
Преобразование картинки в строку
http://www.1cpp.ru/forum/YaBB.pl?num=1178538146/0
  
Наверх
 
IP записан
 
slawa
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 125
Зарегистрирован: 05. Октября 2006
Re: Справочник для хранения фото
Ответ #5 - 24. Мая 2010 :: 05:08
Печать  
Я использовал BinFiles.dll

Так сохраняется файл в справочнике:
Код
Выбрать все
Файл = СоздатьОбъект("AddIn.BinFile");
_тип = гл_АДДОН1С.ExtrFileExt(_ФайлКарт);
Если СтрДлина(_тип)<2 Тогда
	Возврат;
КонецЕсли;
Попытка
	Карт1.Загрузить(_ФайлКарт);
Исключение
	Предупреждение("Не правильный формат файла !!!", 20);
	Возврат;
КонецПопытки;
Файл.Open(_ФайлКарт, 0);
стр = Файл.ReadHex();
спрКарт = СоздатьОбъект("Справочник.КартинкиНоменклатуры");
Если спрКарт.НайтиПоРеквизиту("Номенклатура", ТекущийЭлемент(), 1) = 0 Тогда
	спрКарт.Новый();
КонецЕсли;
спрКарт.Номенклатура = ТекущийЭлемент();
спрКарт.ТипКартинки  = СокрЛП(Сред(_тип, 2));
спрКарт.Изображение  = Файл.Compress(стр);
спрКарт.Записать();
Файл.Close(); 



Так показать картинку:
Код
Выбрать все
Процедура ПоказатьКартинку()
	Перем _ФайлКарт, Файл;
	спрКарт = СоздатьОбъект("Справочник.КартинкиНоменклатуры");
	Если спрКарт.НайтиПоРеквизиту("Номенклатура", ТекущийЭлемент(), 1)=1 Тогда
		Если (ПустоеЗначение(спрКарт.Изображение)=1) или (ПустоеЗначение(спрКарт.ТипКартинки)=1)  Тогда
			Возврат;
		КонецЕсли;
		Файл = СоздатьОбъект("AddIn.BinFile");
		_ФайлКарт = );
		Файл.Create(_ФайлКарт);
		стр = Файл.Decompress(спрКарт.Изображение);
		Файл.WriteHex(стр);
		Файл.Close();
		Попытка
			Карт1.Загрузить(_ФайлКарт);
		Исключение
			Возврат;
		КонецПопытки;
		Карт1.РежимРисования(3);
		ФС.УдалитьФайл(_ФайлКарт);
		Файл = 0;
	КонецЕсли;
КонецПроцедуры 

  

binfiles.zip ( 321 KB | Загрузки )
Наверх
 
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: Справочник для хранения фото
Ответ #6 - 24. Мая 2010 :: 17:48
Печать  
По поводу хранения файлов в каталоге - я бы порекомендовал как-нибудь использовать систему хранения данных, наподобие GIT. Там файл хранится следующим образом: для файла вычисляется хэш МД5 (можно, например, ФормЭкс-ом), далее из первых двух символов создается каталог первого уровня хранения, из следующих двух символов - каталог второго уровня, остальные символы - формируют имя файла. Это позволяет исключить ненужное хранение одинаковых файлов и удобно структурирует данные по каталогам. Единственное, что надо хранить, при этом - это хэш файла.
  
Наверх
ICQ  
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Справочник для хранения фото
Ответ #7 - 25. Мая 2010 :: 06:09
Печать  
А я для названий делал получал guid-ы Улыбка. Каталоги тоже создавал через guid. По 500-700 файлов в каталоге. Хранил только имя каталога и guid. В наименовании хранил имя файла, отдельно еще расширение, размер, дата создания, изменения и т.п. чтобы быстро можно было докапаться до этих сведений. Ну и естественно ссылку на объект к которому привязан файл тоже в данном справочнике хранил.
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать