Добрый день!
Столкнулся с проблемой, кто знает есть ли такая вообще возможность добавить ТЧ на форму програмно.
С реквизитами не было проблем, а вот насчет ТЧ документа встал тупик.
Сперва создал объект(методаные) ТЧ "Услуга", хочу вывести это ТЧ на форму программно
Помогите буду благодарен

```1c
    ИмяГруппы = "СтраницаУслуги";
    НоваяГруппа = ЭтаФорма.Элементы.Добавить(ИмяГруппы, Тип("ГруппаФормы"),Элементы.ГруппаСтраницы);

    ТаблицаУслуги = Элементы.Добавить("УСТ_Услуги", Тип("ТабличноеПоле"), НоваяГруппа);
```

P/s Тип("ТаблицыФормы") тоже пробовал не помогает(
---
В объекте документа создана ТЧ "УСТ_Услуги"
А в шапке темы указано: Сперва создал объект(методаные) ТЧ "Услуга",
Тогда код будет таким:

```1c
    ИмяГруппы = "СтраницаУслуги";
    НоваяГруппа = ЭтаФорма.Элементы.Добавить(ИмяГруппы, Тип("ГруппаФормы"),Элементы.ГруппаСтраницы);
    НоваяГруппа.Вид = ВидГруппыФормы.Страница;
    НоваяГруппа.Заголовок = "Услуги";

    ТаблицаУслуги = Элементы.Добавить("УСТ_Услуги", Тип("ТаблицаФормы"), НоваяГруппа);
    ТаблицаУслуги.ПутьКДанным = "Объект.УСТ_Услуги";

    ЭлементТаблицыФормы = Элементы.Добавить("УСТ_УслугиНоменклатура", Тип("ПолеФормы"),ТаблицаУслуги);
    ЭлементТаблицыФормы.Вид = ВидПоляФормы.ПолеВвода;
    ЭлементТаблицыФормы.ПутьКДанным = "Объект.УСТ_Услуги.Номенклатура";
```
---
правильно будет ТаблицаФормы.
ПутьКДанным не установлено. И каждую колонку для отображения нужно так же выводить.

```1c
    ИмяГруппы = "СтраницаУслуги";
    НоваяГруппа = ЭтаФорма.Элементы.Добавить(ИмяГруппы, Тип("ГруппаФормы"),Элементы.ГруппаСтраницы);
    НоваяГруппа.Вид = ВидГруппыФормы.Страница;
    НоваяГруппа.Заголовок = "Услуги";

    ТаблицаУслуги = Элементы.Добавить("УСТ_Услуги", Тип("ТаблицаФормы"), НоваяГруппа);
    ТаблицаУслуги.ПутьКДанным = "Объект.Услуга";

    ЭлементТаблицыФормы = Элементы.Добавить("УСТ_УслугиНоменклатура", Тип("ПолеФормы"),ТаблицаУслуги);
    ЭлементТаблицыФормы.Вид = ВидПоляФормы.ПолеВвода;
    ЭлементТаблицыФормы.ПутьКДанным = "Объект.Услуга.Номенклатура";
```
---
Ругается сделал точно так как вы описали
"ТаблицаУслуги = Элементы.Добавить("УСТ_Услуги", Тип("ТаблицаФормы"), НоваяГруппа);" ошибка выскакивает на этой строке

Недопустимое значение параметров
{Отчет Документ.ОтчетКомитенту.Форма.ФормаДокумента.Форма(25)}: ТаблицаУслуги = Элементы.Добавить("УСТ_Услуги", Тип("ТаблицаФормы"), НоваяГруппа);

по причине:
Недопустимое значение параметров
---
а элемента с "УСТ_Услуги" ранее не создано? Где выполняется этот код? Повторное выполнение возможно?
---
В объекте документа создана ТЧ "УСТ_Услуги", сам код выполняется в расширении в процедуре ПриСозданияНаСервере(). Выполняется только один раз
---
В объекте документа создана ТЧ "УСТ_Услуги"
А в шапке темы указано: Сперва создал объект(методаные) ТЧ "Услуга",
Тогда код будет таким:

```1c
    ИмяГруппы = "СтраницаУслуги";
    НоваяГруппа = ЭтаФорма.Элементы.Добавить(ИмяГруппы, Тип("ГруппаФормы"),Элементы.ГруппаСтраницы);
    НоваяГруппа.Вид = ВидГруппыФормы.Страница;
    НоваяГруппа.Заголовок = "Услуги";

    ТаблицаУслуги = Элементы.Добавить("УСТ_Услуги", Тип("ТаблицаФормы"), НоваяГруппа);
    ТаблицаУслуги.ПутьКДанным = "Объект.УСТ_Услуги";

    ЭлементТаблицыФормы = Элементы.Добавить("УСТ_УслугиНоменклатура", Тип("ПолеФормы"),ТаблицаУслуги);
    ЭлементТаблицыФормы.Вид = ВидПоляФормы.ПолеВвода;
    ЭлементТаблицыФормы.ПутьКДанным = "Объект.УСТ_Услуги.Номенклатура";
```
---
ИмяГруппы = "СтраницаУслуги";
НоваяГруппа = ЭтаФорма.Элементы.Добавить(ИмяГруппы, Тип("ГруппаФормы"),Элементы.ГруппаСтраницы);
НоваяГруппа.Вид = ВидГруппыФормы.Страница;
НоваяГруппа.Заголовок = "Услуги";

ТаблицаУслуги = Элементы.Добавить("УСТ_Услуги", Тип("ТаблицаФормы"), НоваяГруппа);
ТаблицаУслуги.ПутьКДанным = "Объект.УСТ_Услуги";

ЭлементТаблицыФормы = Элементы.Добавить("УСТ_УслугиНоменклатура", Тип("ПолеФормы"),ТаблицаУслуги);
ЭлементТаблицыФормы.Вид = ВидПоляФормы.ПолеВвода;
ЭлементТаблицыФормы.ПутьКДанным = "Объект.УСТ_Услуги.Номенклатура";
(9) Спасибо помогло я так и сделал изначально, просто нужно было еще галку поставить в нужном месте в расширении, Но ваше решение мне помогло)
---
самое простое найти обработку ФормаАдминистратора и все из нее передрать (скопировать)

вот, не знаю, поможет ли вам такой пример кода (как раз из нее)

```1c
    Если мДобРеквизитов.Количество() > 0 Тогда
    //Есть табличные части, строим их отображение

    ИзменитьРеквизиты(мДобРеквизитов);

    Для Каждого лкСтр Из мОбъектМД.ТабличныеЧасти Цикл
    лкЗакладкаТЧ = "Закладка" + лкСтр.Имя;
    лкИмяТЧ = "тч" + лкСтр.Имя;

    лкНоваяСтраница = Элементы.Добавить(лкЗакладкаТЧ, Тип("группаформы"),Элементы.ГруппаСтраницы);
    лкНоваяСтраница.Заголовок = лкСтр.Имя;
    лкНоваяСтраница.Картинка = БиблиотекаКартинок.ВложеннаяТаблица;

    //затем настраиваем элементы формы
    //ЭлементыФормы.Панель.ТекущаяСтраница = лкНоваяСтраница;
    лкНоваяТаблица = Элементы.Добавить(лкИмяТЧ, Тип("ТаблицаФормы"), лкНоваяСтраница);
    лкНоваяТаблица.ПутьКДанным = лкИмяТЧ;
    лкНоваяТаблица.Отображение = ОтображениеТаблицы.Список;
    //лкНоваяТаблица.ТолькоПросмотр = Истина;
    лкНоваяТаблица.ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиЭлементаФормы.Нет;

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

    КонецЦикла;

    ЗначениеВРеквизитФормы(Ссылка[лкСтр.Имя].выгрузить(), лкИмяТЧ);

    //***** Назначим обработчик событий
    //лкНоваяТаблица.УстановитьДействие("ПриНачалеРедактирования",Новый Действие("ТаблицаПриНачалеРедактирования"));
    лкНоваяТаблица.УстановитьДействие("ПриНачалеРедактирования", "ТаблицаПриНачалеРедактирования");

    КонецЦикла;

    КонецЕсли;
```
---
самое простое найти обработку ФормаАдминистратора и все из нее передрать (скопировать) Это что за обработка? в ЕРП я ее не нашел
---
Спасибо за пример кода. Но Споткнулась на строке
лкНоваяТаблица.ПутьКДанным = лкИмяТЧ; (такой путь в принципе настораживает)

Прошлась по форумам и судя по всему это самая распространённая ошибка. Скажите, пожалуйста, какие варианты её преодолеть? Этот пример кода самый близкий к моей задаче, хотелось бы именно от него дальше отталкиваться.
---
у документа может быть несколько ТЧ, вот этот код их все и выводит, на форму с закладками,
на каждой закладке/странице - своя ТЧ
---
лкНоваяТаблица.ПутьКДанным = лкИмяТЧ; (такой путь в принципе настораживает)
главное что он (этот код) работает, и опять же, возможны варианты,...
а с другой стороны, вы даже представить себе не можете , сколько раз программисты переписывают одни и теже обработки для себя, под себя. С другой стороны опять же опыт получают.

(обработка формаАдминистратора (какой нибудь универсальный редактор), есть в пакете ИР, инструменты разработчика,
очень давно там встречал, правда только для обычных форм, может уже переписали для управляемых...)
---
Да как раз с утра и разобралась с этим вопросом (без создания программно реквизитов на форме не обошлось, конечно). Сейчас страдаю над тем как итог по колонке сумма вывести в подвал. Путь 1с полон страданий :)