Имя: Пароль:
1C
1С v8
ОФ. Программно создать дерево значений
, ,
0 withoutname
 
04.12.19
14:31
Подскажите алгоритм программного создания Дерева значений на обычных формах
1 kda26
 
04.12.19
14:47
(0) рекурсией
2 Ёпрст
 
04.12.19
14:58
Выгрузи из запроса.
3 withoutname
 
04.12.19
15:26
Реквизит формы обязательно создавать?
4 withoutname
 
04.12.19
15:29
(2) изначально вручную заполняется
5 vicof
 
04.12.19
15:30
Казалось бы, как связаны дерево значений и вид форм.
6 withoutname
 
04.12.19
15:32
(5) программно реквизит на обычной форме можно как то создать?
7 Fish
 
04.12.19
15:42
(6) Можно. А что не получается? Показывай свой код.
8 withoutname
 
04.12.19
15:49
(7) в том то и дело, нигде не могу найти примера кода для программного создания реквизита обычной формы
9 Fish
 
04.12.19
15:55
(8) А поиском пробовал пользоваться? Навскидку: https://1clenta.ru/pattern/221
10 Fish
 
04.12.19
15:56
+(9) Точнее реквизит создать не получится, а вот элемент - да. Немного невнимателен был.
11 Ник080808
 
04.12.19
15:57
(10) а зачем реквизит создавать, если можно создать экспортную переменную в модуле объекта и впихнуть в нее дерево.
12 Ник080808
 
04.12.19
15:57
(0) ты задачу опиши, бо вообще не понятно что ты создавать собрался
13 withoutname
 
04.12.19
16:21
(12) На форме нужно сделать дерево (желательно программно), с возможностью его сохранения в ТЧ документа (с этим проблем нет)

    СтраницаСмета = ЭлементыФормы.ОсновнаяПанель.Страницы.Добавить("НоменклатураСМР", "Номенклатура СМР");
    ЭлементыФормы.ОсновнаяПанель.ТекущаяСтраница = ЭлементыФормы.ОсновнаяПанель.Страницы.НоменклатураСМР;

    ТабличноеПоле = ЭлементыФормы.Добавить(Тип("ТабличноеПоле"), "юскДЗНоменклатураСМР", Истина, ЭлементыФормы.ОсновнаяПанель);
    ТабличноеПоле.ТипЗначения = Новый ОписаниеТипов("ДеревоЗначений");
    ТабличноеПоле.Верх = 24;
    ТабличноеПоле.Высота = 244;
    ТабличноеПоле.Ширина = 915;
    ТабличноеПоле.Лево = 6;
    ТабличноеПоле.Доступность = Истина;
    ТабличноеПоле.АвтоВводНовойСтроки = Ложь;
    ТабличноеПоле.АвтоКонтекстноеМеню = Истина;
    ТабличноеПоле.ТолькоПросмотр = Ложь;
    ТабличноеПоле.УстановитьПривязку(ГраницаЭлементаУправления.Верх,ЭтаФорма.Панель,ГраницаЭлементаУправления.Верх);
    ТабличноеПоле.УстановитьПривязку(ГраницаЭлементаУправления.Низ,ЭтаФорма.Панель,ГраницаЭлементаУправления.Низ);
    ТабличноеПоле.УстановитьПривязку(ГраницаЭлементаУправления.Лево,ЭтаФорма.Панель,ГраницаЭлементаУправления.Лево);
    ТабличноеПоле.УстановитьПривязку(ГраницаЭлементаУправления.Право,ЭтаФорма.Панель,ГраницаЭлементаУправления.Право);
    
    Колонка = ТабличноеПоле.Колонки.Добавить("Номенклатура");
    Колонка.ОтображатьИерархию = Истина;
    Колонка.УстановитьЭлементУправления(Тип("ПолеВвода"));


элемент формы создается, но при попытке ввода написанный текст не отображается в строке, только при редактировании...

потом это ДЗ нужно сохранить в ТЧ документа
14 withoutname
 
04.12.19
17:03
(11) а как в этом случае отобразить дерево?

я так понимаю Реквизит формы придется создавать ручками, без него не отобразишь дерево....
15 Ник080808
 
04.12.19
18:34
(14) таки да. добавляешь ручками реквизит формы с типом значения дерево и прописываешь его программно в табличное поле
16 pechkin
 
04.12.19
18:36
ты не заполняешь реквизит "Данные" для колонки
17 withoutname
 
05.12.19
11:40
(15) понятно, спасибо
А как программно для колонки ДЗ указать Связи параметров выбора?
18 withoutname
 
05.12.19
14:17
шайтан машина... )
19 withoutname
 
05.12.19
15:14
Вот что надо сделать :)

Для колонки нужно указать Действие НачалоВыбора
Колонка = ЭлементыФормы.юскДЗНоменклатураСМР.Колонки.ЕдиницаИзмеренияМест;
Колонка.ЭлементУправления.УстановитьДействие("НачалоВыбора", Новый Действие("юскДЗНоменклатураСМР_ЕдиницаХранения_НачалоВыбора"));


и создать процедуру
Процедура юскДЗНоменклатураСМР_ЕдиницаХранения_НачалоВыбора(Элемент, СтандартнаяОбработка)
    
    ТекущиеДанные = ЭлементыФормы.юскДЗНоменклатураСМР.ТекущиеДанные;
    Если ТекущиеДанные <> Неопределено Тогда
        Элемент.ВыборПоВладельцу = ТекущиеДанные.Номенклатура;
    КонецЕсли;
    
КонецПроцедуры