Имя: Пароль:
1C
1C 7.7
v7: Реально ли картинку записать в базу 1С?
,
0 YaroslavStr
 
06.05.13
15:11
Например есть картинка на офисе, а её надо разослать вместе с документом на филиалы. Дизайнер прикрепляет эту картинку к документу и отсылает. 1С при этом записывает этот файл картинки как текст что ли? Типа того, как можно посмотреть его (картинку) в Far. Может тупо выглядит из стороны такое, искал, но вроде нигде ничего подобного нет... А хочется такое иметь у себя :)
1 ЧеловекДуши
 
06.05.13
15:13
Да, реально, но тебе это не понравится :)
2 IamAlexy
 
06.05.13
15:14
(0) в моем счастливом босоногом децтве картинки в фидо ююками рассылали..

так что - было бы желание и текстовое поле неограниченной длинны... и все возможно :)
3 Vlad_1717
 
06.05.13
15:15
(0) Сохрани картинку в отдельной таблице.
4 YaroslavStr
 
06.05.13
15:17
(1) Я в курсе по поводу тормозов, но все-таки реально ли? Какими средствами... может в текст конвертировать какой-то прогой... Полдня потратил, а мысль голову насквозь просверлила. Чувствую спать не даст :)
5 ЧеловекДуши
 
06.05.13
15:18
(3) И как ты это представляешь?
Картинка каждый раз новая :)

+(0) По сути я бы на твоём месте начал склонять контору к заведению корпоративного почтового сервиса. Где бы можно было рассылать любые картинки любому сотруднику :)
6 ЧеловекДуши
 
06.05.13
15:19
(4) Переводишь файл в текстовый формат, а потом на выходе собираешь обратно. :)
Или переходи на 8-ку, там это уже реализовано.
7 drcrasher
 
06.05.13
15:20
(2) становитесь девки в кучу, ща вам пикчу заюючу

(0) если мне правильно изменяет память, то 77 тупо лопнет от количества длинных строк в которых ты будешь хранить картинки
8 YaroslavStr
 
06.05.13
15:21
Почему картинка каждый раз новая? Дизайнер сгенерировал её в архикаде и все на этом. Есть почтовый сервер, но проблема в другом. Существует текучка и дизайнеры меняются, а картинки должны храниться "вечно".
9 YaroslavStr
 
06.05.13
15:21
(7) вооо тоесть есть такая проблема?
10 drcrasher
 
06.05.13
15:22
(8) как то не связано с (0)
11 YaroslavStr
 
06.05.13
15:23
буду пробовать в текст и обратно. есть куча камней, но попробовать стоит
12 ЧеловекДуши
 
06.05.13
15:23
(8) Ты хоть представляешь сколько весит такое художество в векторной графике?
13 ЧеловекДуши
 
06.05.13
15:23
+(8) А теперь переведи её в BMP формат :)
14 YaroslavStr
 
06.05.13
15:23
(10) есть и то и другое :)
15 ЧеловекДуши
 
06.05.13
15:24
(11) Не взлетит, база рухнет :)
16 drcrasher
 
06.05.13
15:24
(9) читаем интернеты на тему "где 77 хранит строки неограниченной длины", затем "максимальный размер файла".
складываем полученные знания и объясняем руководству понятия "облака", "дропбокс" и прочие файлопомойки
17 OberNew
 
06.05.13
15:24
были помню внешние компоненты для семерки, картинку в строку и обратно перегоняли.
18 YaroslavStr
 
06.05.13
15:24
(12) Все в JPG сохраняют, там не надо больших и качественных рисунков
19 ЧеловекДуши
 
06.05.13
15:26
+ Как вариант предлагаю курить FTP ресурсы, и складировать сеи художества тама, при запросе подтягивать на сервер к клиенту, т.е. организовать механизм идентификации файлов и их изменения по истечению времени :)
20 Сияющий Асинхраль
 
06.05.13
15:26
В семерке видел сторонние библиотеки для конвертации картинок в Base64, соответственно на входе картинка, на выходе текстовая строка, можно даже в реквизит базы типа строка с неограниченной длинной без проблем записать картинку таким образом, да вот надо ли такое извращение?
21 ЧеловекДуши
 
06.05.13
15:26
(18) Побоку, все что больше килобайта уже не кошерно :)
22 drcrasher
 
06.05.13
15:26
(18) из арчикада в жупег??? мосье знает толк в извращениях...
заведи себе 1СРР, отдельную скульную таблицу виду ид и блоб и ходи в неё спокойно, на топоры не мучай, им и так тяжко
23 МихаилМ
 
06.05.13
15:27
ищите компоненту для конвертации потока в base64.
с последующей записью в поле негранниченной длинны.

есть на проклабе.
24 ЧеловекДуши
 
06.05.13
15:28
(22) Походу мисье там работает с УРБД и картинка должна улетать по перефирийкам :)
25 Ковычки
 
06.05.13
15:29
(23) лучше конвертировать тогда в ASCII85
26 YaroslavStr
 
06.05.13
15:32
(24) Нет там никакого УРИБ. Просто до меня дизайнерыперед отправкой своего проекта на базу записывали все свои расчеты в 1С, потом приекрепляли  типа "Рисунок" все рисунки - генерировали XLS потом его паковали и отправляли на базу на обработку.
27 YaroslavStr
 
06.05.13
15:33
Вот мне теперь итересно. можно ли такое сделдать без генерации и пакования, хотя посленее видимо не помешает.
28 YaroslavStr
 
06.05.13
15:33
(23) vk_Base64.rar (63K) - внешняя компонента для работы с кодировкой Base64.
29 YaroslavStr
 
06.05.13
15:34
Это компонента от http://x-romix.narod.ru/
30 France
 
06.05.13
15:34
(2) в моем советском "интернете" тоже рассылали картинки использую ":^^^"))
31 ЧеловекДуши
 
06.05.13
15:35
(26) Ну тогда все проще...
В БД храни ссылку на файл.
А сам фал храни на каком либо сервере, вот и все чудо.

Лепить мегобайты левой информации без смыслу :)
32 drcrasher
 
06.05.13
15:37
(18) http://jpeg.jpg.to/ угу
33 ЧеловекДуши
 
06.05.13
15:38
(29) Ненужно тебе это :)
Если вы все работаете в одной локальной сети, то зачем тебе все хранить в БД?
Проще структурированно, ибо 10 000 файлов в одном каталоге по вешают твой сервер (на время), хранить все на каком либо сетевом ресурсе и открывать по требованию.
Но это тебе придется искать :)
34 Ковычки
 
06.05.13
15:38
как то так

Перем Ширина,Позиция,Кортеж,Количество,Стр,МассивДекодера[5],ФСО,Скрипт;
Перем МассивСдвига[4];
//****** Кодер85 (Начало)
Функция Начало()
   Позиция=2;
   Стр="<~";
   Возврат Стр;
КонецФункции    // Начало

Функция Кодирование()
   Перем МассивСимв[5];
   Для к=1 По 5 Цикл
       МассивСимв[к]=Кортеж % 85;
       Кортеж=Цел(Кортеж/85);
   КонецЦикла;
   Для к=1 По Количество+1 Цикл
       Стр=Стр+Симв(МассивСимв[6-к]+33);
       Если Позиция>=Ширина Тогда
           Позиция=0;
           Стр=Стр+РазделительСтрок;
       Иначе
           Позиция=Позиция+1;
       КонецЕсли;
   КонецЦикла;
КонецФункции    // Кодирование

Функция Конец()
   Если Количество>0 Тогда
       Кодирование();
   КонецЕсли;
   Если Позиция+2>Ширина Тогда
       Стр=Стр+РазделительСтрок;
   КонецЕсли;
   Стр=Стр+"~>"+РазделительСтрок;
КонецФункции    // Конец

Функция Применить85(Знач с)
       Количество=Количество+1;
       Кортеж=Кортеж+(с*МассивСдвига[Количество]);//ПобитноеИли(Кортеж,с);
       Если Количество=4 Тогда
           Если Кортеж=0 Тогда
               Стр=Стр+"z";
               Если Позиция>=Ширина Тогда
                   Позиция=0;
                   Стр=Стр+РазделительСтрок;
               Иначе
                   Позиция=Позиция+1;
               КонецЕсли;
           Иначе
               Кодирование();
               Кортеж=0;
           КонецЕсли;
           Количество=0;
       КонецЕсли;
КонецФункции    // Применить85

Функция Копи85(Файл)
   Перем РазмерФайла;
   ФС.АтрибутыФайла(Файл,РазмерФайла);
   ФайлОбъект=ФСО.OpenTextFile(Файл);
   к=0;
   Пока ФайлОбъект.atendofstream()=0 Цикл
       Символ=""+ФайлОбъект.read(1);
       Если Символ="" Тогда
           Байт=0;
       Иначе
           Байт=КодСимв(Символ);
       КонецЕсли;
       Применить85(Байт);
       к=к+1;
       Состояние(Индикатор(к,РазмерФайла));
   КонецЦикла;
   ФайлОбъект.Close();
КонецФункции    // Копи85
//****** Кодер85 (Конец)

//****** ДеКодер85 (Начало)
Функция ВПрименить(Байт)
   Для к=1 По Байт Цикл
       Скрипт.ExecuteStatement("S=S & chr("+(Цел(Кортеж/МассивСдвига[к]) % 256)+")");//ПобитныйСдвигВПраво(Кортеж,(4-к)*8)
   КонецЦикла;
КонецФункции    // ВПрименить

Функция ДеКодер85(Пар)
   Кол=СтрДлина(Пар);
   Для к=1 По Кол Цикл
       с=КодСимв(Сред(Пар,к,1));
       Если с=КодСимв("z") Тогда
           Для ш=1 По 4 Цикл
               Скрипт.ExecuteStatement("S=S & chr(0)");
           КонецЦикла;
       ИначеЕсли Кол=к Тогда
           Если Количество>0 Тогда
               Кортеж=Кортеж+МассивДекодера[Количество];
               ВПрименить(Количество);
           КонецЕсли;
           Прервать;
       Иначе
           Количество=Количество+1;
           Кортеж=Кортеж+(с-33)*МассивДекодера[Количество];
           Если Количество=5 Тогда
               ВПрименить(4);
               Количество=0;
               Кортеж=0;
           КонецЕсли;
       КонецЕсли;
       Состояние(Индикатор(к,Кол));
   КонецЦикла;
КонецФункции    // ДеКодер85

Функция ДеКодирование(Файл)
   Кортеж=0;с=0;Количество=0;Стр="";
   Текст=СоздатьОбъект("Текст");
   Текст.Открыть(Файл);
   Кол=Текст.КоличествоСтрок();
   Для к=1 По Кол Цикл
       Стр=Стр+Текст.ПолучитьСтроку(к);
       Состояние(Индикатор(к,Кол));
   КонецЦикла;
   Если (Лев(Стр,2)="<~") и (Прав(Стр,2)="~>") Тогда
       Скрипт=СоздатьОбъект("MSScriptControl.ScriptControl");
       Скрипт.language="vbscript";
       Скрипт.ExecuteStatement("S=""""");
       ФайлОбъект=ФСО.OpenTextFile(Файл+".bin",2,-1);
       Стр=Сред(Стр,3,СтрДлина(Стр)-4);//
       ДеКодер85(Стр);
       Скрипт.AddObject("File",ФайлОбъект);
       Скрипт.ExecuteStatement("File.Write(S)");
       ФайлОбъект.Close();
   Иначе
       Сообщить("Файл не Аски85");
   КонецЕсли;
КонецФункции    // ДеКодирование
//****** ДеКодер85 (Конец)

Процедура ПриОткрытии()
   Перем Файл,Каталог;
   МассивСдвига[1]=16777216;
   МассивСдвига[2]=65536;
   МассивСдвига[3]=256;
   МассивСдвига[4]=1;
   Ширина=72;Позиция=0;Кортеж=0;Количество=0;
   ФСО=СоздатьОбъект("Scripting.FileSystemObject");
   Если ФС.ВыбратьФайл(0,Файл,Каталог,"","Все файлы (*.*)|*.*","")=1 Тогда
       Начало();
       Копи85(Каталог+Файл);
       Конец();
       Текст=СоздатьОбъект("Текст");
       Текст.ДобавитьСтроку(Стр);
       Текст.Записать(Каталог+Файл+".ascii85");
   Иначе
       Возврат;
   КонецЕсли;
   МассивДекодера[1]=85*85*85*85;
   МассивДекодера[2]=85*85*85;
   МассивДекодера[3]=85*85;
   МассивДекодера[4]=85;
   МассивДекодера[5]=1;
   ДеКодирование(Каталог+Файл+".ascii85");
   СтатусВозврата(0);
КонецПроцедуры    // ПриОткрытии
35 YaroslavStr
 
06.05.13
15:39
Я вот тут тоже так подумал... После вставки изображения, копируя, отсылать его на сервер картинок, давая ему уникальный идентификатор, а при удалении в проекте, по фтп сносить этот файл ...
36 YaroslavStr
 
06.05.13
15:39
(34) Я аж испугался от того что код резко появился :) Не пугай!
37 Umka2008
 
06.05.13
15:40
(0) - а что тут сложного? Делаешь так
38 Ковычки
 
06.05.13
15:40
+

//*******************************************
Функция Индикатор(к,Кол,Ограничение=64)
   Ч=к/Кол;
   Возврат СтрЗаменить(Формат(СтрЗаменить(Формат("","С"+Цел(Ограничение*Ч))," ","|"),"С"+Ограничение)," ",".")+Формат(Окр(100*Ч,2),"Ч6.2")+"%";
КонецФункции    // Индикатор
39 Umka2008
 
06.05.13
15:40
```````````````````````````````````_*9000¶¶0*```````````````
``````````````````````````````*¶¶¶¶¶¶¶¶¶¶¶00¶¶0Х````````````
````````````````````````````_¶¶¶9**ХХХХХ99110¶¶¶¶0``````````
```````````````````````````1¶¶0ХХХ1ХХХХХ99180¶¶¶¶¶*`````````
``````````````````````````0¶¶0919800899809199¶¶¶¶¶¶`````````
`````````````````````__`_¶¶¶¶009Х199119990¶¶¶¶¶¶¶¶¶`````````
``````````````````_``*__Х1111Х000000¶088990¶¶¶¶¶¶¶¶8````````
``````````````````*_`*_`````````**110¶¶¶¶¶¶¶¶¶0_¶¶¶¶__Х_````
`````````````````*_``````````````````*`0¶¶¶¶¶¶9``*¶¶9*8***``
`````````````````_```_```````````````````_8¶¶¶¶```*````__9``
````````````18001*```````````_``````````````*¶*``*`````__Х_`
``````````9¶¶¶9Х90¶¶009¶09Х__`````_``_``*````_```_**__*_1*``
`````````¶¶¶91_Х¶¶091980¶¶¶¶¶¶0¶Х````````_`_`_`_``_Х9Х*Х````
````````Х¶9***0¶0Х***___`___Х900¶Х99*_```_`_____````_```````
````````9¶0Х*0¶9_```_****_*_____*90¶¶¶0Х```_``1_````````````
`````````¶¶¶0¶¶1_`__Х1911Х*ХХ11Х```*Х9¶¶¶Х```90`````````````
``````````_0¶¶81*1191*_******Х_`Х1*`*ХХ*0¶0`Х9_`````````````
````````````0¶9911Х_`*_`0¶¶¶¶¶98¶¶¶`_Х918¶¶¶````````````````
````````````¶¶111ХХ`¶¶¶¶0*````__*0¶`1Х1ХХ¶¶¶````````````````
````````````0¶01*19`Х¶9```_¶¶_``_*_¶91980¶¶¶````````````````
`````````````¶¶8**Х0¶¶````_¶¶````9`9¶910¶¶¶9````````````````
``````````````¶¶09Х9¶0``````**```__*¶¶90¶¶0`````````````````
```````````````¶¶¶91¶¶`````_0ХХ9`_`0¶¶¶¶¶0`````````1¶¶¶¶¶Х``
``_0098Х````````¶¶¶08¶¶```_9``*Х0Х0¶¶¶¶¶_```````_9¶¶¶_¶9¶¶¶`
``¶¶*``¶¶0```````Х¶¶¶¶¶¶1**Х91Х*Х1810¶¶¶Х01*90¶¶¶¶¶`*`¶ХХ8¶9
`9¶Х*_`¶1¶¶¶0*_````_¶01***Х1***Х11190¶¶0Х¶¶¶¶¶09_19`1`¶¶110¶
_¶1*1*`0_Х*Х0¶¶¶¶¶¶¶00`*Х*Х1*ХХ180000¶¶`_*`0`0`1`*__0``¶¶8¶¶
Х¶***`¶Х8`0_8`0_98*Х_¶*1Х__*ХХ**Х9900¶¶`*Х`1`0`¶`¶`0`¶*0¶¶¶*
`¶¶19000ХХ*0`1`9`0*9¶¶_****____**1900¶¶*_9Х0_9*Х_*Х1¶8¶¶¶9``
``¶¶¶¶990Х0*8*9*990¶¶9Х1Х*_*1ХХ1199980¶¶¶_198*0*00¶¶¶¶Х`````
```_1¶¶¶¶¶0¶0¶00¶¶¶¶0**Х**ХХ***ХХХХХХ10¶¶¶9¶¶¶¶¶¶¶8*````````
````````Х8¶¶¶¶¶¶¶¶¶1_*___****___`*ХХХХ980¶¶¶¶```````````````
`````````````````¶8__*Х***ХХХХХ1998998991190¶¶``````````````
````````````````9¶9**____**ХХ***ХХХ*Х1988000¶¶8`````````````
````````````````¶¶ХХХХ_`__********198999800¶¶¶¶`````````````
`````````````_*¶¶00¶¶¶80_`_**1199900¶¶¶¶¶¶¶¶¶¶¶`````````````
`````**1¶¶0¶¶¶¶1Х8_Х0000¶0**Х98990¶¶019**910¶¶¶*1Х*`````````
```¶¶0111100Х*1*8*0*99¶8¶¶¶*Х98¶¶¶¶___***Х_*Х1000¶¶¶1```````
``_¶¶09Х*``*0*10*¶`¶_0*¶Х¶¶¶180¶¶¶`1_Х_ХХ***0¶¶1*Х0¶¶¶``````
``0¶091Х11Х`_¶*1¶_¶`¶108¶0¶¶¶8¶¶¶0Х*Х`_***9¶¶1**1990¶¶Х`````
``¶¶091ХХ1ХХ*`¶`08¶`¶8¶¶¶¶¶¶¶¶¶¶¶08ХХ_*_*0¶08911Х*Х0¶¶¶`````
``¶0Х*ХХХХ***``¶`0900¶¶¶¶0*`*111*Х¶0Х8***¶99111ХХХХ110¶0````
``0¶1ХХХХХХ**``¶*¶¶¶¶¶¶1_```_*__```0¶09*Х¶1***_**ХХ*Х8¶¶````
```¶¶01Х*****``¶¶¶¶0Х_``ХХХ**__``````¶¶8*¶0999111ХХХ10¶1````
````1¶¶9*****_¶¶¶9_``ХХХХ1**__````````9¶¶¶¶¶8991118
40 YaroslavStr
 
06.05.13
15:41
(39) Не-не не заганяй :)
41 YaroslavStr
 
06.05.13
15:43
Какие есть компоненты для работы с фтп?
42 Ковычки
 
06.05.13
15:45
(41) windows
43 ЧеловекДуши
 
06.05.13
15:45
(41) Если у тебя нет УРБД, и все работают в локальной сети, то и с FTP можешь не заморачиваться :)
44 ЧеловекДуши
 
06.05.13
15:46
45 YaroslavStr
 
06.05.13
15:47
(44) Намек понял :) Всем спасибо, буду спать спокойно, видимо...
46 МихаилМ
 
06.05.13
15:50
47 YaroslavStr
 
06.05.13
15:58
(46) Спасибо
48 ЗомбиТ1С
 
06.05.13
18:43
49 Злой Бобр
 
06.05.13
22:47
(0) FTP тебе в помощь. На компах нужных юзеров настраиваешь синхронизацию. А в 1С тупо поле со ссылочкой (или номером файла). И все пучком будет. И ненужно придумывать себе лишний повод бегать за вазелином.
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс