Имя: Пароль:
1C
1С v8
Программно создать группы конолок и колонки на форме
0 sprinter83
 
18.09.12
17:10
Доброго времени суток.
Ни как ни могу понять в чём дело, помогите пожалуйста разобраться.

Суть дела: есть форма справочника, в ней есть таблица "ТаблицаРедактирования" нужно в эту таблицу программно добавить Колонки и разместить их в определённые группы колонок, которые также создаются программно.

Пишу следующий код

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

// здесь всё отрабатывается правильно, в ТаблицаРедактирования добавляются новые ГруппыКолонок

// Добавляем реквизиты Формы
   
   МассивРеквизитов = Новый Массив;
   
   ТипыРеквизита = Новый Массив;
   ТипыРеквизита.Добавить(Тип("Число"));
   ОписаниеТиповДляРеквизита = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(20, 4));
   
   Сч = 1;
       Для Каждого ТекНастройка из ТЗНастройкиКолонок Цикл
       
       НовыйРеквизит = Новый РеквизитФормы("Значение" + Формат(Сч, "ЧЦ=3; ЧВН=; ЧГ="),
       ОписаниеТиповДляРеквизита,
       "ТаблицаРедактирования",
       "Значение" + Формат(Сч, "ЧЦ=3; ЧВН=; ЧГ="),
       Истина);
       
       Сч = Сч + 1;
       
       МассивРеквизитов.Добавить(НовыйРеквизит);
       
   КонецЦикла;
   
   ИзменитьРеквизиты(МассивРеквизитов);
//Данный участок кода также отрабатывается без ошибок

// Добавляем колонки на форму
   
   Для Сч = 1 по ВсегоРасчетов Цикл
       
       Если НЕ ТЗНастройкиКолонок[Сч - 1].Группировка = "" Тогда
           РодительЭлемента    = СоответствиеИменГруппировок[ТЗНастройкиКолонок[Сч - 1].Группировка];
       Иначе
           РодительЭлемента = Элементы.ТаблицаРедактирования;    
       КонецЕсли;

       
       НовыйЭлемент = Элементы.Добавить("ТаблицаРедактированияЗначение" + Формат(Сч, "ЧЦ=3; ЧВН=; ЧГ="),
       Тип("ПолеФормы"), РодительЭлемента); // на этой строчке система начинает ругаться (Не допустимое значение параметров)
       
       НовыйЭлемент.ПутьКДанным = "ТаблицаРедактирования.Значение" + Формат(Сч, "ЧЦ=3; ЧВН=; ЧГ=");
       НовыйЭлемент.Вид         = ВидПоляФормы.ПолеВвода;
       НовыйЭлемент.Заголовок   = "" + ТЗНастройкиКолонок[Сч - 1].НаименованиеКолонки;
       
   КонецЦикла;

//////////////////////////////////////////

При создании новых группировок колонок и реквизитов формы проблем не возникает. Ошибка выдаётся при попытке добавления в форму колонок
в строчке

       НовыйЭлемент = Элементы.Добавить("ТаблицаРедактированияЗначение" + Формат(Сч, "ЧЦ=3; ЧВН=; ЧГ="),
       Тип("ПолеФормы"), РодительЭлемента); // на этой строчке система начинает ругаться (Не допустимое значение параметров)

При чём если в качестве РодительЭлемента указан путь Элементы.ТаблицаРедактирования, то всё отлично добавляется, но при этом естественно колонки добавляются непосредственно в таблицу, а нужно чтобы добавлялись в нужную группировку колонки.

Не совсем ясно в чём ошибка: в описании метода Добавить видим что третий параметр может быть
<Родитель> (необязательный)

Тип: ГруппаФормы; ТаблицаФормы; УправляемаяФорма.
Родитель для добавляемого элемента.
Если не указан, то добавляется на верхний уровень.
При этом РодительЭлемента является именно ГруппойФормы, т.е. по типу абсолютно подходит. А в чём ошибке не ясно.
1 sprinter83
 
18.09.12
17:56
Проблема устранена, всё негодные очепятки виноваты ))
При создании новой группы я указывал вид группы формы ГруппаКнопок, а нужно ГруппаКолонок :)
Естественно система не могла поместить Поле формы в Группу кнопок.
Т.е. в место
НовыйЭлемент.Вид = ВидГруппыФормы.ГруппаКнопок;
Нужно
НовыйЭлемент.Вид = ВидГруппыФормы.ГруппаКолонок;