Картинка на форму по двоичны дааным

1. Intercititude 22.01.21 09:29 Сейчас в теме
Всем доброе утро.
УФ.
Пытаюсь по двоичным данным вывести на форму картинку раннее помещенную в хранилище.
Видимо переработал с в 8.1/2 и забыл как это делается.
Подразумевается, что при выборе строки картинка выводится на форму и показывается пользователю.
Делаю так:

&НаКлиенте

Процедура ФотоНоменклатурыПриАктивизацииСтроки(Элемент)
            
                ФотоИзХранилища = Новый Картинка(ПолучитьИзВременногоХранилища(Элемент.ТекущиеДанные.Хранилище));

                Объект.Фото= ФотоИзХранилища;

КонецПроцедуры

Показать


Если делать Элементы.Фото = ФотоИзХранилище - то ошибка недоступно для записи, так же если добавлять как Декорация.
Где оступился?
Вознаграждение за ответ
Показать полностью
Найденные решения
13. RocKeR_13 1321 22.01.21 11:02 Сейчас в теме +0.15 $m
(12) Тогда просто:
Фотография = Элемент.ТекущиеДанные.Хранилище;

где Фотография - это строковый реквизит формы для отображения картинки
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. RocKeR_13 1321 22.01.21 10:07 Сейчас в теме
(1) Реквизит формы ФотоИзХранилища - тип Строка, у связанного элемента вид - Поле Картинки. Для отображения фото реквизиту ФотоИзХранилища необходимо присвоить, например, адрес картинки во временном хранилище

Из типовых:

АдресКартинки = НавигационнаяСсылкаКартинки(Объект.ФайлКартинки, ЭтотОбъект.УникальныйИдентификатор);

&НаСервереБезКонтекста
Функция НавигационнаяСсылкаКартинки(ФайлКартинки, ИдентификаторФормы)
	
	УстановитьПривилегированныйРежим(Истина);
	
	СсылкаНаДвоичныеДанныеФайла = РаботаСФайлами.ДанныеФайла(ФайлКартинки, ИдентификаторФормы).СсылкаНаДвоичныеДанныеФайла;
	
	УстановитьПривилегированныйРежим(Ложь);
	
	Возврат СсылкаНаДвоичныеДанныеФайла;
	
КонецФункции

Показать


Здесь
ФайлКартинки - СправочникСсылка.НоменклатураПрисоединенныеФайлы
СсылкаНаДвоичныеДанныеФайла - адрес двоичных данных во временном хранилище
8. Intercititude 22.01.21 10:46 Сейчас в теме
(3) Как этот типовой переделать под мою "При активизации строки " ?

ЭтотОбъект отсутствует в моей УТ 10 8.2. Просто сама обработка на УФ. Я уж молчу про РаботыСфайлами..
9. RocKeR_13 1321 22.01.21 10:49 Сейчас в теме
(8) Сначала опишите, что у вас вообще на форме и какого типа
10. Intercititude 22.01.21 10:50 Сейчас в теме
(9) Как Вы и описали. Добавил реквизит формы Фотография ( строка ). Вывел её на форму, сделал Вид "Поле картинки".
Под ней таблица, в строках которой уже есть заполненный реквизит "Хранилище" вида ("e1cib/tempstorage/....")
При смене строки должна выводиться картинка по этому пути хранилища.
Это поле хранилище заполняется следующим образом:
ПолныйПуть - это где лежит сама картинка.
  Фотография = Новый ДвоичныеДанные(ПолныйПуть);

          СсылкаНаФото = ПоместитьВоВременноеХранилище(Фотография,Новый УникальныйИдентификатор);

    НоваяСтрока.Хранилище = СсылкаНаФото;
11. RocKeR_13 1321 22.01.21 10:51 Сейчас в теме
(10) ДА больше интересует, откуда вы фотографию планируете получать. Что там у вас за таблица?
12. Intercititude 22.01.21 11:00 Сейчас в теме
13. RocKeR_13 1321 22.01.21 11:02 Сейчас в теме +0.15 $m
(12) Тогда просто:
Фотография = Элемент.ТекущиеДанные.Хранилище;

где Фотография - это строковый реквизит формы для отображения картинки
14. Intercititude 22.01.21 12:16 Сейчас в теме
(13) Попытаю удачу. За одно может подскажете. Добавлю $.
В моей этой таблице есть колонка "НомерПорядка".
При заполнении становится 1, 2 в зависимости от того какое значение есть в регистре. Таблица заполняется из регистра.

Мне же надо, когда перемещают стрелками строки. При нажатии наверх текущая строка поднимается на верх и становится -1. Для строки на которой встаёт номер порядка смещается вниз и становится +1.
Одинаковых номеров не должно быть.
Как это реализовать ?:(
15. RocKeR_13 1321 22.01.21 12:29 Сейчас в теме
(14)
Процедура СдвинутьСтроку(Смещение)
//Сначала получаем выделенную строку:
ИдСтроки= Элементы.ИмяТаблицы.ТекущаяСтрока;
ТекСтрока = ИмяРеквизитаТаблицы.НайтиПоИдентификатору(ИдСтроки);

Если ТекСтрока.НомерПорядка = 1 И Смещение = -1 Тогда
// Первую строку не двигаем вверх
Возврат;
КонецЕсли;
Если ТекСтрока.НомерПорядка = ИмяРеквизитаТаблицы.Количество() И Смещение = 1 Тогда
// Последнюю строку не двигаем вниз
Возврат;
КонецЕсли;


//Далее двигаем вверх/вниз
// Смещение - минус 1 - двигаем вверх, 1 - двигаем вниз
ИмяРеквизитаТаблицы.Сдвинуть(ТекСтрока, Смещение);
// ну и дальше изменяем порядковый номер
ТекСтрока.НомерПорядка= ТекСтрока.НомерПорядка+Смещение;
КонецПроцедуры
Показать
Intercititude; +1 Ответить
16. Intercititude 22.01.21 12:50 Сейчас в теме
(15)Ого ,спасибо!
А это в каком событии небходимо обрабатывать и номер смещения изначальный какой задавать, не совсем понял механизм,хм.
17. RocKeR_13 1321 22.01.21 13:04 Сейчас в теме +0.15 $m
(16) Выше - для случая своих кнопок.
Если двигать строки не программно, а типовыми кнопками: у таблицы использовать событие ПриИзменении:

ИдСтроки= Элементы.ИмяТаблицы.ТекущаяСтрока;
ТекСтрока = ИмяРеквизитаТаблицы.НайтиПоИдентификатору(ИдСтроки);
ИндексСтроки = ИмяРеквизитаТаблицы.Индекс(ТекСтрока);
Смещение = ИндексСтроки + 1 - ТекСтрока.НомерПорядка;
Если Смещение = 0 Тогда
Возврат;
КонецЕсли;
// Если смещение положительное, то номер строки стал больше и строку сместили вниз
ТекСтрока.НомерПорядка = ТекСтрока.НомерПорядка + Смещение;
СтрокаИзменить = ИмяРеквизитаТаблицы[ИндексСтроки - Смещение];
СтрокаИзменить.НомерПорядка = СтрокаИзменить.НомерПорядка - Смещение; 
Показать

Это все в расчете на то, что НомерПорядка = номеру строки в таблице
18. Intercititude 22.01.21 16:02 Сейчас в теме
(17)
ИмяРеквизитаТаблицы


Это что подразумевается?
19. RocKeR_13 1321 22.01.21 16:03 Сейчас в теме
(18) Имя реквизита формы, который соответствует таблице с перемещаемыми строками
20. Intercititude 22.01.21 16:07 Сейчас в теме
(19) Просто не пойму как обратиться на прямую, ошибку ловлю.
Через Элементы надо?

К пример у меня Таблица на форме "Фотографии", Реквизит "Хранилище".

ТекСтрока = Фотографии[Хранилище].НайтиПоИдентификатору(ИдСтроки);
21. RocKeR_13 1321 22.01.21 16:10 Сейчас в теме
(20) ТекСтрока = Фотографии.НайтиПоИдентификатору(ИдСтроки);
22. Intercititude 23.01.21 18:56 Сейчас в теме
(21) А если я в эту же таблицу хочу по кнопке добавить(обр. "ПередНачаломДобавления" выбор файла и вставку его именно в строку, то после попадаю в передизменением(выше код который) и ловлю ошибку и сбиваются порядки.
Надо присваивать добавляемой строке +1 ?

И если будет пустая таблица, то я добавляю файл НомерПорядка станет 1. В следующий раз когда будет перевыбор номенклатуры, то данные скачаются из регистра и к примеру проставится НомерПорядка = 1 вновь и НомерПорядка =2. Будет 1, 1 , 2.
Как избежать такого ? хмм
23. Intercititude 24.01.21 18:22 Сейчас в теме
(15) Решил переделать всё на свои кнопки. Появился вопрос.
Добавил две кнопки вниз вверх. Так вот, что ставить в значение Смещения в обоих случаях?
24. Intercititude 24.01.21 18:46 Сейчас в теме
(23) Оказалось не так тривиально просто добавлять через НоваяСтрока = Таблица.Добавить()
А дальше двигать вверх вниз и удаление добавлять видимо ещё надо (
25. Intercititude 25.01.21 12:17 Сейчас в теме
(15) ИмяРеквизитаТаблицы.Сдвинуть(ТекСтрока, Смещение);
В этом месте ошибка. Так как ТекСтрока = ЭлементФормыКоллекции. Хм
Заменил на ИдСтроки

Но когда смещается строка, то номер порякда у смещенной стркои остаётся то тот же и происходит задвоение номеров..
Это решит же ворос?:
СтрокаИзменить = ИмяРеквизитаТаблицы[ИндексСтроки - Смещение];
СтрокаИзменить.НомерПорядка = СтрокаИзменить.НомерПорядка - Смещение; 
7. ilnur75 22.01.21 10:39 Сейчас в теме
(1)
Видимо переработал с в 8.1/2


на платформе с 8.16 изменился метод работы с файлами с картинками.
2. AlexeyIsip 26 22.01.21 09:49 Сейчас в теме
нужно реквизит в форму вставить с типом Строка (например СтрКартинка
Вывести этот реквизит на форму.
Поставить "Вид" элемента формы "Поле картинки"
При заполнении реквизита двоичными данными происходит отображение картинки.
Обычно заполнение реквизита идет с сервера

&НаКлиенте

Процедура ФотоНоменклатурыПриАктивизацииСтроки(Элемент)

СтрКартинка= ОбновитьКартинку(Элемент.ТекущиеДанные.СсылкаНаЭлемент);

КонецПроцедуры

&НаСервереБезКонтекста
Функция ОбновитьКартинку(ТекЭлемент)
Возврат ТекЭлемент.Хранилище.Получить(); //Хранилище это реквизит объекта с типом хранилище значений, в который поместили двоичные данные
КонецФункции
5. Intercititude 22.01.21 10:31 Сейчас в теме
(2) Как я на НаСервереБезКонтекста обращусь к СтрКартинка(реквизит формы ) ??
upd: увидел, что изменили свое сообщение Вы.
4. AlexeyIsip 26 22.01.21 10:22 Сейчас в теме
вот так попробуй
&НаСервереБезКонтекста
Функция ОбновитьКартинку(ТекЭлемент)
ДвоичныеДанныеКартинка=ТекЭлемент.Хранилище.Получить();
СсылкаВХ=ПоместитьВоВременноеХранилище(ДвоичныеДанныеКартинка,Новый УникальныйИдентификатор);
Возврат СсылкаВХ;
КонецФункции
6. Intercititude 22.01.21 10:37 Сейчас в теме
(4) Ловлю ошибку: "Ошибка передачи данных между клиентом и сервером.Значение недопустимого типа" Ошибка преобразования данных XDTO: Запись значения свойства 'param': форма: Элемент имя: { по причине: Ошибка отображения типов: Отсутствует отображение для типа "ТаблицаФормы".
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот