|
|
|
v8: 8.2. Запись данных в реквизит табличной части с типом ХранилищеЗначения | ☑ | ||
|---|---|---|---|---|
|
0
Композитор
30.09.10
✎
21:43
|
&НаКлиенте
Процедура ПоКнопкеДобавитьФото(Команда) Перем ВыбранноеИмя,АдресВременногоХранилища; Если ПоместитьФайл(АдресВременногоХранилища, "", ВыбранноеИмя, Истина, УникальныйИдентификатор) Тогда АдресКартинки = АдресВременногоХранилища; ТекСтрока = ТекущийЭлемент.ТекущаяСтрока; Если ТекСтрока <> Неопределено Тогда ТекущийЭлемент.ТекущиеДанные.АдресКартинки = АдресКартинки; КонецЕсли; Модифицированность = Истина; КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ПриАктивизацииСтроки(Элемент) АдресКартинки = Элемент.ТекущиеДанные.АдресКартинки; КонецПроцедуры &НаСервере Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) Для Каждого Строка Из ТекущийОбъект.ТЧ_Фото Цикл Если ЭтоАдресВременногоХранилища(Строка.АдресКартинки) Тогда Строка.Фото = Новый ХранилищеЗначения(ПолучитьИзВременногоХранилища(Строка.АдресКартинки)); Конецесли; КонецЦикла; КонецПроцедуры &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) i = 0; Для Каждого Строка Из Объект.ТЧ_Фото Цикл Строка.АдресКартинки = ПолучитьНавигационнуюСсылку(Объект.Ссылка, "ТЧ_Фото.Фото", i); i = i+1; КонецЦикла; КонецПроцедуры _____________________________________________________________________ Есть справочник, у справочника табличная часть ТЧ_Фото, в табличной части реквизиты АдресКартинки (строка) и Фото (ХранилищеЗначений). Нужно выбирать файл изображения, записывать его в строку табличной части, при перемещении курсора отображать соответствующее изображение в поле формы Картинка через реквизит формы АдресКартинки. Фал выбирается, изображения меняются, но после записи элемента справочника и повторного открытия формы изображение не появляется. Не могу сообразить: то ли некорректно записываю, то ли неправильно считываю данные из хранилища значения. |
|||
|
1
Композитор
01.10.10
✎
09:43
|
ап
|
|||
|
2
Композитор
01.10.10
✎
10:12
|
что, спецы в отпуске?
|
|||
|
3
Композитор
04.10.10
✎
17:42
|
Вышел из положения следующим образом:
НаКлиенте Процедура ПоКнопкеДобавитьФото(Команда) ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); ДиалогОткрытияФайла.ПолноеИмяФайла = ""; ДиалогОткрытияФайла.Заголовок = "Выберите файлы изображений"; Если ДиалогОткрытияФайла.Выбрать() Тогда ТекущийЭлемент.ТекущиеДанные.СтрокаПутьФайла = ДиалогОткрытияФайла.ПолноеИмяФайла; КонецЕсли; ПриАктивизацииСтроки(Элементы.ТаблицаФото); КонецПроцедуры &НаКлиенте Процедура ПриАктивизацииСтроки(Элемент) Перем ВыбранноеИмя,АдресВременногоХранилища; ИмяФайла = Элемент.ТекущиеДанные.СтрокаПутьФайла; ВыбФайл = Новый Файл(ИмяФайла); Если ВыбФайл.Существует() Тогда Если ПоместитьФайл(АдресВременногоХранилища, ИмяФайла, ВыбранноеИмя, Ложь, УникальныйИдентификатор) Тогда Элемент.ТекущиеДанные.АдресКартинки = АдресВременногоХранилища; КонецЕсли; КонецЕсли; КонецПроцедуры В реквизите ПутьКДанным поля Картинка дал ссылку на реквизит табличной части АдресКартинки. Все работает как надо. Но слегка медленно, что раздражает. Перемещение маркера по элементам табличного поля идет с минимальной, но все же задержкой. Впрочем, то же самое было и в примере из (0). Вопрос к знатокам - как в 8.2 показать изображение на форме непосредственно из файла, минуя временное хранилище? В 8.1 с этим проблем не было, а здесь есть. |
|||
|
4
Композитор
05.10.10
✎
15:49
|
(3) дали мне ссылку на руководство разработчика:
7.5.1.4. Картинки элементов Элементы формы позволяют использовать для своего оформления картинки. Задание картинки возможно двумя способами: ? из конфигуратора, ? программным способом. В случае если картинка задается программным способом, может быть установлена либо пустая картинка, либо картинка из библиотеки картинок конфигурации. Если картинка задается из конфигуратора, то возможен еще один вариант — задание картинки из файла на диске (внешняя картинка). Использование таких картинок рекомендуется только в тех случаях, когда разрабатываются внешние отчеты или обработки, которые могут использоваться в различных конфигурациях и картинка является значимым элементом оформления, в остальных случаях использование таких картинок является нежелательным. Для команд формы и глобальных команд выбрать внешнюю картинку невозможно. _____________________________________________________________________ Таким образом, я вижу проблему в 8.2, которой не было в 8.1 и 7.7, а именно: невозможность (по моему, пока небольшому опыту) комфортного (быстрого) пролистывания массива изображений, если размер изображения достаточно велик. Пока выхожу из ситуации таким образом: при записи пути к файлу в реквизит табличной части предварительно преобразовываю файл в другой формат. Процедура ПоКнопкеДобавитьФото(Команда) ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); ДиалогОткрытияФайла.ПолноеИмяФайла = ""; ДиалогОткрытияФайла.Заголовок = "Выберите файлы изображений"; Если ДиалогОткрытияФайла.Выбрать() Тогда НоваяКартинка = Новый Картинка(ДиалогОткрытияФайла.ПолноеИмяФайла); ПреобразованнаяКартинка = НоваяКартинка.Преобразовать(ФорматКартинки.PNG); ВыбФайл = Новый Файл(ДиалогОткрытияФайла.ПолноеИмяФайла); ИмяФайла = ВыбФайл.ИмяБезРасширения+".PNG"; ПолноеИмяФайла = ВыбФайл.Путь+ИмяФайла; ПреобразованнаяКартинка.Записать(ПолноеИмяФайла); ТекущийЭлемент.ТекущиеДанные.СтрокаПутьФайла = ПолноеИмяФайла; Сообщить(ПолноеИмяФайла); КонецЕсли; ПриАктивизацииСтроки(Элементы.ТаблицаФото); КонецПроцедуры Можно, как подсказывают, использовать запуск в режиме командной строки программу, которая преобразовывает файл изображения с меньшим размером файла на выходе. |
|||
|
5
Композитор
05.10.10
✎
15:56
|
Стоит оговориться, что речь идет об управляемых формах.
|
|||
|
6
milan
05.10.10
✎
16:22
|
(4) А в каких решениях на веб ты имеешь такую возможность - быстро пролистывать массивы изображений ????
Либо кешируется, причем асинхронно, либо показывается превью, потом по клику отображается на весь экран и при еще одном клике исходное изображение |
|||
|
7
Композитор
05.10.10
✎
16:28
|
(6) так я как раз и ухожу от вэб.
|
|||
|
8
Композитор
05.10.10
✎
16:28
|
+(5) при использовании обычных форм такой проблемы нет
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |