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