Всем доброе утро.
УФ.
Пытаюсь по двоичным данным вывести на форму картинку раннее помещенную в хранилище.
Видимо переработал с в 8.1/2 и забыл как это делается.
Подразумевается, что при выборе строки картинка выводится на форму и показывается пользователю.
Делаю так:
Если делать Элементы.Фото = ФотоИзХранилище - то ошибка недоступно для записи, так же если добавлять как Декорация.
Где оступился?
УФ.
Пытаюсь по двоичным данным вывести на форму картинку раннее помещенную в хранилище.
Видимо переработал с в 8.1/2 и забыл как это делается.
Подразумевается, что при выборе строки картинка выводится на форму и показывается пользователю.
Делаю так:
&НаКлиенте
Процедура ФотоНоменклатурыПриАктивизацииСтроки(Элемент)
ФотоИзХранилища = Новый Картинка(ПолучитьИзВременногоХранилища(Элемент.ТекущиеДанные.Хранилище));
Объект.Фото= ФотоИзХранилища;
КонецПроцедуры
ПоказатьЕсли делать Элементы.Фото = ФотоИзХранилище - то ошибка недоступно для записи, так же если добавлять как Декорация.
Где оступился?
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Реквизит формы ФотоИзХранилища - тип Строка, у связанного элемента вид - Поле Картинки. Для отображения фото реквизиту ФотоИзХранилища необходимо присвоить, например, адрес картинки во временном хранилище
Из типовых:
Здесь
ФайлКартинки - СправочникСсылка.НоменклатураПрисоединенныеФайлы
СсылкаНаДвоичныеДанныеФайла - адрес двоичных данных во временном хранилище
Из типовых:
АдресКартинки = НавигационнаяСсылкаКартинки(Объект.ФайлКартинки, ЭтотОбъект.УникальныйИдентификатор);
&НаСервереБезКонтекста
Функция НавигационнаяСсылкаКартинки(ФайлКартинки, ИдентификаторФормы)
УстановитьПривилегированныйРежим(Истина);
СсылкаНаДвоичныеДанныеФайла = РаботаСФайлами.ДанныеФайла(ФайлКартинки, ИдентификаторФормы).СсылкаНаДвоичныеДанныеФайла;
УстановитьПривилегированныйРежим(Ложь);
Возврат СсылкаНаДвоичныеДанныеФайла;
КонецФункции
ПоказатьЗдесь
ФайлКартинки - СправочникСсылка.НоменклатураПрисоединенныеФайлы
СсылкаНаДвоичныеДанныеФайла - адрес двоичных данных во временном хранилище
(9) Как Вы и описали. Добавил реквизит формы Фотография ( строка ). Вывел её на форму, сделал Вид "Поле картинки".
Под ней таблица, в строках которой уже есть заполненный реквизит "Хранилище" вида ("e1cib/tempstorage/....")
При смене строки должна выводиться картинка по этому пути хранилища.
Это поле хранилище заполняется следующим образом:
ПолныйПуть - это где лежит сама картинка.
Под ней таблица, в строках которой уже есть заполненный реквизит "Хранилище" вида ("e1cib/tempstorage/....")
При смене строки должна выводиться картинка по этому пути хранилища.
Это поле хранилище заполняется следующим образом:
ПолныйПуть - это где лежит сама картинка.
Фотография = Новый ДвоичныеДанные(ПолныйПуть);
СсылкаНаФото = ПоместитьВоВременноеХранилище(Фотография,Новый УникальныйИдентификатор);
НоваяСтрока.Хранилище = СсылкаНаФото;
(13) Попытаю удачу. За одно может подскажете. Добавлю $.
В моей этой таблице есть колонка "НомерПорядка".
При заполнении становится 1, 2 в зависимости от того какое значение есть в регистре. Таблица заполняется из регистра.
Мне же надо, когда перемещают стрелками строки. При нажатии наверх текущая строка поднимается на верх и становится -1. Для строки на которой встаёт номер порядка смещается вниз и становится +1.
Одинаковых номеров не должно быть.
Как это реализовать ?:(
В моей этой таблице есть колонка "НомерПорядка".
При заполнении становится 1, 2 в зависимости от того какое значение есть в регистре. Таблица заполняется из регистра.
Мне же надо, когда перемещают стрелками строки. При нажатии наверх текущая строка поднимается на верх и становится -1. Для строки на которой встаёт номер порядка смещается вниз и становится +1.
Одинаковых номеров не должно быть.
Как это реализовать ?:(
(14)
Процедура СдвинутьСтроку(Смещение)
//Сначала получаем выделенную строку:
ИдСтроки= Элементы.ИмяТаблицы.ТекущаяСтрока;
ТекСтрока = ИмяРеквизитаТаблицы.НайтиПоИдентификатору(ИдСтроки);
Если ТекСтрока.НомерПорядка = 1 И Смещение = -1 Тогда
// Первую строку не двигаем вверх
Возврат;
КонецЕсли;
Если ТекСтрока.НомерПорядка = ИмяРеквизитаТаблицы.Количество() И Смещение = 1 Тогда
// Последнюю строку не двигаем вниз
Возврат;
КонецЕсли;
//Далее двигаем вверх/вниз
// Смещение - минус 1 - двигаем вверх, 1 - двигаем вниз
ИмяРеквизитаТаблицы.Сдвинуть(ТекСтрока, Смещение);
// ну и дальше изменяем порядковый номер
ТекСтрока.НомерПорядка= ТекСтрока.НомерПорядка+Смещение;
КонецПроцедуры
Показать
(16) Выше - для случая своих кнопок.
Если двигать строки не программно, а типовыми кнопками: у таблицы использовать событие ПриИзменении:
Это все в расчете на то, что НомерПорядка = номеру строки в таблице
Если двигать строки не программно, а типовыми кнопками: у таблицы использовать событие ПриИзменении:
ИдСтроки= Элементы.ИмяТаблицы.ТекущаяСтрока;
ТекСтрока = ИмяРеквизитаТаблицы.НайтиПоИдентификатору(ИдСтроки);
ИндексСтроки = ИмяРеквизитаТаблицы.Индекс(ТекСтрока);
Смещение = ИндексСтроки + 1 - ТекСтрока.НомерПорядка;
Если Смещение = 0 Тогда
Возврат;
КонецЕсли;
// Если смещение положительное, то номер строки стал больше и строку сместили вниз
ТекСтрока.НомерПорядка = ТекСтрока.НомерПорядка + Смещение;
СтрокаИзменить = ИмяРеквизитаТаблицы[ИндексСтроки - Смещение];
СтрокаИзменить.НомерПорядка = СтрокаИзменить.НомерПорядка - Смещение;
ПоказатьЭто все в расчете на то, что НомерПорядка = номеру строки в таблице
(21) А если я в эту же таблицу хочу по кнопке добавить(обр. "ПередНачаломДобавления" выбор файла и вставку его именно в строку, то после попадаю в передизменением(выше код который) и ловлю ошибку и сбиваются порядки.
Надо присваивать добавляемой строке +1 ?
И если будет пустая таблица, то я добавляю файл НомерПорядка станет 1. В следующий раз когда будет перевыбор номенклатуры, то данные скачаются из регистра и к примеру проставится НомерПорядка = 1 вновь и НомерПорядка =2. Будет 1, 1 , 2.
Как избежать такого ? хмм
Надо присваивать добавляемой строке +1 ?
И если будет пустая таблица, то я добавляю файл НомерПорядка станет 1. В следующий раз когда будет перевыбор номенклатуры, то данные скачаются из регистра и к примеру проставится НомерПорядка = 1 вновь и НомерПорядка =2. Будет 1, 1 , 2.
Как избежать такого ? хмм
(15) ИмяРеквизитаТаблицы.Сдвинуть(ТекСтрока, Смещение);
В этом месте ошибка. Так как ТекСтрока = ЭлементФормыКоллекции. Хм
Заменил на ИдСтроки
Но когда смещается строка, то номер порякда у смещенной стркои остаётся то тот же и происходит задвоение номеров..
Это решит же ворос?:
В этом месте ошибка. Так как ТекСтрока = ЭлементФормыКоллекции. Хм
Заменил на ИдСтроки
Но когда смещается строка, то номер порякда у смещенной стркои остаётся то тот же и происходит задвоение номеров..
Это решит же ворос?:
СтрокаИзменить = ИмяРеквизитаТаблицы[ИндексСтроки - Смещение];
СтрокаИзменить.НомерПорядка = СтрокаИзменить.НомерПорядка - Смещение;
нужно реквизит в форму вставить с типом Строка (например СтрКартинка
Вывести этот реквизит на форму.
Поставить "Вид" элемента формы "Поле картинки"
При заполнении реквизита двоичными данными происходит отображение картинки.
Обычно заполнение реквизита идет с сервера
&НаКлиенте
Процедура ФотоНоменклатурыПриАктивизацииСтроки(Элемент)
СтрКартинка= ОбновитьКартинку(Элемент.ТекущиеДанные.СсылкаНаЭлемент);
КонецПроцедуры
&НаСервереБезКонтекста
Функция ОбновитьКартинку(ТекЭлемент)
Возврат ТекЭлемент.Хранилище.Получить(); //Хранилище это реквизит объекта с типом хранилище значений, в который поместили двоичные данные
КонецФункции
Вывести этот реквизит на форму.
Поставить "Вид" элемента формы "Поле картинки"
При заполнении реквизита двоичными данными происходит отображение картинки.
Обычно заполнение реквизита идет с сервера
&НаКлиенте
Процедура ФотоНоменклатурыПриАктивизацииСтроки(Элемент)
СтрКартинка= ОбновитьКартинку(Элемент.ТекущиеДанные.СсылкаНаЭлемент);
КонецПроцедуры
&НаСервереБезКонтекста
Функция ОбновитьКартинку(ТекЭлемент)
Возврат ТекЭлемент.Хранилище.Получить(); //Хранилище это реквизит объекта с типом хранилище значений, в который поместили двоичные данные
КонецФункции
вот так попробуй
&НаСервереБезКонтекста
Функция ОбновитьКартинку(ТекЭлемент)
ДвоичныеДанныеКартинка=ТекЭлемент.Хранилище.Получить();
СсылкаВХ=ПоместитьВоВременноеХранилище(ДвоичныеДанныеКартинка,Новый УникальныйИдентификатор);
Возврат СсылкаВХ;
КонецФункции
&НаСервереБезКонтекста
Функция ОбновитьКартинку(ТекЭлемент)
ДвоичныеДанныеКартинка=ТекЭлемент.Хранилище.Получить();
СсылкаВХ=ПоместитьВоВременноеХранилище(ДвоичныеДанныеКартинка,Новый УникальныйИдентификатор);
Возврат СсылкаВХ;
КонецФункции
(4) Ловлю ошибку: "Ошибка передачи данных между клиентом и сервером.Значение недопустимого типа" Ошибка преобразования данных XDTO: Запись значения свойства 'param': форма: Элемент имя: { по причине: Ошибка отображения типов: Отсутствует отображение для типа "ТаблицаФормы".
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот