Имя: Пароль:
1C
1С v8
Указать разных родителей у колонок
0 Alex562035
 
06.08.21
10:30
Всем, Привет, создаю таблицу при клике по кнопке, но у меня есть проблема при заполнении создавшихся колонок Цена, Количество и Комментарий. Каждая колонка взаимосвязана с другой т.е если заполнить одну Цена, автоматически заполнится и другая таким же значением. Кажется я понимаю, что нужно указать разных родителей, но не знаю как правильно это сделать, для моих созданных полей.


&НаСервере
Процедура СозданиеТаблицыНаСервере()
    
    МассивТипаВыбора = Новый Массив;
    МассивТаблицыЗначений = Новый Массив;
    МассивРеквизитов = Новый Массив;
    ОписаниеТипаВыбора = Новый ОписаниеТипов("ТаблицаЗначений");
    МассивТаблицыЗначений.Добавить(Новый РеквизитФормы("Список", ОписаниеТипаВыбора, "", "ТЗН"));
    ИзменитьРеквизиты(МассивТаблицыЗначений);    
    
    
    
    ТЗ = Новый ТаблицаЗначений;
    ТЗ.Колонки.Добавить("Товар", Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
    ТЗ.Колонки.Добавить("П1");
    ТЗ.Колонки.Добавить("П2");
    ТЗ.Колонки.Добавить("П3");
    ТЗ.Колонки.Добавить("Цена", Новый ОписаниеТипов("Число"));
    ТЗ.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число"));
    ТЗ.Колонки.Добавить("Комментарий", Новый ОписаниеТипов("Строка"));
        
        
    Для Каждого Колонка Из ТЗ.Колонки Цикл
        МассивРеквизитов.Добавить(Новый РеквизитФормы(Колонка.Имя, Колонка.ТипЗначения,"Список."));    
    КонецЦикла;
    
    ИзменитьРеквизиты(МассивРеквизитов);      
    ТаблицаПолейВыбора = Элементы.Добавить("ТЗН", Тип("ТаблицаФормы"), ЭтаФорма);
    ТаблицаПолейВыбора.ПутьКДанным = "Список";
    ТаблицаПолейВыбора.Отображение = ОтображениеТаблицы.Список;
    
    Сч = 0;
    Для Каждого Колонка Из ТЗ.Колонки Цикл
        
        Сч = Сч + 1;
        
        Если Колонка.Имя = "Товар" Тогда
            ДобавитьНовыйЭлемент(Колонка.Имя, Тип("ПолеФормы"),ТаблицаПолейВыбора, "Список." + Колонка.Имя);
        КонецЕсли;
        
        Если Колонка.Имя = "П1" ИЛИ Колонка.Имя = "П2" ИЛИ Колонка.Имя = "П3" Тогда
            ИмяСтаршейГруппы = Колонка.Имя + "Группа";
            ДобавитьГруппу(ИмяСтаршейГруппы, Тип("ГруппаФормы"), ТаблицаПолейВыбора);
            
            //ДобавитьНовыйЭлемент(Колонка.Имя,Тип("ПолеФормы"),Элементы[Колонка.Имя + "Группа"],"Список." + Колонка.Имя);
            
            ИмяМладшейГруппы = "ГруппаКолонок" + Колонка.Имя;
            ДобавитьГруппу(ИмяМладшейГруппы, Тип("ГруппаФормы"), Элементы[ИмяСтаршейГруппы]);
            ДобавитьНовыйЭлемент(Колонка.Имя + "Цена", Тип("ПолеФормы"), Элементы[ИмяМладшейГруппы], "Список.Цена");
            ДобавитьНовыйЭлемент(Колонка.Имя + "Количество", Тип("ПолеФормы"), Элементы[ИмяМладшейГруппы], "Список.Количество");
            ДобавитьНовыйЭлемент(Колонка.Имя + "Комментарий", Тип("ПолеФормы"), Элементы[ИмяМладшейГруппы], "Список.Комментарий");
            Элементы[ИмяМладшейГруппы].Группировка = ГруппировкаКолонок.Горизонтальная;
            Элементы[ИмяМладшейГруппы].ОтображатьВШапке = Истина;
            
        КонецЕсли;
    КонецЦикла;
    
    
   // ТаблицаПолейВыбора.УстановитьДействие("Выбор","ТЗНВыбор");

КонецПроцедуры

Процедура ДобавитьГруппу(Имя, Тип, Родитель)
    
    НовыйЭлемент = Элементы.Добавить(Имя, Тип, Родитель);
    НовыйЭлемент.Вид = ВидГруппыФормы.ГруппаКолонок;
    
КонецПроцедуры

Процедура ДобавитьНовыйЭлемент(Имя, Тип, Родитель, ПутьКДанным)

    НовыйЭлемент = Элементы.Добавить(Имя, Тип, Родитель);      
    НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;
    НовыйЭлемент.ПутьКДанным = ПутьКДанным;    
КонецПроцедуры

1 DrShad
 
06.08.21
10:39
Переместить(<Элемент>, <Родитель>, <МестоРасположения>)
AdBlock убивает бесплатный контент. 1Сергей