Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
16 апр 2024, 15:44

Картинки в тонком клиенте

Автор monkeyrf, 06 сен 2010, 10:55

0 Пользователей и 1 гость просматривают эту тему.

monkeyrf

Подскажите, как реализовать в тонком клиенте следующий механизм:
- Запустить диалог выбора файла
- Загрузить из диалога картинку в базу и сохранить в поле с типом ХранилищеЗначений
- Извлечь уже сохраненную картинку из поля ХранилищеЗначений и показать на форме в Декорации

Перелопатил кучу книг, реализовать получилось только в толстом клиенте. Статей на эту тему в интернете не нашел. Думаю вопрос мучает не только меня.

aleady

Методика работы будет следующая:
1. Для вызова диалога выбора файла на форме размещается команда и в ее обработчике 
используется функция глобального контекста
ПоместитьФайл(АдресКартинки,,,,УникальныйИдентификатор);

Описание:

Помещает файл из локальной файловой системы во временное хранилище.

Доступность:

Тонкий клиент, веб-клиент, толстый клиент, внешнее соединение.
Вызов метода выполняет обращение к серверу.

Параметр АдресКартинки - Адрес во временном хранилище, по которому должны быть помещены данные

2. Делаем вызов серверной процедуры в которой пишем:
   Если ЭтоАдресВременногоХранилища(Адрес) Тогда
      Картинка = ПолучитьИзВременногоХранилища(Адрес);
      ТекущийОбъект.Фото = Новый ХранилищеЗначения(Картинка, Новый СжатиеДанных(9));
   КонецЕсли;

aleady

ЭтоАдресВременногоХранилища(<Адрес>)  - Проверяет, является ли переданный адрес адресом файла во временном хранилище
ПолучитьИзВременногоХранилища(Адрес) - Получает значение из временного хранилища по указаному адресу Адрес.
ТекущийОбъект.Фото = Новый ХранилищеЗначения(Картинка, Новый СжатиеДанных(9)); - помещает нашу картинку в реквизит объекта "Фото" с типом ХранилищеЗначения

да, забыл написать  у формы создается реквизит КартинкаФормы типа "Строка", и после выполнения процедуры  ПоместитьФайл(АдресКартинки,,,,УникальныйИдентификатор);  присваиваем  КартинкаФормы = АдресКартинки;

Реквизит формы КартинкаФормы выносим на форму и задаем ему свойство вид равным "Поле картинки".

Таким образом наша картинка отобразится на форме.
Чтобы при повторном открытии формы картинка снова отображалась необходимо инициализировать реквизит формы КартинкаФормы
Для этого в процедуре формы ПриСозданииНаСервере()
добавляем код: КартинкаФормы = ПолучитьНавигационнуюСсылку(Объект.Ссылка, "Фото"); - тем самым связываем наш строковый параметр с реквизитом "Фото" текущего объекта.

aleady

P.S.  в функции ПоместитьФайл(АдресКартинки,,,,УникальныйИдентификатор);
пятый параметр Уникальный Идентификатор управляемой формы - если параметр не указан, помещенное значение будет удалено, после очередного запроса сервера из общего модуля, при контекстном и неконтекстном серверном вызове из формы, при серверном вызове из модуля команды или при получении формы.
P.S.2 Помещать данный из временного хранилища в ХранилищеЗначения стоит в серверной процедуре формы ПередЗаписьюНаСервере()
     Если ЭтоАдресВременногоХранилища(<Адрес>) Тогда
      Картинка = ПолучитьИзВременногоХранилища(<Адрес>);
      ТекущийОбъект.Фото = Новый ХранилищеЗначения(Картинка, Новый СжатиеДанных(9));
   КонецЕсли;
    <Адрес> хранится в реквизите формы КартинкаФормы   

monkeyrf

спасибо! очень помогло!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск