Имя: Пароль:
1C
 
Менять картинку при выводе строки в зависимости от типа дока ?
0 RomaH
 
naïve
20.12.06
08:44
Есть табличное поле - выводится журнал документов
Хочу менять картинку в зависимости от типа документа, но ... пока нашел только то что можно менять индекс картинки, т.е. надо сначала создать картинку с набором изображений

а вот можно ли менять именно картинку при выводе строки ?
1 RomaH
 
naïve
20.12.06
08:45
ЯчейкаСКартинкой = ОформлениеСтроки.Ячейки.Картинка;

Если ВидДокумента = 1 Тогда
ЯчейкаСКартинкой.Картинка = БиблиотекаКартинок.User1;
ИначеЕсли ВидДокумента = 2 Тогда
ЯчейкаСКартинкой.Картинка = БиблиотекаКартинок.User2;
КонецЕсли;


что-то типа такого
2 shuhard
 
20.12.06
08:49
примерно так:
Процедура ЖурналДокументовСписокПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
   Если ТипЗнч(ДанныеСтроки.Ссылка)=Тип("ДокументСсылка.Поступление") Тогда
       ОформлениеСтроки.Ячейки.ИНН.ОтображатьТекст=Истина;
       ОформлениеСтроки.Ячейки.ИНН.Текст=Строка(ДанныеСтроки.Ссылка.Контрагент.ИНН);
       ОформлениеСтроки.Ячейки.Картинка.Картинка=БиблиотекаКартинок.АктивироватьЗадачу;
       
   КонецЕсли;
КонецПроцедуры
3 RomaH
 
naïve
20.12.06
08:52
угу - только не работает
ОформлениеСтроки.Ячейки.Картинка.Картинка=БиблиотекаКартинок.АктивироватьЗадачу
4 moreover
 
20.12.06
08:56
А как не работает-то?
Вот так работает у меня
       ОформлениеСтроки.Ячейки.Пиктограмма.Картинка = БиблиотекаКартинок.СтатусВажно;    
       ОформлениеСТроки.Ячейки.Пиктограмма.ОтображатьКартинку = Истина;
5 coder1c80
 
20.12.06
08:57
(3) потому что не написал ОтображатьКартинку = Истина, до какого-то релиза это делать обязательно, по-моему....
6 RomaH
 
naïve
20.12.06
09:00
ЯчейкаСКартинкой = ОформлениеСтроки.Ячейки.Картинка;
   
   ЯчейкаСКартинкой.Картинка = БиблиотекаКартинок.User1;
   ЯчейкаСКартинкой.ОтображатьКартинку = Истина;
   ЯчейкаСКартинкой.ИндексКартинки = 0;
7 vde69
 
20.12.06
09:00
вообще с картинками какая-то фигня

например у меня есть конфа и в одной сети на части машин отображаеться а на части нет (зависит от настроек экрана)
8 RomaH
 
naïve
20.12.06
09:00
(6) абсолютно не рабочий код
9 RomaH
 
naïve
20.12.06
09:01
ЯчейкаСКартинкой.Картинка = БиблиотекаКартинок.User1;
уже вот эта строка ничего не дает - ибо не присваивает
10 vde69
 
20.12.06
09:02
(9) а в БиблиотекаКартинок картинку User1 добавлял?
11 RomaH
 
naïve
20.12.06
09:02
кстати - 8.1.5.105
12 RomaH
 
naïve
20.12.06
09:03
(10) а то
13 coder1c80
 
20.12.06
09:05
попробуй так:
ЯчейкаСКартинкой = ОформлениеСтроки.Ячейки;
ЯчейкаСКартинкой.Картинка = БиблиотекаКартинок.User1;
ЯчейкаСКартинкой.ОтображатьКартинку = Истина;
14 RomaH
 
naïve
20.12.06
09:06
есть сомнения, что картинку надо присваивать все же в виде коллекции (т.е. в одной - несколько)
и потом только индекс менять
??
15 coder1c80
 
20.12.06
09:06
(13) упс... гоню...
16 coder1c80
 
20.12.06
09:08
(14) возможно... с колекцией работает без проблем.
17 RomaH
 
naïve
20.12.06
09:08
Элемент.Колонки.Картинка.КартинкиСтрок

т.е. тут
18 vde69
 
20.12.06
09:09
собственно у меня с индексами все нормально пашет

Процедура СправочникСписокПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
   Если не ДанныеСтроки.Номенклатура.Ссылка.Пустая() Тогда
       Если глОбьектКорзины = Неопределено Тогда
           ОформлениеСтроки.Ячейки.Корзина.ИндексКартинки=1;
       Иначе
           Если не глОбьектКорзины.ТоварЕстьВКорзине(ДанныеСтроки.Ссылка) Тогда
               ОформлениеСтроки.Ячейки.Корзина.ИндексКартинки=1;
           Иначе
               ОформлениеСтроки.Ячейки.Корзина.ИндексКартинки=0;
           КонецЕсли;
       КонецЕсли;
   КонецЕсли;
КонецПроцедуры
19 RomaH
 
naïve
20.12.06
09:09
а как тогда побыстрее состряпать эту коллекцию ?
есть набор иконок или png
20 coder1c80
 
20.12.06
09:11
(19) Почитай на ИТС статейку "Отображение картинок в табличном поле", там написано как твоей беде помочь...
21 shuhard
 
20.12.06
09:13
(6) если ЯчейкаСКартинкой.ИндексКартинки = 0; то не работает и это правильно:
- индекс нужен тогда,когда картинка содержит много 16*16
- дебагером видно,что индекс =-1

резюме - не нужно ЯчейкаСКартинкой.ИндексКартинки = 0;
22 RomaH
 
naïve
20.12.06
09:14
(21) пробовал - не помогает
23 shuhard
 
20.12.06
09:18
код покажи + есть метод ОформлениеЯчейки (CellAppearance)
УстановитьКартинку (SetPicture)
Синтаксис:
УстановитьКартинку(<Картинка>)
Параметры:
<Картинка> (обязательный)
Тип: Картинка. Картинка.
Описание:
Устанавливает свойство Картинка объекта ОформлениеЯчейки в значение, переданное в параметре <Картинка>, и устанавливает свойство ОтображатьКартинку в значение Истина.

+ версия твоей системы , у меня 8.0.16.2
24 RomaH
 
naïve
20.12.06
09:22
(23) спасибо, вроде заработало
25 shuhard
 
20.12.06
09:35
(24) мы рады,код покажи - на вилы могут наскочить и другие
26 RomaH
 
naïve
20.12.06
09:43
щас, как раз посмотрим оптимальность определения картинки

   //ИмяНужногоТипа = "ДокументСсылка.РеализацияТоваров";
   //
   //Если ТипЗнч(ОбрабатываемыйДокумент) = Тип(ИмяНужногоТипа) Тогда
   //    
   //КонецЕсли;
   
   ЯчейкаСКартинкой = ОформлениеСтроки.Ячейки.Картинка;
   
   ЯчейкаСКартинкой.УстановитьКартинку(БиблиотекаКартинок[ДанныеСтроки.Ссылка.Метаданные().Имя]);



т.е. можно было бы и по условию проверки типа документа, но тогда текст модуля раздувается, а быстродействие второго вроде устраивает (список не большой - от 3 до 10 строк)