Программное добавление табличной части на управляемой форме
Добрый день!
Столкнулся с проблемой, кто знает есть ли такая вообще возможность добавить ТЧ на форму програмно.
С реквизитами не было проблем, а вот насчет ТЧ документа встал тупик.
Сперва создал объект(методаные) ТЧ "Услуга", хочу вывести это ТЧ на форму программно
Помогите буду благодарен
P/s Тип("ТаблицыФормы") тоже пробовал не помогает(
Столкнулся с проблемой, кто знает есть ли такая вообще возможность добавить ТЧ на форму програмно.
С реквизитами не было проблем, а вот насчет ТЧ документа встал тупик.
Сперва создал объект(методаные) ТЧ "Услуга", хочу вывести это ТЧ на форму программно
Помогите буду благодарен
ИмяГруппы = "СтраницаУслуги";
НоваяГруппа = ЭтаФорма.Элементы.Добавить(ИмяГруппы, Тип("ГруппаФормы"),Элементы.ГруппаСтраницы);
ТаблицаУслуги = Элементы.Добавить("УСТ_Услуги", Тип("ТабличноеПоле"), НоваяГруппа);
P/s Тип("ТаблицыФормы") тоже пробовал не помогает(
По теме из базы знаний
- Программное размещение реквизитов на управляемой форме
- Вывод Таблицы Значений или Дерева Значений на экран управляемой формы без объявления колонок в реквизитах формы
- Программное изменение управляемых форм
- Табличная часть как поле ввода
- Показ кодов маркировки в документах 1С ERP/УТ: мини-доработка управляемых форм, чтобы облегчить себе жизнь
Найденные решения
(8)
А в шапке темы указано:
Тогда код будет таким:
В объекте документа создана ТЧ "УСТ_Услуги"
А в шапке темы указано:
Сперва создал объект(методаные) ТЧ "Услуга",
Тогда код будет таким:
ИмяГруппы = "СтраницаУслуги";
НоваяГруппа = ЭтаФорма.Элементы.Добавить(ИмяГруппы, Тип("ГруппаФормы"),Элементы.ГруппаСтраницы);
НоваяГруппа.Вид = ВидГруппыФормы.Страница;
НоваяГруппа.Заголовок = "Услуги";
ТаблицаУслуги = Элементы.Добавить("УСТ_Услуги", Тип("ТаблицаФормы"), НоваяГруппа);
ТаблицаУслуги.ПутьКДанным = "Объект.УСТ_Услуги";
ЭлементТаблицыФормы = Элементы.Добавить("УСТ_УслугиНоменклатура", Тип("ПолеФормы"),ТаблицаУслуги);
ЭлементТаблицыФормы.Вид = ВидПоляФормы.ПолеВвода;
ЭлементТаблицыФормы.ПутьКДанным = "Объект.УСТ_Услуги.Номенклатура";
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) правильно будет ТаблицаФормы.
ПутьКДанным не установлено. И каждую колонку для отображения нужно так же выводить.
ПутьКДанным не установлено. И каждую колонку для отображения нужно так же выводить.
ИмяГруппы = "СтраницаУслуги";
НоваяГруппа = ЭтаФорма.Элементы.Добавить(ИмяГруппы, Тип("ГруппаФормы"),Элементы.ГруппаСтраницы);
НоваяГруппа.Вид = ВидГруппыФормы.Страница;
НоваяГруппа.Заголовок = "Услуги";
ТаблицаУслуги = Элементы.Добавить("УСТ_Услуги", Тип("ТаблицаФормы"), НоваяГруппа);
ТаблицаУслуги.ПутьКДанным = "Объект.Услуга";
ЭлементТаблицыФормы = Элементы.Добавить("УСТ_УслугиНоменклатура", Тип("ПолеФормы"),ТаблицаУслуги);
ЭлементТаблицыФормы.Вид = ВидПоляФормы.ПолеВвода;
ЭлементТаблицыФормы.ПутьКДанным = "Объект.Услуга.Номенклатура";
Показать
(5) Ругается сделал точно так как вы описали
"ТаблицаУслуги = Элементы.Добавить("УСТ_Услуги", Тип("ТаблицаФормы"), НоваяГруппа);" ошибка выскакивает на этой строке
Недопустимое значение параметров
{Отчет Документ.ОтчетКомитенту.Форма.ФормаДокумента.Форма(25)}: ТаблицаУслуги = Элементы.Добавить("УСТ_Услуги", Тип("ТаблицаФормы"), НоваяГруппа);
по причине:
Недопустимое значение параметров
"ТаблицаУслуги = Элементы.Добавить("УСТ_Услуги", Тип("ТаблицаФормы"), НоваяГруппа);" ошибка выскакивает на этой строке
Недопустимое значение параметров
{Отчет Документ.ОтчетКомитенту.Форма.ФормаДокумента.Форма(25)}: ТаблицаУслуги = Элементы.Добавить("УСТ_Услуги", Тип("ТаблицаФормы"), НоваяГруппа);
по причине:
Недопустимое значение параметров
(8)
А в шапке темы указано:
Тогда код будет таким:
В объекте документа создана ТЧ "УСТ_Услуги"
А в шапке темы указано:
Сперва создал объект(методаные) ТЧ "Услуга",
Тогда код будет таким:
ИмяГруппы = "СтраницаУслуги";
НоваяГруппа = ЭтаФорма.Элементы.Добавить(ИмяГруппы, Тип("ГруппаФормы"),Элементы.ГруппаСтраницы);
НоваяГруппа.Вид = ВидГруппыФормы.Страница;
НоваяГруппа.Заголовок = "Услуги";
ТаблицаУслуги = Элементы.Добавить("УСТ_Услуги", Тип("ТаблицаФормы"), НоваяГруппа);
ТаблицаУслуги.ПутьКДанным = "Объект.УСТ_Услуги";
ЭлементТаблицыФормы = Элементы.Добавить("УСТ_УслугиНоменклатура", Тип("ПолеФормы"),ТаблицаУслуги);
ЭлементТаблицыФормы.Вид = ВидПоляФормы.ПолеВвода;
ЭлементТаблицыФормы.ПутьКДанным = "Объект.УСТ_Услуги.Номенклатура";
Показать
(9)
(9) Спасибо помогло я так и сделал изначально, просто нужно было еще галку поставить в нужном месте в расширении, Но ваше решение мне помогло)
ИмяГруппы = "СтраницаУслуги";
НоваяГруппа = ЭтаФорма.Элементы.Добавить(ИмяГруппы, Тип("ГруппаФормы"),Элементы.ГруппаСтраницы);
НоваяГруппа.Вид = ВидГруппыФормы.Страница;
НоваяГруппа.Заголовок = "Услуги";
ТаблицаУслуги = Элементы.Добавить("УСТ_Услуги", Тип("ТаблицаФормы"), НоваяГруппа);
ТаблицаУслуги.ПутьКДанным = "Объект.УСТ_Услуги";
ЭлементТаблицыФормы = Элементы.Добавить("УСТ_УслугиНоменклатура", Тип("ПолеФормы"),ТаблицаУслуги);
ЭлементТаблицыФормы.Вид = ВидПоляФормы.ПолеВвода;
ЭлементТаблицыФормы.ПутьКДанным = "Объект.УСТ_Услуги.Номенклатура";
НоваяГруппа = ЭтаФорма.Элементы.Добавить(ИмяГруппы, Тип("ГруппаФормы"),Элементы.ГруппаСтраницы);
НоваяГруппа.Вид = ВидГруппыФормы.Страница;
НоваяГруппа.Заголовок = "Услуги";
ТаблицаУслуги = Элементы.Добавить("УСТ_Услуги", Тип("ТаблицаФормы"), НоваяГруппа);
ТаблицаУслуги.ПутьКДанным = "Объект.УСТ_Услуги";
ЭлементТаблицыФормы = Элементы.Добавить("УСТ_УслугиНоменклатура", Тип("ПолеФормы"),ТаблицаУслуги);
ЭлементТаблицыФормы.Вид = ВидПоляФормы.ПолеВвода;
ЭлементТаблицыФормы.ПутьКДанным = "Объект.УСТ_Услуги.Номенклатура";
(9) Спасибо помогло я так и сделал изначально, просто нужно было еще галку поставить в нужном месте в расширении, Но ваше решение мне помогло)
самое простое найти обработку ФормаАдминистратора и все из нее передрать (скопировать)
вот, не знаю, поможет ли вам такой пример кода (как раз из нее)
вот, не знаю, поможет ли вам такой пример кода (как раз из нее)
Если мДобРеквизитов.Количество() > 0 Тогда
//Есть табличные части, строим их отображение
ИзменитьРеквизиты(мДобРеквизитов);
Для Каждого лкСтр Из мОбъектМД.ТабличныеЧасти Цикл
лкЗакладкаТЧ = "Закладка" + лкСтр.Имя;
лкИмяТЧ = "тч" + лкСтр.Имя;
лкНоваяСтраница = Элементы.Добавить(лкЗакладкаТЧ, Тип("группаформы"),Элементы.ГруппаСтраницы);
лкНоваяСтраница.Заголовок = лкСтр.Имя;
лкНоваяСтраница.Картинка = БиблиотекаКартинок.ВложеннаяТаблица;
//затем настраиваем элементы формы
//ЭлементыФормы.Панель.ТекущаяСтраница = лкНоваяСтраница;
лкНоваяТаблица = Элементы.Добавить(лкИмяТЧ, Тип("ТаблицаФормы"), лкНоваяСтраница);
лкНоваяТаблица.ПутьКДанным = лкИмяТЧ;
лкНоваяТаблица.Отображение = ОтображениеТаблицы.Список;
//лкНоваяТаблица.ТолькоПросмотр = Истина;
лкНоваяТаблица.ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиЭлементаФормы.Нет;
Для Каждого лкКол Из мОбъектМД.ТабличныеЧасти[лкСтр.Имя].СтандартныеРеквизиты Цикл
ИмяКолонки = лкИмяТЧ + лкКол.Имя;
НовыйЭлемент = Элементы.Добавить(ИмяКолонки, Тип("ПолеФормы"), лкНоваяТаблица);
НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;
НовыйЭлемент.ПутьКДанным = лкИмяТЧ + "." + лкКол.Имя;
НовыйЭлемент.УстановитьДействие("НачалоВыбора","ПоляЗначениеНачалоВыбора");
КонецЦикла;
Для Каждого лкКол Из мОбъектМД.ТабличныеЧасти[лкСтр.Имя].Реквизиты Цикл
ИмяКолонки = лкИмяТЧ + лкКол.Имя;
НовыйЭлемент = Элементы.Добавить(ИмяКолонки, Тип("ПолеФормы"), лкНоваяТаблица);
НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;
НовыйЭлемент.ПутьКДанным = лкИмяТЧ + "." + лкКол.Имя;
Попытка
//не все поля Ввода (в зависимости от типа) имеют событие НачалоВыбора
НовыйЭлемент.УстановитьДействие("НачалоВыбора","ПоляЗначениеНачалоВыбора");
Исключение
КонецПопытки;
КонецЦикла;
ЗначениеВРеквизитФормы(Ссылка[лкСтр.Имя].выгрузить(), лкИмяТЧ);
//***** Назначим обработчик событий
//лкНоваяТаблица.УстановитьДействие("ПриНачалеРедактирования",Новый Действие("ТаблицаПриНачалеРедактирования"));
лкНоваяТаблица.УстановитьДействие("ПриНачалеРедактирования", "ТаблицаПриНачалеРедактирования");
КонецЦикла;
КонецЕсли;
Показать
(2) Спасибо за пример кода. Но Споткнулась на строке
лкНоваяТаблица.ПутьКДанным = лкИмяТЧ; (такой путь в принципе настораживает)
Прошлась по форумам и судя по всему это самая распространённая ошибка. Скажите, пожалуйста, какие варианты её преодолеть? Этот пример кода самый близкий к моей задаче, хотелось бы именно от него дальше отталкиваться.
лкНоваяТаблица.ПутьКДанным = лкИмяТЧ; (такой путь в принципе настораживает)
Прошлась по форумам и судя по всему это самая распространённая ошибка. Скажите, пожалуйста, какие варианты её преодолеть? Этот пример кода самый близкий к моей задаче, хотелось бы именно от него дальше отталкиваться.
(11)
главное что он (этот код) работает, и опять же, возможны варианты,...
а с другой стороны, вы даже представить себе не можете , сколько раз программисты переписывают одни и теже обработки для себя, под себя. С другой стороны опять же опыт получают.
(обработка формаАдминистратора (какой нибудь универсальный редактор), есть в пакете ИР, инструменты разработчика,
очень давно там встречал, правда только для обычных форм, может уже переписали для управляемых...)
лкНоваяТаблица.ПутьКДанным = лкИмяТЧ; (такой путь в принципе настораживает)
главное что он (этот код) работает, и опять же, возможны варианты,...
а с другой стороны, вы даже представить себе не можете , сколько раз программисты переписывают одни и теже обработки для себя, под себя. С другой стороны опять же опыт получают.
(обработка формаАдминистратора (какой нибудь универсальный редактор), есть в пакете ИР, инструменты разработчика,
очень давно там встречал, правда только для обычных форм, может уже переписали для управляемых...)
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот