Сдвоенные колонки в динамической ТЗ

1. user2101303 24.12.24 13:31 Сейчас в теме
Столкнулся с проблемой, нужно сделать сдвоенные колонки по типу как в картинке, но не получается нормально, можете пожалуйста подсказать как можно это сделать?

Нашёл вариант через массив и добавлением в тз, таблицы формы, но там элементы зависимы от другого столбца получаются
 ТаблицаПолейВыбора = Элементы.Добавить("ТЗН", Тип("ТаблицаФормы"));
    ТаблицаПолейВыбора.ПутьКДанным = "ПредметыЛизинга";
    ТаблицаПолейВыбора.Отображение = ОтображениеТаблицы.Список;
    
        //укажем путь к данным
    Для Каждого Колонка Из ТЗ.Колонки Цикл
        
        //определяем родительский элемент в который добавляется вложенный
        ЭлементГруппа = ТаблицаПолейВыбора;
        //создаем Группу
        ЭлементГруппа = Элементы.Добавить("Группа" + Колонка.Имя, Тип("ГруппаФормы"), ТаблицаПолейВыбора);  
        
        НовыйЭлемент = Элементы.Добавить(Колонка.Имя, Тип("ПолеФормы"), ТаблицаПолейВыбора);       
        НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;
        НовыйЭлемент.ПутьКДанным = "ПредметыЛизинга." + Колонка.Имя;
        НовыйЭлемент.Ширина = 10;
        
        
         Если СтрНайти(Колонка.Имя,"П") = 1 Тогда
            //добавление связанной колонки Цена
            НовыйЭлемент = Элементы.Добавить("КоличествоБП2" + Колонка.Имя, Тип("ПолеФормы"), ЭлементГруппа);       
            НовыйЭлемент.Заголовок = "КоличествоБП2";
            НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;
            НовыйЭлемент.ПутьКДанным = "ПредметыЛизинга." + Колонка.Имя; 
            
            //добавление связанной колонки Количество
            НовыйЭлемент = Элементы.Добавить("КоличествоБП3"+Колонка.Имя, Тип("ПолеФормы"), ЭлементГруппа);       
            НовыйЭлемент.Заголовок = "КоличествоБП3";
            НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;
            НовыйЭлемент.ПутьКДанным = "ПредметыЛизинга." + Колонка.Имя
		КонецЕсли;
    КонецЦикла;
Показать


Можно ли как то более простым способом это сделать? И что бы элементы эти можно было менять независимо от родителя
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
5. user2107191 24.12.24 17:23 Сейчас в теме
(4) Зачем впихивать? Создавай в группе.
Я что, один слепой???
Прикрепленные файлы:
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. anton13m 4 24.12.24 14:56 Сейчас в теме
(1)
Можно ли как то более простым способом это сделать? И что бы элементы эти можно было менять независимо от родителя

Создаете группу с вертикальной группировкой и добавляете в нее нужные колонки.
Проблема-то в чём?
user2101303; +1 Ответить
4. user2101303 24.12.24 17:18 Сейчас в теме
(3) Группу то создать не проблема, как нужным колонкам потом родителя впихнуть, не нашёл)
5. user2107191 24.12.24 17:23 Сейчас в теме
(4) Зачем впихивать? Создавай в группе.
Я что, один слепой???
Прикрепленные файлы:
6. anton13m 4 24.12.24 17:23 Сейчас в теме
(4)
Элементы.Переместить(<Элемент>, <Родитель>, <МестоРасположения>)
user2101303; +1 Ответить
2. user2107191 24.12.24 14:18 Сейчас в теме
Проблема-то в чём?
user2101303; +1 Ответить
7. user2101303 24.12.24 17:43 Сейчас в теме
(2) Прямо говоря я пытаюсь вот в этот код добавить, группу в которую будут входить КоличествоБП2/3
Пытался сделать с кодом который у меня в шапке, но с ним прям туго, как будто рано в такие дебри лезть, поэтому вернулся вновь к этому коду:
ТЗ = Новый ТаблицаЗначений;               
	
	Группа = Элементы.Добавить("Количество",Тип("ГруппаФормы"),Элементы.ПредметыЛизинга);
	Группа.Вид = ВидГруппыФормы.ГруппаКолонок;
	
	ТЗ.Колонки.Добавить("Наименование", ОбщегоНазначения.ОписаниеТипаСтрока(100));
	ТЗ.Колонки.Добавить("КоличествоБП2", ОбщегоНазначения.ОписаниеТипаЧисло(10, 3));
	ТЗ.Колонки.Добавить("КоличествоБП3", ОбщегоНазначения.ОписаниеТипаЧисло(10, 3));
	Элементы.Переместить(КоличествоБП2,Группа,Группа); 
		
	СоздатьТаблицуФормы("ПредметыЛизинга", "ПредметыЛизинга", ТЗ);
