Доброго всем времени! Статья для новичков. Хотел бы выложить на мой взгляд простой и удобный способ добавления картинок в строках Дерева значений по условию. Изложенный вариант будет простым примером навскидку.
// Элементы.ДеревоОбъектовКартинка.КартинкаЗначений
// ПутьКДаннымКартинкиСтроки и КартинкаСтрок 
// установку по ИндексуКартинки использовать мы не будем
Уже имеем форму, на ней ДеревоЗначений с колонками и реквизитами, а также Вашими процедурами и функциями для заполнения дерева значений. В моем случае эта форма, на которой выводится список Документов и Справочников.
Итак.
Имеем Реквизит ДеревоОбъектов с типом ДеревоЗначений.

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

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

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

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

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


Как видим, картинок нет. Все верно, потому что мы настроили только внешнее оформление, теперь добавим сами картинки в строки нашего реквизита ДеревоОбъектов.
Давайте для примера реализуем следующее:
Если тип значения документ (строковый параметр, к примеру равен "Документ"), тогда картинка будет выбираться из стандартной библиотеки картинок - Документ, если Справочник, соответственно картинка справочника, иначе ничего не выводим (в смысле саму картинку не выводим).
Создадим простейшую функцию, которая будет возвращать Картинку из стандартной библиотеки по условию, как описали выше:
&НаСервере
Функция ЗаполнитьКартинкуВСтрокуДерева(УсловноеЗначение = Неопределено) 
	СтроковоеЗначение = Строка(УсловноеЗначение);
	Если СтроковоеЗначение = "Документы" Тогда
		Картинка = БиблиотекаКартинок.Документ;
	ИначеЕсли СтроковоеЗначение = "Справочники" Тогда  
		Картинка = БиблиотекаКартинок.Справочник;
	Иначе
		Картинка = "";
	КонецЕсли;
	
	Возврат Картинка;
КонецФункции
Затем в Вашу Процедуру или функцию, в которой происходит заполнение значениями Дерева значений, добавляем простую строчку (при добавлении строки).
//В данном случае в обработке в значении НовыйОбъект.ИдентификаторОбъекта.Родитель - будет Документы не строкового типа
// далее это значение преобразуется в Строку в Функции ЗаполнитьКартинкуВСтрокуДерева()   
НовыйОбъект = СтрокаДерева.Добавить();
НовыйОбъект.Картинка = ЗаполнитьКартинкуВСтрокуДерева(НовыйОбъект.ИдентификаторОбъекта.Родитель);
При добавлении строки в поле колонки Картинка, которое мы добавляли в ДеревоОбъектов с типом ДеревоЗначений, будет добавлена картинка.
Сохраним все наши изменения и запустим на исполнение формирование Вашей процедуры или функции для получения результата (в моем случае в результате это список документов и справочников). Теперь получим результат с добавленными картинками.



Если все описать кратко:
- Добавляем в реквизит с типом ДеревоЗначений колонку реквизита с типом Картинка.
- Размещаем реквизит колонки на форме
- В функции или процедуре при добавлении строк в ДеревоЗначений в свойство реквизита колонки присваиваем картинку.
P.S.
Вот вроде бы и все, вроде ничего сложного. Если кому помог, буду рад!
Вступайте в нашу телеграмм-группу Инфостарт
 
                                     
                                     
                                     
                                     
                                     
                                     
                                     
                                     
                                     
                                     
                                    