Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

РС. Получить значение ресурса по ключу

РС. Получить значение ресурса по ключу
Я
   travelekb
 
20.12.20 - 09:42
Добрый день.

Заранее прошу прощения за примитивный вопрос, ответ на который вероятно очевиден. Но битых 2 часа не могу справиться.

Непереодический неподчиненный регистр сведений.
Измерение - СправочникНоменклатура
Ресурс - Строка, путь к файлу на жестком диске (типа "C:/myfolder/myfile.jpg")

На форме списка регистра сведений делаю поле картинки, при переборе строк в списке в поле должны отображаться миниатюры изображений.
Собственно, ТекущаяСтрока дает ключ записи регистра сведений, но среди полей нет ресурса (оно в принципе и понятно) - а путь к файлу хранится именно в нем.
Как получить значение ресурса и вывести в поле картинки?

Если в ресурсе хранить тип ХранилищеЗначения с самой картинкой - все отлично работает через ПолучитьНавигационнуюСсылку(КлючЗаписи, "Картинка"), но у меня в ресурсе только путь к ней на диске.
Прошу помощи, спасибо.
   Beduin
 
1 - 20.12.20 - 09:50
   travelekb
 
2 - 20.12.20 - 09:54
(1) у меня в ресурсе не ХранилищеЗначений, как в примере, а строка с путем к файлу на диске.
   Beduin
 
3 - 20.12.20 - 10:02
(2) Так преобразуй из строки хранилище получи.
   travelekb
 
4 - 20.12.20 - 10:07
&НаКлиенте
Процедура СписокПриАктивизацииСтроки(Элемент)
    КлЗаписи = Элементы.Список.ТекущаяСтрока;
    АдресВХранилище = ПолучитьИзображениеСервер(КлЗаписи, ЭтаФорма.УникальныйИдентификатор);
    АдресИзображения = АдресВХранилище;
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПолучитьИзображениеСервер(КлЗаписи,ИдФормы)
    НавСсыл = ПолучитьНавигационнуюСсылку(КлЗаписи, "ПутьКФайлу");
    Возврат ПоместитьВоВременноеХранилище(НавСсыл, ИдФормы);
КонецФункции

Пытаюсь, не работает.
   Beduin
 
5 - 20.12.20 - 10:19
АдресИзображения это поле с картинкой?
   travelekb
 
6 - 20.12.20 - 10:20
(5) да, именно.
   acht
 
7 - 20.12.20 - 10:22
(4) Путь к файлу хранится относительно чего - клиента или сервера? Если сервера, то как-то так:

Функция ПолучитьИзображениеСервер(КлЗаписи)
    ДД = Новый ДвоичныеДанные(КлЗаписи.ПутьКФайлу);
    Возврат ПоместитьВоВременноеХранилище(НавСсыл, ДД);
КонецФункции
   acht
 
8 - 20.12.20 - 10:22
точнее
Возврат ПоместитьВоВременноеХранилище(ДД);
   travelekb
 
9 - 20.12.20 - 10:29
(8) относительно сервера
   travelekb
 
10 - 20.12.20 - 10:33
(7)  Поле объекта не обнаружено (ПутьКФайлу)
В этот то и проблема, что в отладчике среду полей ключа записи - нет поля ресурса регистра. Поэтому и нет возможности обратиться к его имени (ПутьКФайлу)
   travelekb
 
11 - 20.12.20 - 10:36
Вот структура регистра
http://joxi.ru/1A5JoYFDlaLKrE?d=1
   ДенисЧ
 
12 - 20.12.20 - 10:36
Дык этта ...
На то он и ключ, чтобы содержать ключевые поля...
Создай манагер записи по данным ключа и прочитай... Оттуда и бери адрес.
   travelekb
 
13 - 20.12.20 - 10:44
(12) спасибо, добрый человек. Именно так и получилось.

&НаСервереБезКонтекста
Функция ПолучитьИзображениеСервер(КлЗаписи)
    МенеджерЗаписи = РегистрыСведений.ДополнительнаяИнформация.СоздатьМенеджерЗаписи();
    МенеджерЗаписи.Объект = КлЗаписи.Объект;
    МенеджерЗаписи.ИмяФайла = КлЗаписи.ИмяФайла;
    МенеджерЗаписи.ОсновноеИзображение = КлЗаписи.ОсновноеИзображение;
    МенеджерЗаписи.Прочитать();
    Двоичное = Новый ДвоичныеДанные(МенеджерЗаписи.ПутьКФайлу);
    Возврат ПоместитьВоВременноеХранилище(Двоичное);
КонецФункции
   travelekb
 
14 - 20.12.20 - 10:47
или еще короче

&НаСервереБезКонтекста
Функция ПолучитьИзображениеСервер(КлЗаписи)
    МенеджерЗаписи = РегистрыСведений.ДополнительнаяИнформация.СоздатьМенеджерЗаписи();
    ЗаполнитьЗначенияСвойств(МенеджерЗаписи, КлЗаписи);
    МенеджерЗаписи.Прочитать();
    Двоичное = Новый ДвоичныеДанные(МенеджерЗаписи.ПутьКФайлу);
    Возврат ПоместитьВоВременноеХранилище(Двоичное);
КонецФункции
   acht
 
15 - 20.12.20 - 10:52
(14) Лучше простым запросом тогда. А то разные там объектные оптимистичные блокировки и т.п.

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.