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

```1c
    &НаКлиенте

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

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

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

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

Если делать Элементы.Фото = ФотоИзХранилище - то ошибка недоступно для записи, так же если добавлять как Декорация.
Где оступился?
---
Тогда просто:
Фотография = Элемент.ТекущиеДанные.Хранилище;

где Фотография - это строковый реквизит формы для отображения картинки
---
Реквизит формы ФотоИзХранилища - тип Строка, у связанного элемента вид - Поле Картинки. Для отображения фото реквизиту ФотоИзХранилища необходимо присвоить, например, адрес картинки во временном хранилище

Из типовых:

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

    &НаСервереБезКонтекста
    Функция НавигационнаяСсылкаКартинки(ФайлКартинки, ИдентификаторФормы)

    УстановитьПривилегированныйРежим(Истина);

    СсылкаНаДвоичныеДанныеФайла = РаботаСФайлами.ДанныеФайла(ФайлКартинки, ИдентификаторФормы).СсылкаНаДвоичныеДанныеФайла;

    УстановитьПривилегированныйРежим(Ложь);

    Возврат СсылкаНаДвоичныеДанныеФайла;

    КонецФункции
```

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

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

```1c
    Фотография = Новый ДвоичныеДанные(ПолныйПуть);

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

    НоваяСтрока.Хранилище = СсылкаНаФото;
```
---
ДА больше интересует, откуда вы фотографию планируете получать. Что там у вас за таблица?
---
Дописал.
---
Тогда просто:
Фотография = Элемент.ТекущиеДанные.Хранилище;

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

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

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

    //Далее двигаем вверх/вниз
    // Смещение - минус 1 - двигаем вверх, 1 - двигаем вниз
    ИмяРеквизитаТаблицы.Сдвинуть(ТекСтрока, Смещение);
    // ну и дальше изменяем порядковый номер
    ТекСтрока.НомерПорядка= ТекСтрока.НомерПорядка+Смещение;
    КонецПроцедуры
```
---
Ого ,спасибо!
А это в каком событии небходимо обрабатывать и номер смещения изначальный какой задавать, не совсем понял механизм,хм.
---
Выше - для случая своих кнопок.
Если двигать строки не программно, а типовыми кнопками: у таблицы использовать событие ПриИзменении:

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

Это все в расчете на то, что НомерПорядка = номеру строки в таблице
---
ИмяРеквизитаТаблицы

Это что подразумевается?
---
Имя реквизита формы, который соответствует таблице с перемещаемыми строками
---
Просто не пойму как обратиться на прямую, ошибку ловлю.
Через Элементы надо?

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

ТекСтрока = Фотографии[Хранилище].НайтиПоИдентификатору(ИдСтроки);
---
ТекСтрока = Фотографии.НайтиПоИдентификатору(ИдСтроки);
---
А если я в эту же таблицу хочу по кнопке добавить(обр. "ПередНачаломДобавления" выбор файла и вставку его именно в строку, то после попадаю в передизменением(выше код который) и ловлю ошибку и сбиваются порядки.
Надо присваивать добавляемой строке +1 ?

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

Но когда смещается строка, то номер порякда у смещенной стркои остаётся то тот же и происходит задвоение номеров..
Это решит же ворос?:

```1c
    СтрокаИзменить = ИмяРеквизитаТаблицы[ИндексСтроки - Смещение];
    СтрокаИзменить.НомерПорядка = СтрокаИзменить.НомерПорядка - Смещение;
```
---
Видимо переработал с в 8.1/2

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

&НаКлиенте

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

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

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

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