|
Картинка на форме в веб-клиенте | ☑ | ||
---|---|---|---|---|
0
fdv_83
17.12.14
✎
15:39
|
Здравствуйте, форумчане.
У меня такая проблема. Я в управляемом приложении в форме элемента справочника по нажатию кнопки выбираю картинку. В толстом и тонком клиенте эта картинка сразу же отображается на форме. А вот в веб-клиенте не отображается. Она появляется на форме, если закрыть программу и снова открыть. Подскажите, пожалуйста, как сделать, чтобы картинка в веб-клиенте сразу появлялась на форме. |
|||
1
fdv_83
17.12.14
✎
17:50
|
Люди, откликнитесь
|
|||
2
fdv_83
17.12.14
✎
18:14
|
Up
|
|||
3
fdv_83
17.12.14
✎
22:50
|
Up
|
|||
4
fdv_83
18.12.14
✎
10:17
|
Up
|
|||
5
vde69
18.12.14
✎
10:19
|
показывай код
|
|||
6
fdv_83
18.12.14
✎
10:27
|
&НаКлиенте
Процедура ВыбратьКартинку(Команда) Перем ВыбранноеИмя; Если ЗначениеЗаполнено(Объект.ФайлКартинки) Тогда Если Вопрос("Удалить картинку?",РежимДиалогаВопрос.ДаНет) = КодВозвратаДиалога.Да Тогда АдресКартинки = ""; ПоместитьФайлКартинки(АдресКартинки); АдресКартинки = ПолучитьНавигационнуюСсылку(Объект.Ссылка, "ДанныеФайлаКартинки"); Возврат; КонецЕсли; КонецЕсли; #Если ВебКлиент Тогда АдресКартинки = ""; Если ПоместитьФайл(АдресКартинки, "", ВыбранноеИмя, Истина) Тогда Объект.ФайлКартинки = ВыбранноеИмя; ПоместитьФайлКартинки(АдресКартинки); КонецЕсли; АдресКартинки = ПолучитьНавигационнуюСсылку(Объект.Ссылка, "ДанныеФайлаКартинки"); #Иначе Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); Диалог.Заголовок = "Выберите файл картинки..."; Диалог.ПредварительныйПросмотр = Истина; Диалог.МножественныйВыбор = Ложь; Диалог.Фильтр = "Все картинки (*.bmp;*.dib;*.rle;*.jpg;*.jpeg;*.tif;*.gif;*.png;*.ico;*.wmf;*.emf)|*.bmp;*.dib;*.rle;*.jpg;*.jpeg;*.tif;*.gif;*.png;*.ico;*.wmf;*.emf|" + "Формат bmp (*.bmp;*.dib;*.rle)|*.bmp;*.dib;*.rle|" + "Формат jpeg (*.jpg;*.jpeg)|*.jpg;*.jpeg|" + "Формат tiff (*.tif)|*.tif|" + "Формат gif (*.gif)|*.gif|" + "Формат png (*.png)|*.png|" + "Формат icon (*.ico)|*.ico|" + "Формат метафайл (*.wmf;*.emf)|*.wmf;*.emf|"; Если Диалог.Выбрать() Тогда АдресКартинки = ""; Если ПоместитьФайл(АдресКартинки, Диалог.ПолноеИмяФайла, "", Ложь) Тогда Объект.ФайлКартинки = Диалог.ПолноеИмяФайла; ПоместитьФайлКартинки(АдресКартинки); КонецЕсли; АдресКартинки = ПолучитьНавигационнуюСсылку(Объект.Ссылка, "ДанныеФайлаКартинки"); КонецЕсли; #КонецЕсли КонецПроцедуры &НаСервере Процедура ПоместитьФайлКартинки(АдресВременногоХранилища) ЭлементСправочника = РеквизитФормыВЗначение("Объект"); Если АдресВременногоХранилища = "" Тогда ЭлементСправочника.ДанныеФайлаКартинки = Новый ХранилищеЗначения(""); ЭлементСправочника.ФайлКартинки = ""; Иначе ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресВременногоХранилища); ЭлементСправочника.ДанныеФайлаКартинки = Новый ХранилищеЗначения(ДвоичныеДанные,Новый СжатиеДанных(9)); КонецЕсли; ЭлементСправочника.Записать(); Если Не АдресВременногоХранилища = "" Тогда УдалитьИзВременногоХранилища(АдресВременногоХранилища); КонецЕсли; ЗначениеВРеквизитФормы(ЭлементСправочника, "Объект"); КонецПроцедуры &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) АдресКартинки = ПолучитьНавигационнуюСсылку(Объект.Ссылка, "ДанныеФайлаКартинки"); КонецПроцедуры |
|||
7
fdv_83
18.12.14
✎
10:31
|
ДанныеФайлаКартинки - реквизит объекта типа ХранилищеЗначений
ФайлКартинки - реквизит объекта типа Строка неограниченной длины АдресКартинки - реквизит типа Строка неограниченной длины Имеется реквизит формы Картинка, имеет вид Поле картинки, путь к данным АдресКартинки |
|||
8
vde69
18.12.14
✎
10:35
|
АдресКартинки = ПолучитьНавигационнуюСсылку(Объект.Ссылка, "ДанныеФайлаКартинки");
ты передаешь ссылку, в сылке картинки нет, картинка есть в не записаном обьекте.... |
|||
9
fdv_83
18.12.14
✎
10:40
|
(8) Я объект записываю в момент выбора картинки. Этот код работает в толстом и тонком клиентах, но не отображает картинку на форме в веб-клиенте. Вот не могу понять. в чём причина этого
|
|||
10
vde69
18.12.14
✎
10:42
|
контекст на сервере обновил? а то может он и не знает о том, что записано....
вообще перечитай обьект... |
|||
11
vde69
18.12.14
✎
10:51
|
в УФ контекст существует одновременно на сервере и клиенте, при изменении контекста на сервере клиент может не знать об этом.
Для веб клиента вообще передача с сервера на клиент может происходить только "по запросу", по этому нужно или на клиенте что-то постоянно проверять или генерить системное событие... Самое простое - перечитать обьект, при этом в явном виде форма получит последнюю версию контекста и обновит свои элементы. |
|||
12
fdv_83
18.12.14
✎
11:05
|
(11) А каким методом нужно перечитать объект?
|
|||
13
fdv_83
18.12.14
✎
11:26
|
(11) Используя метод ЭтаФорма.ОбновитьОтображениеДанных(), картинка появляется после закрытия, открытия формы
|
|||
14
vde69
18.12.14
✎
11:29
|
Расширение управляемой формы для объектов (Managed form extension for objects)
Прочитать (Read) Синтаксис: Прочитать() Описание: Обновляет объект управляемой формы. Доступность: Тонкий клиент, веб-клиент, сервер, толстый клиент, мобильное приложение(клиент), мобильное приложение(сервер). |
|||
15
fdv_83
18.12.14
✎
12:03
|
(14) Всё так же картинка сразу не отображается
|
|||
16
fdv_83
18.12.14
✎
13:16
|
Есть возможность отображение картинки на форме в веб-клиенте?
|
|||
17
SergeyKB
18.12.14
✎
13:36
|
(11)
>в УФ контекст существует одновременно на сервере и клиенте, при изменении контекста на сервере клиент может не знать об этом. А какой смысл существования контекста на сервере ? Если с клиента при контекстном вызове он туда передаётся Понимаю, что он может создаваться при создании формы и чтении объекта, но разве он не удаляется (освобождая память) при передачи управления на клиента (При открытии формы) |
|||
18
vde69
18.12.14
✎
13:41
|
(17) я вообще не понимаю зачем нужен клиентский исполняемый код кроме как при работе с внешними интерфейсами (например ККМ)
|
|||
19
SergeyKB
18.12.14
✎
13:43
|
(18)
ну а как же работа с файлами (чтение. запись) COM подключения и прочая шелуха ? |
|||
20
SergeyKB
18.12.14
✎
13:44
|
(19) тащить всё на сервак не айс мне кажется
|
|||
21
fdv_83
18.12.14
✎
14:05
|
А по существу вопроса что можете сказать?
|
|||
22
fdv_83
18.12.14
✎
22:31
|
Up
|
|||
23
Garykom
гуру
18.12.14
✎
22:48
|
(21) грузи/тащи картинку на сервер при выборе
|
|||
24
fdv_83
19.12.14
✎
07:59
|
(23) Так код загрузки и так на сервере выполняется
|
|||
25
DrZombi
гуру
19.12.14
✎
08:19
|
(6) Где ты заполняешь "ВыбранноеИмя" ?
|
|||
26
DrZombi
гуру
19.12.14
✎
08:19
|
Для Веб клиента?
|
|||
27
DrZombi
гуру
19.12.14
✎
08:19
|
Ты пользовался отладчиком?
|
|||
28
DrZombi
гуру
19.12.14
✎
08:22
|
(6) >>> АдресКартинки = ПолучитьНавигационнуюСсылку(Объект.Ссылка, "ДанныеФайлаКартинки");
А это зачем? Что такое "АдресКартинки"? Надеюсь, что это реквизит формы типа Строка, и выведен на форму в качестве Картинки? |
|||
29
DrZombi
гуру
19.12.14
✎
08:23
|
+ Дай код посмотреть с формой :)
На Яндекс или Майл Диске можешь выложить Обработку, ли CF |
|||
30
fdv_83
19.12.14
✎
08:50
|
(25) (26) Выбор файла происходит на клиенте, а АдресКартинки - реквизит типа Строка неограниченной длины
Имеется реквизит формы Картинка, имеет вид Поле картинки, путь к данным АдресКартинки |
|||
31
fdv_83
19.12.14
✎
08:55
|
(28) Код этот рабочий, только в вебе не отображается сразу картинка
|
|||
32
banco
19.12.14
✎
09:10
|
(31) у меня все отображается, значит у тебя что то не так, покажи код, чтоб могли подсказать
|
|||
33
fdv_83
19.12.14
✎
09:18
|
&НаКлиенте
Процедура ВыбратьКартинку(Команда) Перем ВыбранноеИмя; Если ЗначениеЗаполнено(Объект.ФайлКартинки) Тогда Если Вопрос("Удалить картинку?",РежимДиалогаВопрос.ДаНет) = КодВозвратаДиалога.Да Тогда АдресКартинки = ""; ПоместитьФайлКартинки(АдресКартинки); АдресКартинки = ПолучитьНавигационнуюСсылку(Объект.Ссылка, "ДанныеФайлаКартинки"); Прочитать(); Возврат; КонецЕсли; КонецЕсли; #Если ВебКлиент Тогда АдресКартинки = ""; Если ПоместитьФайл(АдресКартинки, "", ВыбранноеИмя, Истина) Тогда Объект.ФайлКартинки = ВыбранноеИмя; ПоместитьФайлКартинки(АдресКартинки); КонецЕсли; АдресКартинки = ПолучитьНавигационнуюСсылку(Объект.Ссылка, "ДанныеФайлаКартинки"); #Иначе Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); Диалог.Заголовок = "Выберите файл картинки..."; Диалог.ПредварительныйПросмотр = Истина; Диалог.МножественныйВыбор = Ложь; Диалог.Фильтр = "Все картинки (*.bmp;*.dib;*.rle;*.jpg;*.jpeg;*.tif;*.gif;*.png;*.ico;*.wmf;*.emf)|*.bmp;*.dib;*.rle;*.jpg;*.jpeg;*.tif;*.gif;*.png;*.ico;*.wmf;*.emf|" + "Формат bmp (*.bmp;*.dib;*.rle)|*.bmp;*.dib;*.rle|" + "Формат jpeg (*.jpg;*.jpeg)|*.jpg;*.jpeg|" + "Формат tiff (*.tif)|*.tif|" + "Формат gif (*.gif)|*.gif|" + "Формат png (*.png)|*.png|" + "Формат icon (*.ico)|*.ico|" + "Формат метафайл (*.wmf;*.emf)|*.wmf;*.emf|"; Если Диалог.Выбрать() Тогда АдресКартинки = ""; Если ПоместитьФайл(АдресКартинки, Диалог.ПолноеИмяФайла, "", Ложь) Тогда Объект.ФайлКартинки = Диалог.ПолноеИмяФайла; ПоместитьФайлКартинки(АдресКартинки); КонецЕсли; АдресКартинки = ПолучитьНавигационнуюСсылку(Объект.Ссылка, "ДанныеФайлаКартинки"); КонецЕсли; #КонецЕсли Прочитать(); КонецПроцедуры &НаСервере Процедура ПоместитьФайлКартинки(АдресВременногоХранилища) ЭлементСправочника = РеквизитФормыВЗначение("Объект"); Если АдресВременногоХранилища = "" Тогда ЭлементСправочника.ДанныеФайлаКартинки = Новый ХранилищеЗначения(""); ЭлементСправочника.ФайлКартинки = ""; Иначе ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресВременногоХранилища); ЭлементСправочника.ДанныеФайлаКартинки = Новый ХранилищеЗначения(ДвоичныеДанные,Новый СжатиеДанных(9)); КонецЕсли; ЭлементСправочника.Записать(); Если Не АдресВременногоХранилища = "" Тогда УдалитьИзВременногоХранилища(АдресВременногоХранилища); КонецЕсли; ЗначениеВРеквизитФормы(ЭлементСправочника, "Объект"); КонецПроцедуры |
|||
34
fdv_83
19.12.14
✎
09:23
|
(32) Можешь показать свой код?
|
|||
35
DrZombi
гуру
19.12.14
✎
10:07
|
(33) Покажи код в Обработке. Нам как тоне видно, как ты на форме все разместил :)
|
|||
36
fdv_83
19.12.14
✎
13:58
|
(35) Я же выложил код и описал, что да как сделал
|
|||
37
banco
19.12.14
✎
14:08
|
(34) я использую подсистему ПрисоединенныеФайлы из БСП и не изобретаю велосипед. а у тебя очень плохой код, там не то что исправить, а все заново написать. хотя бы посмотри как в демо базе, которая с платформой идет, сделано
|
|||
38
fdv_83
19.12.14
✎
15:42
|
(37) Код рабочий, просто требует маленькой доработки
|
|||
39
fdv_83
19.12.14
✎
17:12
|
Up
|
|||
40
fdv_83
20.12.14
✎
08:19
|
Up
|
|||
41
Ненавижу 1С
гуру
20.12.14
✎
08:32
|
какой браузер? попробуй на различных
|
|||
42
banco
20.12.14
✎
10:58
|
(40) ну ты упертый, не хочешь писать нормальный код.
добавь строчку Элементы.Картинка.Обновить(); |
|||
43
fdv_83
20.12.14
✎
17:35
|
(42) Спасибо тебе, помог. А то на код мой грешил. Я же говорил маленькая доработка нужна.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |