Волшебная процедура для управляемой формы. Добавляет колонки в табличную часть
&НаСервере Процедура СобратьТаблицуТоваровПоРазмерам(ПоТаблицеТоваров=Истина) БылоКолонок = Макс(ЭтаФорма.Элементы.ТаблицаТоваровПоРазмерам.ПодчиненныеЭлементы.Количество()-4, 0); НадоКолонок = СколькоНадоКолонок(ПоТаблицеТоваров); Если БылоКолонок >= НадоКолонок Тогда Возврат; КонецЕсли; КЧ = Новый КвалификаторыЧисла(7, 3); Массив = Новый Массив; Массив.Добавить(Тип("СправочникСсылка.ХарактеристикиНоменклатуры")); ОписаниеХар = Новый ОписаниеТипов(Массив); Массив.Очистить(); Массив.Добавить(Тип("Число")); ОписаниеКол = Новый ОписаниеТипов(Массив,, КЧ); ДобавляемыеРеквизиты = Новый Массив; Для i=БылоКолонок По НадоКолонок Цикл ИмяЭлемента = "Характеристика_" + Строка(i); НовыйРеквизит = Новый РеквизитФормы(ИмяЭлемента, ОписаниеХар, "ТаблицаТоваровПоРазмерам", "Размер", Истина); ДобавляемыеРеквизиты.Добавить(НовыйРеквизит); ИмяЭлемента = "Количество_" + Строка(i); НовыйРеквизит = Новый РеквизитФормы(ИмяЭлемента, ОписаниеКол, "ТаблицаТоваровПоРазмерам", "Количество", Истина); ДобавляемыеРеквизиты.Добавить(НовыйРеквизит); КонецЦикла; ИзменитьРеквизиты(ДобавляемыеРеквизиты); Попытка ЭтаФорма.Элементы.Удалить(ЭтаФорма.Элементы.ТаблицаТовароПоРазмерамКоличество); ЭтаФорма.Элементы.Удалить(ЭтаФорма.Элементы.ТаблицаТовароПоРазмерамЦена); ЭтаФорма.Элементы.Удалить(ЭтаФорма.Элементы.ТаблицаТовароПоРазмерамСумма); Исключение КонецПопытки; Для i=БылоКолонок По НадоКолонок Цикл ИмяЭлемента = "Группа_" + Строка(i); НовыйЭлементГруппы = ЭтаФорма.Элементы.Добавить(ИмяЭлемента, Тип("ГруппаФормы"), ЭтаФорма.Элементы.ТаблицаТоваровПоРазмерам); НовыйЭлементГруппы.Вид = ВидГруппыФормы.ГруппаКолонок; НовыйЭлементГруппы.Ширина = 20; НовыйЭлементГруппы.РастягиватьПоГоризонтали = Ложь; ИмяЭлемента = "Характеристика_" + Строка(i); НовыйЭлемент = ЭтаФорма.Элементы.Добавить(ИмяЭлемента, Тип("ПолеФормы"), НовыйЭлементГруппы);//ЭтаФорма.Элементы.ТаблицаТоваровПоРазмерам); НовыйЭлемент.ПутьКДанным = "ТаблицаТоваровПоРазмерам." + ИмяЭлемента; НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода; НовыйЭлемент.ТолькоПросмотр = Истина; НовыйЭлемент.ЦветФона = Новый Цвет(255, 239, 213); ИмяЭлемента = "Количество_" + Строка(i); НовыйЭлемент = ЭтаФорма.Элементы.Добавить(ИмяЭлемента, Тип("ПолеФормы"), НовыйЭлементГруппы);//ЭтаФорма.Элементы.ТаблицаТоваровПоРазмерам); НовыйЭлемент.ПутьКДанным = "ТаблицаТоваровПоРазмерам." + ИмяЭлемента; НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода; НовыйЭлемент.УстановитьДействие("ПриИзменении", "ТаблицаТовароПоРазмерамПодключаемыйКоличество"); КонецЦикла; ИмяЭлемента = "ТаблицаТовароПоРазмерамКоличество"; НовыйЭлемент = ЭтаФорма.Элементы.Добавить(ИмяЭлемента, Тип("ПолеФормы"), ЭтаФорма.Элементы.ТаблицаТоваровПоРазмерам); НовыйЭлемент.ПутьКДанным = "ТаблицаТоваровПоРазмерам.Количество"; НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода; НовыйЭлемент.ТолькоПросмотр = Истина; ИмяЭлемента = "ТаблицаТовароПоРазмерамЦена"; НовыйЭлемент = ЭтаФорма.Элементы.Добавить(ИмяЭлемента, Тип("ПолеФормы"), ЭтаФорма.Элементы.ТаблицаТоваровПоРазмерам); НовыйЭлемент.ПутьКДанным = "ТаблицаТоваровПоРазмерам.Цена"; НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода; НовыйЭлемент.ТолькоПросмотр = Истина; ИмяЭлемента = "ТаблицаТовароПоРазмерамСумма"; НовыйЭлемент = ЭтаФорма.Элементы.Добавить(ИмяЭлемента, Тип("ПолеФормы"), ЭтаФорма.Элементы.ТаблицаТоваровПоРазмерам); НовыйЭлемент.ПутьКДанным = "ТаблицаТоваровПоРазмерам.Сумма"; НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода; НовыйЭлемент.ТолькоПросмотр = Истина; КонецПроцедуры