Показать
8. user2107191 24.12.24 17:54 Сейчас в теме
9. user2101303 24.12.24 19:12 Сейчас в теме
(8) Разобрался полностью, спасибо, для себя код оставлю на будущее
МассивТипаВыбора = Новый Массив;
	МассивТипаВыбора.Добавить(Тип("ТаблицаЗначений"));
	ОписаниеТипаВыбора = Новый ОписаниеТипов(МассивТипаВыбора);
	МассивРеквизитов = Новый Массив;
	МассивРеквизитов.Добавить(Новый РеквизитФормы("ПредметыЛизинга", ОписаниеТипаВыбора, "", "ТЗН"));
	
	ТЗ = Новый ТаблицаЗначений;               

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

	НовСтр = ТЗ.Добавить();
	НовСтр.Наименование = "Чашки";
	НовСтр.КоличествоБП2 = 6;
	НовСтр.КоличествоБП3 = 2;  
	
	ЭтаФорма.ЗначениеВРеквизитФормы(ТЗ, "ПредметыЛизинга"); 
	
	//УО
	НовыйЭлементУО = УсловноеОформление.Элементы.Добавить();
	ОформлениеЦветФона = НовыйЭлементУО.Оформление.Элементы.Найти("ЦветФона");
	ОформлениеЦветФона.Значение = WebЦвета.ЛососьСветлый;
	ОформлениеЦветФона.Использование = Истина;
	
	НастройкаОтбора = НовыйЭлементУО.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    НастройкаОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ПредметыЛизинга.КоличествоБП2");
	НастройкаОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.НеРавно;
    НастройкаОтбора.ПравоеЗначение = Новый ПолеКомпоновкиДанных("ПредметыЛизинга.КоличествоБП3");
	НастройкаОтбора.Использование = Истина;
	
	//ОформляемоеПоле = НовыйЭлементУО.Поля.Элементы.Добавить();
	//ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("ПредметыЛизингаКоличествоБП2"); 
	//ОформляемоеПоле.Использование = Истина; 
	//
	//ОформляемоеПоле2 = НовыйЭлементУО.Поля.Элементы.Добавить();
	//ОформляемоеПоле2.Поле = Новый ПолеКомпоновкиДанных("ТЗКоличествоБП3"); 
	//ОформляемоеПоле2.Использование = Истина;   
	//
	//ОформляемоеПоле3 = НовыйЭлементУО.Поля.Элементы.Добавить();
	//ОформляемоеПоле3.Поле = Новый ПолеКомпоновкиДанных("ТЗНКоличествоБП3"); 
	//ОформляемоеПоле3.Использование = Истина;  
	//
	ОформляемоеПоле3 = НовыйЭлементУО.Поля.Элементы.Добавить();
	ОформляемоеПоле3.Поле = Новый ПолеКомпоновкиДанных("ТЗН"); 
	ОформляемоеПоле3.Использование = Истина;
Показать
10. user2101303 24.12.24 19:14 Сейчас в теме
(8) сейчас уже голова кипит и думать не хочет, не подскажешь почему УО по полям не хочет работать, а по строке спокойно, интересно просто)
Оставьте свое сообщение

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