Каталог решений - Картинки в строках дерева значений по условию (8.3)

Картинки в строках дерева значений по условию (8.3)

Картинки в строках дерева значений по условию (8.3)

В наличии

На мой взгляд, простой и удобный способ добавления картинок в строках дерева значений по условию (да и без условия).

Категория:

Описание

Доброго всем времени! Статья для новичков. Хотел бы выложить на мой взгляд простой и удобный способ добавления картинок в строках Дерева значений по условию. Изложенный вариант будет простым примером навскидку. 

// Элементы.ДеревоОбъектовКартинка.КартинкаЗначений
// ПутьКДаннымКартинкиСтроки и КартинкаСтрок 
// установку по ИндексуКартинки использовать мы не будем

Уже имеем форму, на ней ДеревоЗначений с колонками и реквизитами, а также Вашими процедурами и функциями для заполнения дерева значений. В моем случае эта форма, на которой выводится список Документов и Справочников. 

Итак.

Имеем Реквизит ДеревоОбъектов с типом ДеревоЗначений.

Помимо имеющихся колонок в дереве (если таковые имеются), добавляем колонку с именем Картинка и типом Картинка

Далее если хотим, чтобы Картинка была в одной колонке, например, с Наименованием, необходимо добавить на форму группу колонок, добавляем и помещаем в группу наши колонки. (в моем примере колонки дерева, Картинка и ИдентификаторОбъекта).

Настраиваем группу колонок, чтобы наши две колонки (в данном случае ИдентификаторОбъекта и Картинка) были в одной ячейке

На форме поле Картинки будет следующим, устанавливаем положение заголовка — Нет

Сохраним все наши изменения и запустим на исполнение формирование Вашей процедуры или функции для получения результата. (в моем случае в результате это список документов и справочников). Получим результат без добавления картинок.

Как видим, картинок нет. Все верно, потому что мы настроили только внешнее оформление, теперь добавим сами картинки в строки нашего реквизита ДеревоОбъектов.

Давайте для примера реализуем следующее:

Если тип значения документ (строковый параметр, к примеру равен "Документ"), тогда картинка будет выбираться из стандартной библиотеки картинок — Документ, если Справочник, соответственно картинка справочника, иначе ничего не выводим (в смысле саму картинку не выводим).

Создадим простейшую функцию, которая будет возвращать Картинку из стандартной библиотеки по условию, как описали выше:

&НаСервере
Функция ЗаполнитьКартинкуВСтрокуДерева(УсловноеЗначение = Неопределено) 
	СтроковоеЗначение = Строка(УсловноеЗначение);
	Если СтроковоеЗначение = "Документы" Тогда
		Картинка = БиблиотекаКартинок.Документ;
	ИначеЕсли СтроковоеЗначение = "Справочники" Тогда  
		Картинка = БиблиотекаКартинок.Справочник;
	Иначе
		Картинка = "";
	КонецЕсли;
	
	Возврат Картинка;
КонецФункции

Затем в Вашу Процедуру или функцию, в которой происходит заполнение значениями Дерева значений, добавляем простую строчку (при добавлении строки).

//В данном случае в обработке в значении НовыйОбъект.ИдентификаторОбъекта.Родитель - будет Документы не строкового типа
// далее это значение преобразуется в Строку в Функции ЗаполнитьКартинкуВСтрокуДерева()   

НовыйОбъект = СтрокаДерева.Добавить();
НовыйОбъект.Картинка = ЗаполнитьКартинкуВСтрокуДерева(НовыйОбъект.ИдентификаторОбъекта.Родитель);

При добавлении строки в поле колонки Картинка, которое мы добавляли в ДеревоОбъектов с типом ДеревоЗначений, будет добавлена картинка.

Сохраним все наши изменения и запустим на исполнение формирование Вашей процедуры или функции для получения результата (в моем случае в результате это список документов и справочников). Теперь получим результат с добавленными картинками.

 

Если все описать кратко:

  1. Добавляем в реквизит с типом ДеревоЗначений колонку реквизита с типом Картинка.
  2. Размещаем реквизит колонки на форме
  3. В функции или процедуре при добавлении строк в ДеревоЗначений в свойство реквизита колонки присваиваем картинку.

 

P.S.

Вот вроде бы и все, вроде ничего сложного. Если кому помог, буду рад!

has been added to your cart:
Оформление заказа