8.х Картинка табличного поля

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем wertklop, 9 ноя 2009.

  1. TopicStarter Overlay
    wertklop
    Offline

    wertklop Опытный в 1С

    Регистрация:
    12 май 2008
    Сообщения:
    321
    Симпатии:
    0
    Баллы:
    26
    есть табличное поле ТабличноеПоле1 с колонкой Имя.
    добавляем строку:
    строка=ТабличноеПоле1.Строки.Добавить();
    строка.имя="строка";

    как добавить в ячейку картинку из библиотеки картинок, к примеру, эмблема справочника?
  2. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    С помощью события ПриВыводеСтроки.
    Код:
    Процедура ТЧ1ПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
    ОформлениеСтроки.Ячейки.Иконка.ОтображатьКартинку = Истина;
    ОформлениеСтроки.Ячейки.Иконка.ЗначениеКартинки = БиблиотекаКартинок.Документ;
    КонецПроцедуры
    
    
    
    Ну а далее все, что остается - добавлять условия и менять картинки в зависимости от них.

    Код:
    Процедура ТЧ1ПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
    ОформлениеСтроки.Ячейки.Иконка.ОтображатьКартинку = Истина;
    
    Если ДанныеСтрки.Ссылка = мояСсылка Тогда
    ОформлениеСтроки.Ячейки.Иконка.ЗначениеКартинки = БиблиотекаКартинок.Документ;
    Иначе
    ОформлениеСтроки.Ячейки.Иконка.ЗначениеКартинки = БиблиотекаКартинок.ДругаяОбщаяКартинка;
    КонецЕсли;
    КонецПроцедуры
    
    
    
    Да, "Иконка" в данном случае колонка табличной части.
  3. Stack_G
    Offline

    Stack_G Опытный в 1С

    Регистрация:
    10 дек 2007
    Сообщения:
    786
    Симпатии:
    2
    Баллы:
    26
    Оффтоп: Если вам нужна только картинка и какое-либо значение, лучше воспользоваться элементом СписокЗначений. ИМХО. Там попроще будет :). Вот например:
    http://www.1c-pro.ru/index.php?showtopic=20357&hl=
  4. TopicStarter Overlay
    wertklop
    Offline

    wertklop Опытный в 1С

    Регистрация:
    12 май 2008
    Сообщения:
    321
    Симпатии:
    0
    Баллы:
    26
    lazy, насколько я понял, ты привёл пример для табличной части, а Stack_G для списка значений. но ни один из приведённых методов(процедура ПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки) и метод Добавить()) не соответствует табличному полю с типом Дерево значений. я работаю в данной ситуации с деревом и только!
    есть ли для дерева что то?
  5. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Дерево значений - частный случай Табличной части. Работает точно так же как и с ТЗ. Вот пример из живой самописной конфы:

    Код:
    Процедура ДеревоНаФормеПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
    Если НЕ ЗначениеЗаполнено(ДанныеСтроки.Ссылка) Тогда
    Возврат;
    КонецЕсли;
    Если ДанныеСтроки.ЭтоГруппа Тогда
    ОформлениеСтроки.Ячейки.Ссылка.Картинка = БиблиотекаКартинок["СправочникГруппа"];
    ОформлениеСтроки.Ячейки.Ссылка.ОтображатьКартинку = Истина;
    Иначе
    Если ЗначениеЗаполнено(ДанныеСтроки.ИмяКартинки) Тогда
    ОформлениеСтроки.Ячейки.Ссылка.Картинка = БиблиотекаКартинок[ДанныеСтроки.ИмяКартинки];
    ОформлениеСтроки.Ячейки.Ссылка.ОтображатьКартинку = Истина;
    Иначе
    ОформлениеСтроки.Ячейки.Ссылка.Картинка = БиблиотекаКартинок["Вопрос"];
    ОформлениеСтроки.Ячейки.Ссылка.ОтображатьКартинку = Истина;
    КонецЕсли;
    
    Конецесли;
    КонецПроцедуры
    
  6. Stack_G
    Offline

    Stack_G Опытный в 1С

    Регистрация:
    10 дек 2007
    Сообщения:
    786
    Симпатии:
    2
    Баллы:
    26
    Как вариант покопайся в СП по этому:
  7. TopicStarter Overlay
    wertklop
    Offline

    wertklop Опытный в 1С

    Регистрация:
    12 май 2008
    Сообщения:
    321
    Симпатии:
    0
    Баллы:
    26
    Дико извиняюсь, я просто немного не там посмотрел обработчики событий, поэтому и не увидил процедуру

    а каким событием можно свернуть и развернуть дерево?
  8. lazy
    Offline

    lazy Модераторы Команда форума Модератор

    Регистрация:
    1 сен 2007
    Сообщения:
    2.127
    Симпатии:
    4
    Баллы:
    29
    Из той же конфы - при обновлении дерева система запоминает текущий элемент и его снова открывает. Но нужно отметить, что в этом дереве каждая ссылка уникальна, поэтому она и используется при повторном открытии дерева.

    Код:
    Процедура ОбновитьСписокЗаметок()
    // запомним текущее положение 
    Если ДеревоЗаметок.Строки.Количество() <> 0 Тогда
    ТекСпр = ЭлементыФормы.ДеревоЗаметок.ТекущаяСтрока.Ссылка;
    КонецЕсли;
    
    // --------------- сам код обновления дерева    
    Запрос = Новый Запрос("ВЫБРАТЬ "// запрос убран как не имеющий отношения к делу...    
    
    
    ДеревоЗаметок = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
    
    ЭлементыФормы.ДеревоЗаметок.СоздатьКолонки();
    ЭлементыФормы.ДеревоЗаметок.Колонки.ИмяКартинки.Видимость = Ложь;
    ЭлементыФормы.ДеревоЗаметок.Колонки.ЭтоГруппа.Видимость = Ложь;
    
    // --------------- далее идет код по возвращению курсора в прежнее положение
    Если текСпр = Неопределено Тогда
    ОбновитьОтображениеЗаметки();
    Возврат;
    КонецЕсли;
    ТекСтрока = ДеревоЗаметок.Строки.Найти(ТекСпр,"Ссылка",Истина);
    
    
    Если ТекСпр.ЭтоГруппа Тогда
    ЭлементыФормы.ДеревоЗаметок.Развернуть(ТекСтрока,Истина);
    ЭлементыФормы.ДеревоЗаметок.ТекущаяСтрока = ТекСтрока;
    ИначеЕсли (ТекСтрока.Родитель  Неопределено) Тогда
    ЭлементыФормы.ДеревоЗаметок.Развернуть(ТекСтрока.Родитель,Истина);
    ЭлементыФормы.ДеревоЗаметок.ТекущаяСтрока = ТекСтрока;
    Иначе
    ЭлементыФормы.ДеревоЗаметок.ТекущаяСтрока = ТекСтрока;
    КонецЕсли;
    ОбновитьОтображениеЗаметки();
    КонецПроцедуры
    
  9. Stack_G
    Offline

    Stack_G Опытный в 1С

    Регистрация:
    10 дек 2007
    Сообщения:
    786
    Симпатии:
    2
    Баллы:
    26
    По поводу:
    Код скомунизден с другого форума.
    см. вложение.

    Вложения:

  10. TopicStarter Overlay
    wertklop
    Offline

    wertklop Опытный в 1С

    Регистрация:
    12 май 2008
    Сообщения:
    321
    Симпатии:
    0
    Баллы:
    26
    Stack_G, хотел спросить по коду в обработке, может по аське спишемся?
  11. Stack_G
    Offline

    Stack_G Опытный в 1С

    Регистрация:
    10 дек 2007
    Сообщения:
    786
    Симпатии:
    2
    Баллы:
    26
    wertklop, да я сам его украл :) этим вопрососм только и занялся после поднятия тобой темы, интересно мне стало, что ж за свойство такое ДанныеКартинки. Вот и покопал немного, код украл :) В аське-то списаться можем, только мало чем помогу по этому вопросу. В личку бросил ссылку на тему на другом форуме. Хотя гугл дает этот результат пятым наверное. Не ленись, копай сам :)
  12. TopicStarter Overlay
    wertklop
    Offline

    wertklop Опытный в 1С

    Регистрация:
    12 май 2008
    Сообщения:
    321
    Симпатии:
    0
    Баллы:
    26
    Проанализировав данный топик и не только его, решил, что буду применять процедуру ПриВыводеСтроки(), так мне кажется удобнее, тем более, что дерево у меня не очень большое. а какую именно картинку вставлять, буду смотреть в зависимости от данных строки.
  13. Stack_G
    Offline

    Stack_G Опытный в 1С

    Регистрация:
    10 дек 2007
    Сообщения:
    786
    Симпатии:
    2
    Баллы:
    26
    я и не настаивал на использование ДанныеКартинки :) Просто этот вариант тоже имеет место быть ))
  14. TopicStarter Overlay
    wertklop
    Offline

    wertklop Опытный в 1С

    Регистрация:
    12 май 2008
    Сообщения:
    321
    Симпатии:
    0
    Баллы:
    26
    я отписал своё решени для всех, мало ли какие люди бывают, а тут уже готовый совет ), я ж не с "потолка" его выдумал, а на анализе представленных вами решений

Поделиться этой страницей