Имя: Пароль:
1C
1С v8
Подскажите по приведению типов
,
0 LivingStar
 
18.04.13
15:07
Хочу вывести изображение в СКД, на одной строке справа тип:
"Картинка"
слева тип:
"СправочникСсылка.НоменклатураПрисоединенныеФайлы" (на форме отображается загруженное изображение)
|
Ошибка при установке значения атрибута контекста (Картинка)
               ДокументРезультат.Рисунки[Индекс].Картинка = ЗначениеВыводимыхДанных;
по причине:
Несоответствие типов
|
Как загруженное изображение с формы справочника привести к типу Картинка?
1 LivingStar
 
18.04.13
15:49
никто не знает?
2 olegves
 
18.04.13
15:56
(0) приведение типов - это немного другое - назначение типа для реквизита составного типа
3 LivingStar
 
18.04.13
15:58
(2) как мне быть в этой ситуации? как вывести картинку?
4 olegves
 
18.04.13
16:01
(3) должен быть реквизит с типом Поле картинки - туда и выводить файл картинки
5 acsent
 
18.04.13
16:03
какого типа ЗначениеВыводимыхДанных
6 Miss1C
 
18.04.13
16:05
У картинки и ЗначениеВыводимыхДанных - разные типы, тебе нужно привести их к одному типу
7 LivingStar
 
18.04.13
16:06
(6) я об этом и хочу узнать, как это сделать если это поможет
8 LivingStar
 
18.04.13
16:07
(5)
Это я сам задаю поле из запроса
|
                       Если ПолеРасшифровки.Поле = ПолеПоКоторомуНеобходимоПолучитьЗначение Тогда
                           ЗначениеВыводимыхДанных = ПолеРасшифровки.Значение;
                           Прервать;
                       КонецЕсли;
9 LivingStar
 
18.04.13
16:07
(8+)
|
   ПолеПоКоторомуНеобходимоПолучитьЗначение = "НоменклатураФайлКартинкиСсылка";
10 Miss1C
 
18.04.13
16:10
У тебя ЗначениеВыводимыхДанных с типом справочник ссылка, тогда у тебя в этом справочнике должен быть реквизит с типом хранилище значения, где хранятся все твои картинки, методом получить() получаешь из хранилища картинку и присваиваешь ее.  ДокументРезультат.Рисунки[Индекс].Картинка = ЗначениеВыводимыхДанных.ХранилищеЗначения.Получить();
11 LivingStar
 
18.04.13
16:13
(10) Ок, сейчас попробую!!!!
12 LivingStar
 
18.04.13
16:18
пробую так
|
               Картинка = ЗначениеВыводимыхДанных.ФайлХранилище.Получить();
               Если Картинка <> неопределено Тогда
                   ДокументРезультат.Рисунки[Индекс].Картинка = ЗначениеВыводимыхДанных.ФайлХранилище.Получить();
               КонецЕсли;
|
так как уже руганулось, там было значение "неопределено"
13 LivingStar
 
18.04.13
16:21
выводится текст, название картинки
при нажатии на этом поле открывается окно
с гиперссылкой
но по ней ничего не открывается

подскажите как за места текста выводить саму картинку что я не так делаю?
14 LivingStar
 
18.04.13
16:24
делаю по подобию
|
http://help1c.com/faq/view/1234.html
|
Если начинаю выводить ПолеКартинки то выводится значение %Картинка% в каждом поле. Изображение из номенклатуры так же не отображается (((
15 Miss1C
 
18.04.13
16:27
Картинку ты как получаешь? И запрос в студию)
16 LivingStar
 
18.04.13
16:29
по циклу в условие не заходит (((
|
               Картинка = ЗначениеВыводимыхДанных.ФайлХранилище.Получить();
               Если Картинка <> неопределено Тогда
                   ДокументРезультат.Рисунки[Индекс].Картинка = Картинка;
               КонецЕсли;

|
17 LivingStar
 
18.04.13
16:29
[jnz yfpdfybt jlyjq rfhnbyrb dsdjlbn
18 LivingStar
 
18.04.13
16:29
хотя название одной картинки выводит
|
Запрос
|
ВЫБРАТЬ РАЗРЕШЕННЫЕ
   ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура,
   ТоварыНаСкладахОстаткиИОбороты.Характеристика КАК Характеристика,
   ТоварыНаСкладахОстаткиИОбороты.Серия,
   ТоварыНаСкладахОстаткиИОбороты.Склад КАК Склад,
   ТоварыНаСкладахОстаткиИОбороты.Помещение КАК Помещение,
   ВЫБОР
       КОГДА ТоварыНаСкладахОстаткиИОбороты.Регистратор = НЕОПРЕДЕЛЕНО
           ТОГДА NULL
       ИНАЧЕ ТоварыНаСкладахОстаткиИОбороты.Регистратор
   КОНЕЦ КАК Регистратор,
   ТоварыНаСкладахОстаткиИОбороты.ПериодСекунда КАК ПериодСекунда,
   ТоварыНаСкладахОстаткиИОбороты.ПериодДень КАК ПериодДень,
   ТоварыНаСкладахОстаткиИОбороты.ПериодНеделя КАК ПериодНеделя,
   ТоварыНаСкладахОстаткиИОбороты.ПериодДекада КАК ПериодДекада,
   ТоварыНаСкладахОстаткиИОбороты.ПериодМесяц КАК ПериодМесяц,
   ТоварыНаСкладахОстаткиИОбороты.ПериодКвартал КАК ПериодКвартал,
   ТоварыНаСкладахОстаткиИОбороты.ПериодГод КАК ПериодГод,
   ТоварыНаСкладахОстаткиИОбороты.ВНаличииКонечныйОстаток КАК КонечныйОстаток,
   ТоварыНаСкладахОстаткиИОбороты.ВНаличииОборот КАК Оборот,
   ТоварыНаСкладахОстаткиИОбороты.ВНаличииПриход КАК Приход,
   ТоварыНаСкладахОстаткиИОбороты.ВНаличииРасход КАК Расход,
   ТоварыНаСкладахОстаткиИОбороты.ВНаличииНачальныйОстаток КАК НачальныйОстаток,
   ТоварыНаСкладахОстаткиИОбороты.Номенклатура.ФайлКартинки
ИЗ
   РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(, , Авто, , ) КАК ТоварыНаСкладахОстаткиИОбороты
19 Miss1C
 
18.04.13
16:31
(16) Ну давай еще и цикл
20 LivingStar
 
18.04.13
16:31
если картинка есть на форме, то должна же она быть доступна по
ЗначениеВыводимыхДанных.ФайлХранилище.Получить();
21 LivingStar
 
18.04.13
16:32
(19)
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
   Картинка = неопределено;
   СтандартнаяОбработка = Ложь;
   ДокументРезультат.Очистить();
   КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
   Макет = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки, ДанныеРасшифровки);
   ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
   ПроцессорКомпоновки.Инициализировать(Макет, , ДанныеРасшифровки);
   ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
   ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
   //ПроцессорВывода.Вывести(ДокументРезультат);
   // 2013_04_18 ->
   ПолеПоКоторомуНеобходимоПолучитьЗначение = "НоменклатураФайлКартинки";
   //ПолеПоКоторомуНеобходимоПолучитьЗначение = "НоменклатураФайлКартинкиТекстХранилище";
   // 2013_04_18 <-
   ПроцессорВывода.НачатьВывод();
   Пока истина Цикл
       ЭлементРезультата = ПроцессорКомпоновки.Следующий();
       Если ЭлементРезультата = Неопределено Тогда
           прервать;
       КонецЕсли;    
       ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
       Если ЭлементРезультата.ЗначенияПараметров.Количество() > 0 Тогда
           ЗначениеВыводимыхДанных = Неопределено;
           Для каждого ЗначениеПараметра из ЭлементРезультата.ЗначенияПараметров Цикл
               Если ТипЗнч(ЗначениеПараметра.Значение) = Тип("ИдентификаторРасшифровкиКомпоновкиДанных") Тогда
                   ПоляРасшифровки = ДанныеРасшифровки.Элементы[ЗначениеПараметра.Значение].ПолучитьПоля();
                   Для Каждого ПолеРасшифровки из ПоляРасшифровки Цикл
                       Если ПолеРасшифровки.Поле = ПолеПоКоторомуНеобходимоПолучитьЗначение Тогда
                           ЗначениеВыводимыхДанных = ПолеРасшифровки.Значение;
                           Прервать;
                       КонецЕсли;    
                   КонецЦикла;    
               КонецЕсли;    
           КонецЦикла;    
           Если ЗначениеЗаполнено(ЗначениеВыводимыхДанных) Тогда
               Рис = ДокументРезультат.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
               Рис.РазмерКартинки = РазмерКартинки.РеальныйРазмер;
               Индекс = ДокументРезультат.Рисунки.Индекс(Рис);
               // 2013_04_18 ->
               Картинка = ЗначениеВыводимыхДанных.ФайлХранилище.Получить();
               Если Картинка <> неопределено Тогда
                   ДокументРезультат.Рисунки[Индекс].Картинка = Картинка;
               КонецЕсли;
               //Если ЗначениеВыводимыхДанных.ЭтоГруппа Тогда
               //    ДокументРезультат.Рисунки[Индекс].Картинка = БиблиотекаКартинок.ГруппаИЭлемент;
               //Иначе
               //    ДокументРезультат.Рисунки[Индекс].Картинка = БиблиотекаКартинок.Сформировать;
               //КонецЕсли;    
               // 2013_04_18 <-
               ВысотаТабДок = ДокументРезультат.ВысотаТаблицы;
               ОбластьДляКартинки = ДокументРезультат.НайтиТекст("%Картинка%");
               Если ОбластьДляКартинки <> Неопределено Тогда
                   ДокументРезультат.Рисунки[Индекс].Расположить(ОбластьДляКартинки);    
                   ОбластьДляКартинки.Текст = "%КартинкаДобавлена%"
               КонецЕсли;
           КонецЕсли;    
       КонецЕсли;    
   КонецЦикла;
   ПроцессорВывода.ЗакончитьВывод();
КонецПроцедуры
22 Miss1C
 
18.04.13
16:32
(20) В событиях картинки посмотри куда она записывается, если в хранилище, тогда должна быть
23 Miss1C
 
18.04.13
16:35
У тебя отладка доходит  Картинка = ЗначениеВыводимыхДанных.ФайлХранилище.Получить(); ?
24 LivingStar
 
18.04.13
16:36
(23) доходит но там всегдая неопределено
25 LivingStar
 
18.04.13
16:39
записывается она в поле ФайлКартинки наверное
типа СправочникСсылка.НоменклатураПрисоединенныеФайлы
у этого справочника есть поле ФайлХранилище типа ХранилищеЗначения данных, так же есть поле ТекстХранилище типа ХранилищеЗначения
26 LivingStar
 
18.04.13
16:41
при открытии номенклатуры, вот такой адрес картинки    
|
Если Не Объект.ФайлКартинки.Пустая() Тогда
       АдресКартинки = НавигационнаяСсылкаКартинки(Объект.ФайлКартинки, УникальныйИдентификатор)
   Иначе
       АдресКартинки = "";
   Конецесли;
|
"e1cib/tempstorage/ffb81830-17e9-480c-8ac2-89c6c38f62b9"
27 Miss1C
 
18.04.13
16:42
(25) Реквизит или поле?
28 LivingStar
 
18.04.13
16:42
вот как она записывается
|
   Если ИмяСобытия = "Запись_ПрисоединенныйФайл" Тогда
       СсылкаНаФайл = ?(ТипЗнч(Источник) = Тип("Массив"), Источник[0], Источник);
       Если ВыборИзображения Тогда
           Объект.ФайлКартинки = СсылкаНаФайл;
           АдресКартинки = НавигационнаяСсылкаКартинки(Объект.ФайлКартинки, УникальныйИдентификатор);
           Модифицированность = Истина;
       ИначеЕсли ВыборФайлаОписания Тогда
           Объект.ФайлОписанияДляСайта = СсылкаНаФайл;
           ПутьКФайлуОписанию = СсылкаНаФайл;
           Модифицированность = Истина;
       КонецЕсли;
   КонецЕсли;
   
КонецПроцедуры
|
(27) реквизит в смысле
29 LivingStar
 
18.04.13
16:48
дошел до формы ПрисоединяемыйФайл, возможно в ней ещё как то записывается
30 Miss1C
 
18.04.13
16:51
Тебе с СправочникСсылка.НоменклатураПрисоединенныеФайлы  Нужно вытянуть картинку?
31 LivingStar
 
18.04.13
16:54
УТ 11, справочник номенклатура, у него есть поле типа справочника номенклатура присоединенные файлы, есть отчет ведомость товаров на складах, я пытаюсь с выводом номенклатуры в отчет вывести и картинки! которые подгружены в справочник номенклатура, но пока вот не разобрался.
32 LivingStar
 
18.04.13
16:55
(30) видимо да
33 LivingStar
 
18.04.13
16:57
блин тупую ссылку выводит нза место картинки и все,
если в это условие не заходит, значит нет её в хранилище (((
|
               Картинка = ЗначениеВыводимыхДанных.ФайлХранилище.Получить();
               Если Картинка <> неопределено Тогда
                   ДокументРезультат.Рисунки[Индекс].Картинка = Картинка;
               КонецЕсли;
34 Miss1C
 
18.04.13
17:00
(33) То есть Картинка это Справочник ссылка?
35 LivingStar
 
18.04.13
17:03
тип хранения ссылка стоит в информационной базе
36 LivingStar
 
18.04.13
17:04
(34) вы про эту? ДокументРезультат.Рисунки[Индекс].Картинка
это тип картинка, наверное это значение в вычисляемых полях СКД, как в http://help1c.com/faq/view/1234.html
37 LivingStar
 
18.04.13
17:12
картинка имеется, но в  ЗначениеВыводимыхДанных.ФайлХранилище.Получить() пусто, не пойму что делать, у элемента номенклатуры на форме она выводится
38 LivingStar
 
18.04.13
17:13
(37) а элемент сам картинки в ЗначениеВыводимыхДанных есть
39 LivingStar
 
19.04.13
10:48
Кто нибудь может подсказать как вывести картинку в отчет СКД, я не могу получить её из хранилища.
40 LivingStar
 
19.04.13
11:55
так делаю, тоже не получается

               Картинка = ПолучитьИзВременногоХранилища( НавигационнаяСсылкаКартинки(ЗначениеВыводимыхДанных, Новый УникальныйИдентификатор));
               Если Картинка <> неопределено Тогда
                   ДокументРезультат.Рисунки[Индекс].Картинка = Картинка;
               КонецЕсли;
41 LivingStar
 
19.04.13
12:00
подскажите кто знает !
42 LivingStar
 
19.04.13
12:33
up!
43 LivingStar
 
19.04.13
12:53
работающий вывод ДокументРезультат.Рисунки[Индекс].Картинка = БиблиотекаКартинок.BCGВопросы;

как получить картинку загруженную в номенклатуре что бы она была типа картинка?
44 LivingStar
 
19.04.13
13:47
почему не вывел картинку?

               Путь                    = Путь();
               ОтносительныйПуть       = ПолучитьИдентификаторОбъекта(ЗначениеВыводимыхДанных.ФайлКартинки.ВладелецФайла) + "\";
               ИмяФайла                = ЗначениеВыводимыхДанных.ФайлКартинки.Наименование + "." + ЗначениеВыводимыхДанных.ФайлКартинки.Расширение;
               ПолноеИмяФайлаНаКлиенте = Путь + ОтносительныйПуть + ИмяФайла;
               ИзображениеНаДиске = Новый Файл("C:\Users\admin\AppData\Roaming\1C\Файлы\УправлениеТорговлей\БОСС\0000000004\07A_thm.jpg");
               Если ИзображениеНаДиске.Существует() Тогда
                   Картинка = Новый Картинка (ПолноеИмяФайлаНаКлиенте);    
                   ДокументРезультат.Рисунки[Индекс].Картинка = Картинка;
               КонецЕсли;