|
Как отобразить картинку на упр. форме из внешнего файла в 8.2? | ☑ | ||
|---|---|---|---|---|
|
0
simply
12.04.11
✎
12:07
|
Добрый день!
Подскажите, пожалуйста, как отобразить картинку на управляемой форме (8.2) из внешнего файла без ХранилищаЗначений? |
|||
|
1
simply
12.04.11
✎
12:15
|
Без ХранилищаЗначений - имеется в виду - без сохранения в базе, вообще.
|
|||
|
2
Волесвет
12.04.11
✎
12:18
|
тут типо нато тупо ткнуть носом откуда и что
|
|||
|
3
detec
12.04.11
✎
12:19
|
(0) Через навигационную ссылку.
|
|||
|
4
detec
12.04.11
✎
12:20
|
Точнее, через временное хранилище, и файл кратинки нужно по-любому передавать на сервер.
|
|||
|
5
Варвар
12.04.11
✎
12:22
|
Поле HTML документа как вариант.
|
|||
|
6
simply
12.04.11
✎
12:43
|
(5) и я так уже думал. Но отложил пока этот вариант.
(4) спасибо! сейчас опробую его. Заодно, проверю, насколько будет тормозить |
|||
|
7
Композитор
12.04.11
✎
12:45
|
(6) тормозить будет. Вопрос насколько... :)
|
|||
|
8
simply
12.04.11
✎
12:49
|
(7) тогда зачем "козе баян"?! Не перестаю удивляться извращенности создателей 1С! Нет, чтобы просто сделать ее ООП-ной. Понамутили, аж тошнит.
Сорри, за эмоции :) |
|||
|
9
ДобрынинПавел
12.04.11
✎
12:53
|
В модуле формы:&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) ИмяКартинки = Строка(Объект.АртикулНаш)+".*"; Путь=Константы.ПутьКартинок.Получить(); //+Объект.АртикулНаш+ ".gif"; НайденныеФайлы = НайтиФайлы(Путь, ИмяКартинки, Ложь); Если НайденныеФайлы.Количество()>0 тогда СсылкаНаКартинку=ПоместитьВоВременноеХранилище(Новый Картинка(НайденныеФайлы[0].ПолноеИмя, Истина), УникальныйИдентификатор); Иначе Элементы.Картинка.ТекстНевыбраннойКартинки="Картинка "+ИмяКартинки+" не найдена."; КонецЕсли; //МинОстатокПосчитанный=ПроцедурыОбменаССайтом.ПолучитьМинОстаток(Объект); //ПроцентНаценкиПосчитанный=ПроцедурыОбменаССайтом.ПолучитьПроцентНаценки(Объект); НашаЦена=ПроцедурыОбменаССайтом.ПолучитьЦенуСНаценкой(Объект); //Попытка //Исключение // //Сообщить("Картинка "+ИмяКартинки+" не найдена."); //КонецПопытки; Элементы.Наценка.ТолькоПросмотр=Объект.НаценкаНаследуется; Элементы.МинОстаток.ТолькоПросмотр=Объект.МинОстатокНаследуется; КонецПроцедуры |
|||
|
10
ДобрынинПавел
12.04.11
✎
12:56
|
СсылкаНаКартинку является реквизитом формы типа строка, и является значением параметра ПутьКДанным самой картинки на форме.
|
|||
|
11
acsent
12.04.11
✎
12:58
|
Зачем так извращаться? Почему не использовать стандартный механизм?
Кстати там тоже можно храниить файлы на диске |
|||
|
12
ДобрынинПавел
12.04.11
✎
12:59
|
Это как?
|
|||
|
13
simply
12.04.11
✎
13:00
|
(9) Спасибо!
(10) "... и является значением параметра ПутьКДанным самой картинки на форме" - что-то я не понял |
|||
|
14
simply
12.04.11
✎
13:01
|
(11) что за "стандартный механизм"? Пока ничего кроме извращений не нашел.
|
|||
|
15
ДобрынинПавел
12.04.11
✎
13:02
|
На форме ставишь Поле картинки, у него есть реквизит ПутьКДданным, в нем выбираешь реквизит формы СсылкаНаКартинку
|
|||
|
16
simply
12.04.11
✎
13:02
|
чтобы была понятна задача:
В MySQL лежат картинки в двоичном виде. В списке товаров вытаскиваю нужную картинку товара, сохраняю во временный файл и отображаю на форме. В 7.7 с отображением проблем не было. А здесь ... |
|||
|
17
acsent
12.04.11
✎
13:03
|
(14) Стандартный механизм хранения файлов
|
|||
|
18
simply
12.04.11
✎
13:03
|
а зачем мне их хранить в базе 1С? Она файловая и имеет ограничение на размер
|
|||
|
19
simply
12.04.11
✎
13:04
|
к тому же, годы хранения картинок в MySQL зарекомендовали себя великолепно.
|
|||
|
20
acsent
12.04.11
✎
13:05
|
(18) >>Кстати там тоже можно храниить файлы на диске
|
|||
|
21
simply
12.04.11
✎
13:06
|
(20) спасибо за попытку помочь!
Это вариант не подходит, т.к. не хочу на каждом компьютере дублировать огромную коллекцию картинок. Достал нужную из MySQL. Не нужна - удалил. И т.д. Удобно и экономно. |
|||
|
22
simply
12.04.11
✎
13:08
|
пойду замерять ВременноХранилище.
Если не понравится, займусь вариантами HTML и AxtiveX |
|||
|
23
acsent
12.04.11
✎
13:09
|
(21) Не на каждом а на одном - на сервере например
|
|||
|
24
ДобрынинПавел
12.04.11
✎
13:09
|
Мой вариант работает (9)? Я забыл там лишнее удалить, но думаю и так понятно. У меня работало нормально.
|
|||
|
25
Композитор
12.04.11
✎
13:09
|
(8) v8: v8: 8.2. Запись данных в реквизит табличной части с типом ХранилищеЗначения
Обрати внимание на 6 пост. |
|||
|
26
simply
12.04.11
✎
13:15
|
(24) еще нет, но сразу же отпишусь
(25) спасибо! |
|||
|
27
simply
12.04.11
✎
13:22
|
про ВременноХранилище, цитата:
"... перенести эту информацию из временного из временного хранилища в базу данных и получить ее обратно на компьютер пользовател" Да что за напасть?! Ну не хочу я ничего в базу пихать! Ну и извращение эта 8.2! |
|||
|
28
Композитор
12.04.11
✎
13:27
|
(27) так временно же :)
|
|||
|
29
simply
12.04.11
✎
13:32
|
даже это пугает ;)
В магазине пользователь за один сеанс может пересмотреть сотни товаров. Их все в базе, пусть и временно хранить? |
|||
|
30
simply
12.04.11
✎
13:32
|
или пойти путем: добавил - удалил?
|
|||
|
31
detec
12.04.11
✎
13:58
|
(30) Моё ИМХО - хранить в БД. В этом случае, после того, как исправят баг 1С-овцы, можно будет использовать http://info_start.ru/public/81374/.
|
|||
|
32
simply
12.04.11
✎
14:12
|
ссылка битая
|
|||
|
33
simply
12.04.11
✎
14:13
|
(32) сорри, это я торможу
|
|||
|
34
simply
12.04.11
✎
17:05
|
Вот что получилось (по сути, как и было у меня в 7.7, только с понтами 8.2):
АдресКартинки - строковый реквизит формы для хранения ссылки во временном хранилище ИмяФайлаКартинки - строковый реквизит формы для хранения полного пути к внешнему файлу картинки ПараметрыСеанса.СКЛ - модуль объекта обработки, где эмулируется класс по работе с MySQL &НаКлиенте Процедура СписокПриАктивизацииСтроки(Элемент) // На всякий случай очистим предыдущие данные картинки Попытка УдалитьИзВременногоХранилища(АдресКартинки); Исключение КонецПопытки; АдресКартинки=""; Попытка УдалитьФайлы(ИмяФайлаКартинки); Исключение КонецПопытки; ИмяФайлаКартинки=""; ИмяФайлаКартинки=ПолучитьКартинкуАртикула(СокрЛП(Элемент.ТекущаяСтрока)); Попытка Результат=ПоместитьФайл(АдресКартинки,ИмяФайлаКартинки,,Ложь,Новый УникальныйИдентификатор); Если НЕ Результат Тогда а=1/0; КонецЕсли; Исключение АдресКартинки=""; Элементы.Картинка.ТекстНевыбраннойКартинки="Картинка для артикула "+СокрЛП(Элемент.ТекущаяСтрока)+" не найдена"; КонецПопытки; //Оповестить("НоваяКартинка"); КонецПроцедуры &НаСервере Функция ПолучитьКартинкуАртикула(Артикул) ИмяКартинки=Неопределено; Если ТекущийЭлемент.Имя="Список" Тогда оСКЛ=ПолучитьИзВременногоХранилища(ПараметрыСеанса.СКЛ); ИмяКартинки=оСКЛ.ПолучитьРисункиАртикула(Артикул); оСКЛ=Неопределено; КонецЕсли; Возврат ИмяКартинки; КонецФункции // ПолучитьКартинкуАртикула |
|||
|
35
simply
12.04.11
✎
17:08
|
Да, скорость работы - визуально приемлемая, как в моей 7.7
|
|||
|
36
simply
12.04.11
✎
17:08
|
Спасибо всем!!!
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |