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

1. idw 344 18.01.22 14:08 Сейчас в теме
Здравствуйте. Подскажите пожалуйста как в обычной форме в дерево значений добавить колонку с выбором двух текстовых значений?

Я делаю так (выгружаю запрос и добавляю один флажок):

ЭлементыФормы.Дерево.Значение = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
ДеревоЗначений.Колонки.Добавить("Флажок",Новый ОписаниеТипов("Булево"),"Флаг");

ЭлементыФормы.Дерево.Колонки.Флажок.Ширина = 5;
ЭлементыФормы.Дерево.Колонки.Флажок.ДанныеФлажка = "Флажок";
ЭлементыФормы.Дерево.Колонки.Флажок.Данные = Ложь;
ЭлементыФормы.Дерево.Колонки.Флажок.ТолькоПросмотр = Ложь;
ЭлементыФормы.Дерево.Колонки.Флажок.РежимРедактирования = РежимРедактированияКолонки.Непосредственно;
ЭлементыФормы.Дерево.Колонки.Флажок.УстановитьЭлементУправления(Тип("Флажок"));


Но нужна еще колнка с выбором двух видов документа.
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
23. user1203706 13 19.01.22 12:18 Сейчас в теме +0.5 $m
(20)
лови
Прикрепленные файлы:
Дерево.epf
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. gibi 7 18.01.22 14:31 Сейчас в теме
НовыйТип = Новый Массив;
НовыйТип.Добавить(Тип("ДокументСсылка.РеализацияТоваровУслуг"));
НовыйТип.Добавить(Тип("ДокументСсылка.ПоступлениеТоваровУслуг"));

ДеревоЗначений.Колонки.Добавить("НоваяКолонка",Новый ОписаниеТипов(НовыйТип));
Это для создания 2 типов в одной колонке.

Добавить колонку с выбором двух текстовых значений:
ДеревоЗначений.Колонки.Добавить("КолонкаСтрока",Новый ОписаниеТипов("Строка"));

А на форме в свойствах этой колонки поставить галку РежимВыбораИзСписка = истина. И Добавить текстовые значения в СписокВыбора (тоже в свойствах колонки)
3. idw 344 18.01.22 16:53 Сейчас в теме
(2) не найду в свойствах колонки РежимВыбораИзСписка .
Например у просто элемента формы Поле ввода есть это свойство, а у колонки нет.
4. idw 344 18.01.22 16:59 Сейчас в теме
Это свойство у поля ввода: https://prnt.sc/26f6k8z
Это у колонки: https://prnt.sc/26f6kmr
5. idw 344 18.01.22 17:06 Сейчас в теме
Сделал так:

ЭлементыФормы.Дерево.Значение = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);

НовыйТип = Новый Массив;
НовыйТип.Добавить(Тип("ДокументСсылка.ПриходныйКассовыйОрдер"));
НовыйТип.Добавить(Тип("ДокументСсылка.РасходныйКассовыйОрдер"));
ДеревоЗначений.Колонки.Добавить("ВидДок",Новый ОписаниеТипов(НовыйТип),"Вид документа");

ЭлементыФормы.Дерево.Колонки.ВидДок.Ширина = 25;
ЭлементыФормы.Дерево.Колонки.ВидДок.Данные = Ложь;
ЭлементыФормы.Дерево.Колонки.ВидДок.ТолькоПросмотр = Ложь;
ЭлементыФормы.Дерево.Колонки.ВидДок.РежимРедактирования = РежимРедактированияКолонки.Непосредственно;
ЭлементыФормы.Дерево.Колонки.ВидДок.УстановитьЭлементУправления(Тип("ПолеВвода"));
//ЭлементыФормы.Дерево.Колонки.ВидДок.РежимВыбораИзСписка = Истина;

В результате просто пустая колонка без выбора, просто поле ввода.
6. user1203706 13 18.01.22 18:23 Сейчас в теме
(1)


ЗЫ: значения списка можно, любые подставить, на вкус, если что
7. user1203706 13 18.01.22 18:55 Сейчас в теме
И для красоты, режим редактирования - непосредственно + сынять галки с редактировать текст
8. idw 344 18.01.22 22:18 Сейчас в теме
(6) А как программно это сделать?
У меня дерево выгружается на форму и затирает все колонки. Затем я программно добавляю нужные.
9. idw 344 18.01.22 22:36 Сейчас в теме
Пробую так, выдает ошибку:

СЗ = Новый СписокЗначений;
СЗ.Добавить("ПриходныйКассовыйОрдер");
СЗ.Добавить("РасходныйКассовыйОрдер");

ЭлементыФормы.Дерево.Колонки.ВидДок.Ширина = 25;
ЭлементыФормы.Дерево.Колонки.ВидДок.Данные = Ложь;
ЭлементыФормы.Дерево.Колонки.ВидДок.ТолькоПросмотр = Ложь;
ЭлементыФормы.Дерево.Колонки.ВидДок.РежимРедактирования = РежимРедактированияКолонки.Непосредственно;
ЭлементыФормы.Дерево.Колонки.ВидДок.УстановитьЭлементУправления(Тип("ПолеВыбора"));
ЭлементыФормы.Дерево.Колонки.ВидДок.СписокВыбора=СЗ;

Поле объекта не обнаружено (СписокВыбора )
10. user1203706 13 18.01.22 23:00 Сейчас в теме
(8) а зачем ? Если колонки не динамические, ну т.е их количество всегда известно, то задай их интерактивно на форме, установи все свойства, картинки там, прочие украшательства, а потом в коде заполни дерево:

Дерево = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);


усё.

ЗЫ: можешь еще такую хрень после заполнения вызвать:

РазвернутьСвернутьДерево("Дерево");


Процедура РазвернутьСвернутьДерево(ИмяЭлементаФормы)
	Если РазвернутьДерево Тогда
		ЭлементыФормы[ИмяЭлементаФормы].НачальноеОтображениеДерева = НачальноеОтображениеДерева.РаскрыватьВерхнийУровень;
	Иначе
		ЭлементыФормы[ИмяЭлементаФормы].НачальноеОтображениеДерева = НачальноеОтображениеДерева.НеРаскрывать;
	КонецЕсли;		
КонецПроцедуры
11. idw 344 19.01.22 11:52 Сейчас в теме
(10)
Дерево = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);


Не заполняет так дерево на форме: накидал на форме в дерево колонок, сделал как выше, но всё пусто.
12. Максим-777 55 19.01.22 11:57 Сейчас в теме
(11)

Может потом так сделать?

ЭлементыФормы.Дерево.СоздатьКолонки()
14. idw 344 19.01.22 12:01 Сейчас в теме
(12)
ЭлементыФормы.Дерево.СоздатьКолонки()


пусто.
Сделал так:

Дерево = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
ЭлементыФормы.Дерево.СоздатьКолонки();


У меня вот так работает:

ЭлементыФормы.Дерево.Значение = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
ЭлементыФормы.Дерево.СоздатьКолонки();

Но колонки на форме затерает, которых нет в запросе, приходится потом программно добавлять.
21. Максим-777 55 19.01.22 12:06 Сейчас в теме
(14)


Дерево = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
ЭлементыФормы.Дерево.СоздатьКолонки();


Так не получилось, видимо, потому что имя Реквизита формы и имя Элемента формы отличаются.
Тогда нужно было так:

ДеревоЗначений = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
ЭлементыФормы.Дерево.СоздатьКолонки();
25. Максим-777 55 19.01.22 12:21 Сейчас в теме
(21)

Отвечу сам себе)

Мне видится всё так:

ДеревоЗначений = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
ЭлементыФормы.Дерево.СоздатьКолонки();

ДеревоЗначений.Колонки.Добавить("Документ", Новый ОписаниеТипов("Строка"));

СЗ = Новый СписокЗначений;
СЗ.Добавить("ПриходныйКассовыйОрдер");
СЗ.Добавить("РасходныйКассовыйОрдер"); 	

Новая = ЭлементыФормы.Дерево.Колонки.Добавить("Документ");
Новая.Данные = "Документ";
Новая.УстановитьЭлементУправления(Тип("ПолеВыбора"));
Новая.ЭлементУправления.СписокВыбора = СЗ;

Показать
13. user1203706 13 19.01.22 12:00 Сейчас в теме
(11) Идентификаторы колонок на форме совпадают с данными запроса ?

(12) не надо так делать, так на форме перетрутся интерактивно созданные колонки в пофигураторе.
15. idw 344 19.01.22 12:02 Сейчас в теме
(13)
Идентификаторы колонок на форме совпадают с данными запроса ?

создал колонки по данным из запроса.

Но переменная "Дерево" - имя табличного поля тип ДеревоЗначений, брошенная на форму.
16. user1203706 13 19.01.22 12:03 Сейчас в теме
(15)

ЭлементыФормы.Дерево.ОбновитьСтроки()
17. user1203706 13 19.01.22 12:04 Сейчас в теме
И типы колонок, совпадают с данными запроса ?
19. idw 344 19.01.22 12:05 Сейчас в теме
(17)
И типы колонок, совпадают с данными запроса ?

имена, типы, все совпадает.

Сделал так
Дерево = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
	ЭлементыФормы.Дерево.ОбновитьСтроки();

пусто.
18. user1203706 13 19.01.22 12:05 Сейчас в теме
Могу пример кинуть, если что.
20. idw 344 19.01.22 12:06 Сейчас в теме
(18)
Могу пример кинуть, если что.

если можно)
22. idw 344 19.01.22 12:08 Сейчас в теме
23. user1203706 13 19.01.22 12:18 Сейчас в теме +0.5 $m
(20)
лови
Прикрепленные файлы:
Дерево.epf
29. idw 344 19.01.22 14:10 Сейчас в теме
(23)
Спасибо сделал по аналогии, но у вас там есть колонка Колонка1 из СпискаЗначений: Вася и Федя )
При выборе этого значения, оно не сохранятся в колонке.
24. user1203706 13 19.01.22 12:20 Сейчас в теме
(22) :)))))))))))

//Дерево = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
ДеревоЗначений = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
    ЭлементыФормы.Дерево.ОбновитьСтроки();
26. idw 344 19.01.22 13:13 Сейчас в теме
(24)
ДеревоЗначений = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
ЭлементыФормы.Дерево.ОбновитьСтроки();

сделал так, выводит в просто таблицу без дерева.
А в вашей обработке все нормально. Странно.

http://prnt.sc/26fmit1
27. idw 344 19.01.22 13:14 Сейчас в теме
А если так:
ДеревоЗначений = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
ЭлементыФормы.Дерево.СоздатьКолонки();


то выводит дерево, но нет колонок, которых добавил вручную: нет в запросе.
28. idw 344 19.01.22 13:34 Сейчас в теме
Разобрался, нужна еще в колонках галка "Отображать иерархию"
30. idw 344 19.01.22 14:24 Сейчас в теме
(23) еще выяснилась проблема:
если перебрать дерево, то колонки Пометка, Результат в вашей обработке и у меня имеют тип NULL,
хотя галки стоят.

Тут я добавил процедуру перебора, чтобы посмотреть.
Прикрепленные файлы:
Дерево.epf
31. user1203706 13 19.01.22 14:35 Сейчас в теме
(30) Там же общие итоги, если ты так обходишь, то еще ниже на уровень будет твоя пометка.
Если Тебе Пометка нужна на всех Уровнях дерева, то в Итоги добавь так, хотя бы
|ИТОГИ
	               |	СУММА(Сумма),
	               |	МАКСИМУМ(Пометка) как Пометка


Ну и общие итоги, можешь выкинуть ,если не нужны..это просто пример
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот