Имя: Пароль:
1C
 
Можно ли хранить картинки в базе (не путь к ним)
0 Genri
 
18.02.09
14:39
Может есть что-то не стандартное.
1 ДенисЧ
 
18.02.09
14:40
Если в SQL, то можно.
2 Genri
 
18.02.09
14:50
Как ?
3 Ёпрст
 
18.02.09
14:52
можно хранить всё что угодно.. любой тип файлов..
Хоть во внешней обработке, хоть в самом мд.
4 ДенисЧ
 
18.02.09
14:52
Использовать тип IMAGE в sql-сервере и соответствующие операции из его же арсенала
5 Sadovnikov
 
18.02.09
14:59
RiK_SQL
СохранитьФайлВБазу(<?>,);
Синтаксис:
СохранитьФайлВБазу(<ИмяФайла>,<ТекстЗапроса>)
Назначение:
Сохранить файл с расширением doc или xls в базу SQL в поле, имеющее тип данных image.
Возвращает: 1 в случае удачного выполнения метода, 0 - в случае ошибки.
Параметры:

<ИмяФайла> - строка, содержит путь и имя файла, который необходимо сохранить в базу.
<ТекстЗапроса> - строка, содержит текст запроса, при помощи которого будет сохраняться файл в базу. Поле базы, содержащее файл, должно быть в запросе первым!!!

Пример (файл хранится в поле Data):

Процедура СохранитьФайлВБазу(НомФайла)
   ИмяФайла     = '''';
   ИмяКаталога     = '''';
   ТекстЗапроса = ''
   | Delete OKR_Periodik..Test Where NomDoc = ''+НомФайла+''
   | Insert OKR_Periodik..Test (Data,NomDoc) Values (?,''+НомФайла+'')
   | '';

   Если ФС.ВыбратьФайл(0,ИмяФайла,ИмяКаталога,''Выберите файл'',''Все файлы (*.*)|*.*'',''*'')=1 Тогда
       Если ОбъектП.СохранитьФайлВБазу(ИмяКаталога+ИмяФайла,ТекстЗапроса) = 0 Тогда
           Сообщить(ТекстЗапроса);
       КонецЕсли;
   КонецЕсли;
КонецПроцедуры
6 Genri
 
18.02.09
15:06
Всем БОЛЬШОЕ СПАСИБО, буду пробовать.
7 Armando
 
18.02.09
15:11
Если дбф, то можно попробовать в строках неограниченной длины
8 tetradon
 
18.02.09
15:11
Это конечно все хорошо. Но если картинок много то размер базы вырастит непомерно ! И ворочаться она будет как на костылях. А какие классные буду скульные бэкапы Ммммм. В общем хорошенько подумайте :) Может их лучше все таки в каталоге хранить :)
9 Genri
 
18.02.09
15:14
(8)Так хочет заказчик, я предлагал в каталоге и говорил о последствиях ему по...
10 GreyMen
 
18.02.09
15:22
Вот у меня тоже сейчас встал вопрос о хранении картинок. Мнения разделились, я склоняюсь к хранению избражений в папках, а в базе ссылки. Как братва считает, есть ли смысл хранить изображения в базе или всетаки я прав и стоит хранить в папках?
11 Ёпрст
 
18.02.09
15:23
(10) всё зависит от дальнейшего использования..
имхо, тупо в папке.
12 lift
 
18.02.09
15:23
(9) делай как хочет этот дурной заказчик, когда сдашь  запоет по другому!
13 GreyMen
 
18.02.09
15:25
(11) дальнейшее использование - отображение по кнопочке на форме. Фотки номенклатуры, а её оооочень много
14 Ёпрст
 
18.02.09
15:26
(13) помимо конвертации картинки в базу, тебе придётся её еще и конвертить взад, чтоб отображалась...а это время.
15 Sadovnikov
 
18.02.09
15:41
(14) Махом это все делается. Если, конечно, не в форме списка это вытворять :)
///******************************** DEVIce 18.12.2008
Процедура ЗаписатьФотоВБД(элТовар, стрИмяФайла) Экспорт
   ТекстЗапроса = "
   |Set NoCount On
   |
   |Delete From " + ИмяБазыФотографий + ".ФотографииНоменклатуры
   |Where ExchangeIDТовар = '" + элТовар.ExchangeID + "'
   |
   |Insert Into " + ИмяБазыФотографий + ".ФотографииНоменклатуры (ExchangeIDТовар, Фотография, ДатаОбновления)
   |Values ('" + элТовар.ExchangeID + "', ?, '" + Формат(ТекущаяДата(), "ДГГГГММДД") + "')";
   
   ОбъектП.СохранитьФайлВБазу(стрИмяФайла, ТекстЗапроса);
КонецПроцедуры
///******************************** DEVIce 18.12.2008
///******************************** DEVIce 19.12.2008
Функция ПолучитьФотоИзБД(элТовар) Экспорт
   Если фЕстьФотография(элТовар) = 0 Тогда
       Возврат "";
   КонецЕсли;
   
   ТекстЗапроса = "
   |Set NoCount On
   |
   |Select
   |    Фотографии.Фотография Фотография
   |From
   |    " + ИмяБазыФотографий + ".ФотографииНоменклатуры Фотографии (NoLock)
   |Where
   |    Фотографии.ExchangeIDТовар = '" + элТовар.ExchangeID + "'";
   
   стрИмяФайла    = КаталогВременныхФайлов() + GUID() + ".jpg";
   
   Если ОбъектП.СохранитьФайлНаДиск(стрИмяФайла, ТекстЗапроса) = 1 Тогда
       Возврат стрИмяФайла;
   КонецЕсли;
   
   Возврат "";
КонецФункции
///******************************** DEVIce 19.12.2008
///******************************** DEVIce 18.12.2008
Процедура Показать() Экспорт
   Если ПустоеЗначение(ИмяФайла) = 1 Тогда
       Возврат;
   КонецЕсли;
   
   оДокумент    = СоздатьОбъект("MODI.Document");
   оДокумент.Create(ИмяФайла);
   
   Сам(Контекст).Объект.Document    = оДокумент;
КонецПроцедуры
///******************************** DEVIce 18.12.2008
16 Кириллка
 
18.02.09
15:47
имхо, порочно хранить файлы ввиде ссылок на папки.
Есть инструмент в mssql, есть возможность - работает все замечательно.
17 Ёпрст
 
18.02.09
15:50
(15) сколько это Всё весить будет в скуле ?
:))
18 Ёпрст
 
18.02.09
15:52
+17 та и какаой в этом практический смысл ?
Чтоб не спёрли/не попортили ?
19 Sadovnikov
 
18.02.09
15:56
(17) Не много оно весит. Файлик фото - около 100 килобайтиков. Тоесть, на 30 тыс. товаров - около трех гигов всего.
(18) Ага, чтоб не попортили. И живет это хозяйство в соседней скульной базе. Можно каждый день не бэкапить.
20 milan
 
18.02.09
16:04
(17) на сэкономленные от выигранных килобайтов деньги не сможешь нанять девочек, чтобы они заново потом вбивали в базу пути на картинки ;)
А если картинок еще и много ФС будет тормозить безбожно.
21 Злопчинский
 
18.02.09
22:32
(20) лабуда полная! в базе не надо даже хранить пути на картинки. Нужно простое правило, которое преобразует "ид" товара в полное имя картинки, этого достаточно...
..
Согласен с Ёпрст - тупо в папке...
..
(13) все что тебе надо - изложено и практически сделано уже здесь: бери, комбинируй и юзай (с минимальными переделками)
http://www.infostart.ru/blogs/330/
http://www.infostart.ru/projects/2188/
http://www.infostart.ru/projects/1387/
22 Moro
 
18.02.09
23:15
(10) (13) В своё время решил копированием указываемых картинок в Определенную папку в папке с базой с одновременным переименованием имени картинки в код товара. Бэкапил отдельно. Кто лезет в служебные папки - ататат.
23 Злопчинский
 
19.02.09
00:41
(22) в (21) примерно все так и сделано... ну не имеет смысла в базе хранить несущественную инфу... от потери картинок товара я пострадавших не знаю... ;-)
24 Sadovnikov
 
19.02.09
07:57
(21), (23) Ситуации разные бывают. Например, требование очень крупного поставщика всегда иметь фото на абсолютно все товары. Иначе - разрыв договора.
25 Стрелок
 
19.02.09
07:59
(24) поможешь с 1С++? сори за офтоп
26 Sadovnikov
 
19.02.09
07:59
(25) С чем именно?
27 Стрелок
 
19.02.09
08:00
(26) глянь пожалйста. опять в трёх соснах блукаю

http://www.1cpp.ru/forum/YaBB.pl?num=1234151550
28 Sadovnikov
 
19.02.09
08:02
(27) Не... У тебя там dbf, блин. Боюсь фигни всякой наговорить...
29 Mikeware
 
19.02.09
08:29
(21) Не всегда так... Иногда на одной картинке - группа товаров.
Картинка-сертификат - опять же на группу товаров. Или несколько качественных на один товар, одну поставку...
2 + 2 = 3.9999999999999999999999999999999...