|
Хранение картинки в реквизите справочника, типа "ХранилищеЗначения" | ☑ | ||
---|---|---|---|---|
0
Zhuravlik
11.06.14
✎
10:55
|
Добрый день, помогите разобраться?
Необходимо выбирать картинку, и отображать ее до записи. Хранить двумя способами (на выбор пользователя) - в ИБ как двоичные данные, либо строкой (путь к файлу). - Создал реквизит справочника, типа "ХранилищеЗначения" - На форму поместил декорацию, поставил галку "Гипперсылка", чтобы отрабатывать событие по нажатию. Вот код: //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ //====================================================================================================================== &НаКлиенте Процедура ПриОткрытии(Отказ) ОбновитьФотоНаСервере(); КонецПроцедуры //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // ОБРАБОТЧИКИ СОБЫТИЙ ЭЛЕМЕНТОВ ШАПКИ ФОРМЫ //====================================================================================================================== &НаКлиенте Процедура ФотоНажатие(Элемент) // Выбираем фото: Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); ИмяФайла = ""; Если ПолучитьИмяФайлНаСервере(ИмяФайла) Тогда Диалог.ПолноеИмяФайла = ИмяФайла; КонецЕсли; Ответ = 0; Если Диалог.Выбрать() Тогда сп = Новый СписокЗначений; сп.Добавить(1, "На жестком диске"); сп.Добавить(2, "В ИБ"); сп.Добавить(0, "Отмена"); Ответ = Вопрос("Выберите вариант хранения файла", сп,,2); КонецЕсли; Если Ответ = 0 Тогда Возврат; КонецЕсли; ПоместитьДанныеВХранилищеНаСервере(Диалог.ПолноеИмяФайла, Ответ); ОбновитьФотоНаСервере(); КонецПроцедуры //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ //====================================================================================================================== &НаСервере Функция ПолучитьИмяФайлНаСервере(ИмяФайла) Данные = РеквизитФормыВЗначение("Объект").Фото.Получить(); Если ТипЗнч(Данные) = Тип("Строка") Тогда ИмяФайла = Данные; Возврат Истина; КонецЕсли; Возврат Ложь; КонецФункции //====================================================================================================================== &НаСервере Процедура ПоместитьДанныеВХранилищеНаСервере(ПутьКФайлу, Тип) ОбъектФормы = РеквизитФормыВЗначение("Объект"); Если Тип = 1 Тогда // Храню фото на жд ОбъектФормы.Фото = Новый ХранилищеЗначения(ПутьКФайлу); ИначеЕсли Тип = 2 Тогда // Храню фото в ИБ ДвоичныеДанные = Новый ДвоичныеДанные(ПутьКФайлу); ОбъектФормы.Фото = Новый ХранилищеЗначения(ДвоичныеДанные); КонецЕсли; ЗначениеВРеквизитФормы(ОбъектФормы, "Объект"); КонецПроцедуры //====================================================================================================================== &НаСервере Процедура ОбновитьФотоНаСервере() Элементы.Фото.Картинка = Новый Картинка(РеквизитФормыВЗначение("Объект").Фото.Получить()); КонецПроцедуры Почему у меня в процедуре "ФотоНажатие()", после вызова "ПоместитьДанныеВХранилищеНаСервере(Диалог.ПолноеИмяФайла, Ответ);" хранилище все-равно имеет тип "Неопределено"?.. Я просмотрел сходные темы, все советует использовать отдельный справочник для таких нужд, это понятно, но почему нельзя сделать так? |
|||
1
holls
11.06.14
✎
13:41
|
в процедуре ПоместитьДанныеВХранилищеНаСервере() надо записать объект
ОбъектФормы.Записать(); |
|||
2
Zhuravlik
11.06.14
✎
13:47
|
(1) Не хочу) Картинка должна отображаться до записи. Но у меня вопрос не в том, как сделать, а почему не работает?
|
|||
3
holls
11.06.14
✎
13:51
|
реквизиты объектов типа ХЗ не доступны в формах
|
|||
4
GROOVY
11.06.14
✎
13:53
|
||||
5
holls
11.06.14
✎
13:55
|
если нужно только отображать картинку, используйте временное хранилище
|
|||
6
Zhuravlik
11.06.14
✎
13:56
|
(4) Спасибо, разберу вечером
|
|||
7
Надо работать
16.06.14
✎
18:39
|
(4) не открывается, а что там?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |