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

Показ картинки при подборе товаров

Показ картинки при подборе товаров
Я
   LittlePumpkin
 
28.07.20 - 10:10
Здравствуйте. УТ 11

Хочу при подборе товаров выводить картинку товара (при позиционировании на строке).
Есть справочник "Номенклатура", у которого есть реквизит "ФайлКартинки". Этот реквизит ссылается на справочник "НоменклатураПрисоединенныеФайлы". У "НоменклатураПрисоединенныеФайлы" есть реквизит "ФайлХранилище" с типом ХранилищеЗначения.

1)Я правильно понимаю, что картинки номенклатуры хранятся в "ФайлХранилище"?

В интернете прочитал, что нужно использовать "ПолучитьНавигационнуюСсылку". Применяю эту функцию для "ФайлКартинки", получаю непонятное значение:
e1cib/data/Справочник.Номенклатура.ФайлКартинки?ref=90d9eca86b24952c11e4a0606cf67d55

2)Как правильно использовать "ПолучитьНавигационнуюСсылку", чтобы получить изображения номенклатуры?
   shuhard
 
1 - 28.07.20 - 10:18
(0)[В интернете прочитал, что нужно использовать "ПолучитьНавигационнуюСсылку"]
смени интернет, в твоём пургу гонят
   vde69
 
2 - 28.07.20 - 10:26
(1) все правильно про получитнавигационнуюссылку, делать надо через неё или на крайняк через хранилище
   LittlePumpkin
 
3 - 28.07.20 - 10:27
А как можно через хранилище?
   vde69
 
4 - 28.07.20 - 10:30
Нав ссылку добавляешь в новую колонку по событию приполученииданных тип этой колонки должен быть строка.
Далее элемент формы картинка указываешь данные на этоту новую колонку
   vde69
 
5 - 28.07.20 - 10:31
(3) помещаешь в хранилище а картинку натравливаешь на адрес хранилища

По существу это практически одно и тоже
   LittlePumpkin
 
6 - 28.07.20 - 10:34
Проблема в том, что все еще выводится странная ссылка, а не картинка
https://imgur.com/a/hRe9Yoa
   Ёпрст
 
7 - 28.07.20 - 11:13
   LittlePumpkin
 
8 - 28.07.20 - 11:31
Да, это я читал. Проблема в том, что у меня данный код выдает ссылку, а не саму картинку. Возможно проблема в том, что обращаюсь к "ФайлКартинки", а не "ФайлХранилище"?
   Ёпрст
 
9 - 28.07.20 - 11:40
(8) нам отсюда не видно как и че ты творишь
   Ёпрст
 
10 - 28.07.20 - 11:41
и.. там же есть демопример..посмотри его, для начала, сделай по-аналогии
   LittlePumpkin
 
11 - 28.07.20 - 12:00
В демопримере картинка хранится в реквизите самого справочника Номенклатура. А у меня она хранится в НоменклатураПрисоединенныеФайлы.  Поэтому не понимаю как использовать ПолучитьНавигационнуюСсылку, если номенклатура в одном справочнике, а картинка в другом
   Ёпрст
 
12 - 28.07.20 - 12:02
(11) а есть какая то разница особая ? ))
там же в примере вы помещаете в колонку навигационную ссылку ..для неё пофик, откуда вы будете тащить данные картинки
   Fragster
 
13 - 28.07.20 - 12:03
(0) оно тормозит
   Fragster
 
14 - 28.07.20 - 12:03
хотя, если выводить не в ДС, а при активизации строки, то норм
   Fragster
 
15 - 28.07.20 - 12:04
(11) более того, оно может быть на диске. правильно - получить двоичные данные и поместить их во временное хранилище. полученный адрес использовать как картинку.
   LittlePumpkin
 
16 - 28.07.20 - 12:05
Значение есть, так как когда ПолучитьНавигационнуюСсылку обращается к реквизиту, где хранится картинка, то и выдается картинка.
А в моем случае ПолучитьНавигационнуюСсылку обращается к реквизиту, где хранится ССЫЛКА на справочник с картинками. И выдает соответственно не картинку, а вот это:
e1cib/data/Справочник.Номенклатура.ФайлКартинки?ref=90d9eca86b24952c11e4a0606cf67d55
   LittlePumpkin
 
17 - 28.07.20 - 12:06
В примере ПолучитьНавигационнуюСсылку обращается к реквизиту с типом ХранилищеЗначений. А у меня тип - СправочникСсылка
   Ёпрст
 
18 - 28.07.20 - 12:07
(16) через точку указать имя табличной части и имя реквизита в ней
   LittlePumpkin
 
19 - 28.07.20 - 12:08
Извините, не понял. Вы сейчас о каком реквизите?
   Ёпрст
 
20 - 28.07.20 - 12:11
почитай описание метода получить навигационную ссылку
   LittlePumpkin
 
21 - 28.07.20 - 12:14
Ну, в первом параметре передается ссылка на объект, во втором имя реквизита. В моем случае указание имени реквизита справочника Номенклатура не работает, так как там ссылка, а не хранилище.
   Ёпрст
 
22 - 28.07.20 - 12:17
(21) ну так тогда


Выборка = ПолучитьПрисоединенныеФайлы(Номенклатура);
Если Выборка.Следующий() Тогда
    Возврат ПолучитьИзвременногоХранилища(ПрисоединенныеФайлы.ПолучитьДанныеФайла(Выборка.Файл, Новый УникальныйИдентификатор).СсылкаНаДвоичныеДанныеФайла);
КонецЕсли;
   Ёпрст
 
23 - 28.07.20 - 12:21
на вот, занимайся.. решение ищется поиском за 1 минуту

&НаКлиенте
Процедура СписокИзмененийПриАктивизацииСтроки(Элемент)
    Если Объект.СписокИзменений.Количество()>0 Тогда
        ТекДанные=Элементы.СписокИзменений.ТекущиеДанные;
        ЭтаФорма.Изображение = ПолучитьКартинку(ТекДанные.Номенклатура);
    КонецЕсли;         
КонецПроцедуры

&НаСервере
Функция ПолучитьКартинку(Номенклатура)

    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |    Номенклатура.ФайлКартинки КАК Картинка
        |ИЗ
        |    Справочник.Номенклатура КАК Номенклатура
        |ГДЕ
        |    Номенклатура.Ссылка = &Ссылка";

    Запрос.УстановитьПараметр("Ссылка", Номенклатура);

    Результат = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи = Результат.Выбрать();

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Возврат ПрисоединенныеФайлы.ПолучитьДанныеФайла(ВыборкаДетальныеЗаписи.Картинка,ЭтаФорма).СсылкаНаДвоичныеДанныеФайла;    
    КонецЦикла;
    
    Возврат Неопределено;
    
КонецФункции

   PuhUfa
 
24 - 28.07.20 - 12:23
Если УТ11 то:
На форме поле. Вид - "Поле картинки". ПутьКДанным - АдресКартинки (реквизит формы, тип строка)

&НаКлиенте
Процедура СписокПриАктивизацииСтроки(Элемент)
    
    ...    
    Если Элемент.ТекущиеДанные <> Неопределено Тогда
        АдресКартинки = ПолучитьАдресКартинки(Элемент.ТекущиеДанные.Ссылка, ЭтаФорма.УникальныйИдентификатор);
    КонецЕсли;    
        
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПолучитьАдресКартинки(Номенклатура, УникальныйИдентификаторФормы)
    
    Попытка
        АдресКартинки = РаботаСФайлами.ДанныеФайла(Номенклатура.ФайлКартинки, УникальныйИдентификаторФормы).СсылкаНаДвоичныеДанныеФайла;
    Исключение
        АдресКартинки = "";
    КонецПопытки;
    
    Возврат АдресКартинки;
    
КонецФункции
   LittlePumpkin
 
25 - 28.07.20 - 12:41
Спасибо огромное! Работает:)
Расскажите пожалуйста, зачем передается уникальный идентификатор формы?
И как вы нашли решение? В смысле как вы поняли, что нужно использовать? Бился около двух дней над этой проблемой, хочу понять свои ошибки.
   PuhUfa
 
26 - 28.07.20 - 12:47
(25) Это БСП. Перейди в функцию РаботаСФайлами.ДанныеФайла(...) там есть полное описание
   LittlePumpkin
 
27 - 28.07.20 - 12:50
Да, это я понимаю. Но как вот в такой ситуации понять, что нужно использовать именно эту функцию в общем модуле?
   PuhUfa
 
28 - 28.07.20 - 13:05
(27) а это уже Дзэн -))


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