Рассмотрим данную возможность на примере табличной части документа «Расходная накладная» . В этой табличной части мы будем товары отмечать одной пиктограммой , а услуги — другой .
Прежде всего , коллекцию картинок , элементы которой предполагается показывать в списке , следует указать в свойстве КартинкаСтрок таблицы формы .
Например , это может быть коллекция , содержащая две картинки : для обозначения товаров и для обозначения услуг :
После этого необходимо задать свойство ПутьКДаннымКартинкиСтроки для этой таблицы . В этом свойстве должно быть указано поле , значение которого определяет индекс отображаемой картинки .
Например , таким полем может быть реквизит ТоварУслуга справочника Номенклатура . Для товаров этот реквизит содержит значение 0, для услуг он содержит значение 1.
В результате в самой левой колонке табличной части формы будет отображена выбранная картинка .
Можно перетащить реквизит , содержащий индексы картинки строк ( в примере Объект .СписокНоменклатуры .Номенклатура . ТоварУслуга ) в первую колонку таблицы формы , и тогда картинка будет отображена в отдельной колонке табличной части .
Настройка вывода картинки в отдельную колонку
Отображение картинки в отдельной колонке табличной части документа
Аналогичным образом собственные картинки можно показать и в динамическом списке . С той лишь разницей , что в свойстве ПутьКДаннымКартинкиСтроки нужно указать поле из запроса , которое будет возвращать индекс картинки в выбранной коллекции картинок .
Guesto notes
Часто для читабельности списков выводим картинки в строках таблицы соответствующие статусам. В управляемом приложении такое пожелание реализуется достаточно просто.
В качестве решаемой задачи определим динамический список, в котором необходимо выводить иконки. Иконки, а точнее набор иконок создадим сами, в виде цветных квадратов 32*32 пикселей.
Решение
Набор иконок
Для вывода очень удобно использовать набор иконок, по сути это картинка с определенной высотой и кратной количеству иконок шириной. Для наглядности создадим свой набор, в котором будет 6 иконок с разными цветами. В любом графическом редакторе создаем слой 32*192 и заливаем квадратики разными цветами и сохраняем. Я использовал GIMP, у меня получилось так(самая левая иконка белая)
Получившуюся картинку загружаем в конфигурацию.
Подготовка конфигурации
В нашей конфигурации есть периодический регистр сведений «Состояние задач» с измерениями Проект, Задача и ресурсом Выполнена. Будем выводить цветной квадратик в зависимости от даты последней записи по задаче.
Создадим обработку, в которой определим форму с динамическим списком. Для динамического списка установим признак Произвольный запрос и напишем текст запроса в котором выберем срез последних регистра сведений «Состояние задач»:
В запросе определили колонку Без изменений, в которой рассчитывается количество дней без изменения статуса задачи.
В выражении присутствует параметр, значение параметра будем задавать в обработчике ПриСозданииНаСервере()
На форму добавим таблицу из получившегося динамического списка. Для колонки Без изменений установим следующие параметры:
- Вид: Поле картинки;
- Путь к данным: СписокЗадач.БезИзменений;
- Картинка значений: ЦветаБезИзменений;
- Положение заголовка: Нет
Таким образом система в качестве изображения в поле картинки будет брать иконку из набора по индексу, который определен реквизите БезИзменений динамического списка.
Заполним данными регистр сведений «Состояние задач»(считаем, что текущая дата равна дате публикации статьи 17.05.2017)
Данные регистра
Вывод получившейся обработки
Дополнительно сгруппируем динамический список по проекту для большей читабельности и посмотрим результат:
Комментарии 4
Извините, а как вы присваиваете конкретному цвету конкретное число? например Зеленому цвету число 1
Сергей, здесь работает общепринятый алгоритм работы с наборами картинок(Далее условно):
Полученное между ними и есть картинка по индексу N.
Остается, только правильно оформить картинку
А как изменить этот механизм
«Левый край = Высота картинки * N;
Правый край = Высота картинки * N + Высота картинки.»
Дело в том что у меня картинки не квадратные, а растянутые (статусы делаю)
Олег, механизмов изменения данного алгоритма не видел. Пользуюсь как есть.
Можно попробовать квадратные с прозрачным фоном, а в них размещать растянутые картинки. При этом возможны проблемы с высотой строк, но стоит попробовать.
Иногда необходимо прямо в табличной части документов сразу видеть изображение товара. Например, при считывании штрихкода проконтролировать правильность выбора товара. Предлагаемое расширение (не требует изменения конфигурации поставщика) при установке отображает миниатюры товаров в документе "Заказ клиента", при необходимости легко переносится на другие документы.
Как реализован вывод изображений? Для каждого товара с картинкой необходимо создать миниатюру (которая влезает по размеру в колонку в табличной части документа). Эту миниатюру необходимо добавить в "присоединенные файлы" к номенклатуре с именем "мини" (так прописано в коде функции, но можно и поменять). Для упрощения создания миниатюр можно воспользоваться служебной обработкой.
В форме документа в дереве реквизита "Объект"
в табличной части "Товары"
добавляем реквизит "Фото", тип "Строка"
И перетаскиваем его на форму в нужное нам место:
Далее у колонки "Фото" устанавливаем свойства:
- Вид — "Поле картинки"
- Размер картинки — "Пропорционально" (если вдруг в миниатюру попадет большая картинка, строчки в документе не съедут, просто картинка отобразится не полностью)
- Ширина 10, Высота 4 — эти параметры измеряются в символах (т.е. получается 4 строчки по 10 символов)
У колонки "Номенклатура" также необходимо установить высоту в значение "4" — иначе отображение строчек будет "съезжать".
Далее в свойствах табличной части "Товары" указываем
- Вертикальная полоса прокрутки — "Использовать всегда"
А затем нам нужно в наш реквизит "Фото" табличной части "Товары" поместить двоичные данные картинки — миниатюры, а точнее адрес ссылки на двоичные данные во временном хранилище, в этом случае платформа вытаскивает из нее картинку.