1с картинка в табличной части

Рассмотрим эту возможность на примере табличной части документа РасходТовара. В этой табличной части мы хотим товары отмечать одной пиктограммой, а услуги — другой.

Прежде всего, коллекцию картинок, элементы которой предполагается показывать в списке, следует указать в свойстве КартинкаСтрок таблицы формы.

Например, это может быть коллекция, содержащая две картинки: для обозначения товаров и для обозначения услуг:

После этого необходимо задать свойство ПутьКДаннымКартинкиСтроки для этой таблицы. В этом свойстве должно быть указано поле, значение которого определяет индекс отображаемой картинки.

Например, таким полем может быть реквизит ТоварУслуга справочника Товары. Для товаров этот реквизит содержит значение 0, для услуг он содержит значение 1.

В результате в самой левой колонке табличной части формы будет отображена выбранная картинка.

Можно перетащить реквизит, содержащий индексы картинки строк (в нашем примере Объект.Товары.Товар.ТоварУслуга) в первую колонку таблицы формы, и тогда картинка будет отображена в отдельной колонке табличной части.

Аналогичным образом собственные картинки можно показать и в динамическом списке. С той лишь разницей, что в свойстве ПутьКДаннымКартинкиСтроки нужно указать поле из запроса, которое будет возвращать индекс картинки в выбранной коллекции картинок.

Подробнее о свойствах таблицы формы ПутьКДаннымКартинкиСтроки, КартинкаСтрок можно прочитать в синтакс-помощнике: Интерфейс (управляемый) — Таблица формы — ТаблицаФормы — Свойства:

Guesto notes

Часто для читабельности списков выводим картинки в строках таблицы соответствующие статусам. В управляемом приложении такое пожелание реализуется достаточно просто.

В качестве решаемой задачи определим динамический список, в котором необходимо выводить иконки. Иконки, а точнее набор иконок создадим сами, в виде цветных квадратов 32*32 пикселей.

Решение

Набор иконок

Для вывода очень удобно использовать набор иконок, по сути это картинка с определенной высотой и кратной количеству иконок шириной. Для наглядности создадим свой набор, в котором будет 6 иконок с разными цветами. В любом графическом редакторе создаем слой 32*192 и заливаем квадратики разными цветами и сохраняем. Я использовал GIMP, у меня получилось так(самая левая иконка белая)

Получившуюся картинку загружаем в конфигурацию.

Подготовка конфигурации

В нашей конфигурации есть периодический регистр сведений «Состояние задач» с измерениями Проект, Задача и ресурсом Выполнена. Будем выводить цветной квадратик в зависимости от даты последней записи по задаче.

Создадим обработку, в которой определим форму с динамическим списком. Для динамического списка установим признак Произвольный запрос и напишем текст запроса в котором выберем срез последних регистра сведений «Состояние задач»:

В запросе определили колонку Без изменений, в которой рассчитывается количество дней без изменения статуса задачи.

В выражении присутствует параметр, значение параметра будем задавать в обработчике ПриСозданииНаСервере()

На форму добавим таблицу из получившегося динамического списка. Для колонки Без изменений установим следующие параметры:

  • Вид: Поле картинки;
  • Путь к данным: СписокЗадач.БезИзменений;
  • Картинка значений: ЦветаБезИзменений;
  • Положение заголовка: Нет

Таким образом система в качестве изображения в поле картинки будет брать иконку из набора по индексу, который определен реквизите БезИзменений динамического списка.

Заполним данными регистр сведений «Состояние задач»(считаем, что текущая дата равна дате публикации статьи 17.05.2017)

Данные регистра

Вывод получившейся обработки

Дополнительно сгруппируем динамический список по проекту для большей читабельности и посмотрим результат:

Комментарии 4

Извините, а как вы присваиваете конкретному цвету конкретное число? например Зеленому цвету число 1

Сергей, здесь работает общепринятый алгоритм работы с наборами картинок(Далее условно):

Полученное между ними и есть картинка по индексу N.

Остается, только правильно оформить картинку

А как изменить этот механизм
«Левый край = Высота картинки * N;
Правый край = Высота картинки * N + Высота картинки.»

Дело в том что у меня картинки не квадратные, а растянутые (статусы делаю)

Олег, механизмов изменения данного алгоритма не видел. Пользуюсь как есть.
Можно попробовать квадратные с прозрачным фоном, а в них размещать растянутые картинки. При этом возможны проблемы с высотой строк, но стоит попробовать.

Рассмотрим данную возможность на примере табличной части документа «Расходная накладная» . В этой табличной части мы будем товары отмечать одной пиктограммой , а услуги — другой .

Прежде всего , коллекцию картинок , элементы которой предполагается показывать в списке , следует указать в свойстве КартинкаСтрок таблицы формы .

Например , это может быть коллекция , содержащая две картинки : для обозначения товаров и для обозначения услуг :

После этого необходимо задать свойство ПутьКДаннымКартинкиСтроки для этой таблицы . В этом свойстве должно быть указано поле , значение которого определяет индекс отображаемой картинки .

Например , таким полем может быть реквизит ТоварУслуга справочника Номенклатура . Для товаров этот реквизит содержит значение 0, для услуг он содержит значение 1.

В результате в самой левой колонке табличной части формы будет отображена выбранная картинка .

Можно перетащить реквизит , содержащий индексы картинки строк ( в примере Объект .СписокНоменклатуры .Номенклатура . ТоварУслуга ) в первую колонку таблицы формы , и тогда картинка будет отображена в отдельной колонке табличной части .

Настройка вывода картинки в отдельную колонку

Отображение картинки в отдельной колонке табличной части документа

Аналогичным образом собственные картинки можно показать и в динамическом списке . С той лишь разницей , что в свойстве ПутьКДаннымКартинкиСтроки нужно указать поле из запроса , которое будет возвращать индекс картинки в выбранной коллекции картинок .

Оцените статью
SoftLast
Добавить комментарий