Программное добавление колонки в управл.приложении

1. sweety-twetty 20.12.12 12:16 Сейчас в теме
Здравствуйте,уважаемые форумчане) Подскажите, как можно добавить программно колонку в управляемую форму? в данный момент в общем модуле НумерацииОбъектов есть переход в новый модуль доработок на клиенте(об.приложение и управ.), где вносятся изменения в форму документа(добавление колонок в тч, добавление реквизитов на форму)-на обычных формах все отрабатывает, на управляемых-туда даже не попадаю отладчиком.Возможно ли через этот модуль добавить новую колонку в тч на управл.форму,если нет, то как лучше сделать?
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. DoctorRoza 20.12.12 13:01 Сейчас в теме
Евангелие от Ажеронок, Островерх и др. товарищей .. Разработка управляемого интерфейса .. стр. 598, стих 3.153. :) И как Вы без книжек то живете? Не пойму!
3. dour-dead 271 20.12.12 13:06 Сейчас в теме
(2) DoctorRoza, нормально так живем) с книжками будет совсем как то просто)))
5. MrUnnamed 15 20.12.12 13:10 Сейчас в теме
9. dour-dead 271 20.12.12 13:50 Сейчас в теме
(5) MrUnnamed, спасибо конечно, но пока там доберешься до скачки вирусни наловишь точно))) книжки то есть а вот времени их читать как то нет особо)
4. MrUnnamed 15 20.12.12 13:08 Сейчас в теме
Пример добавления реквизита управляемой формы:
Элемент = ЭтаФорма.Элементы.Добавить(Эл.ИмяРеквизита, Тип("ПолеФормы"), Элементы.ГруппаОбщиеРеквизитыЗаполнения);
Элемент.Вид = ВидПоляФормы.ПолеВвода;
Элемент.ПутьКДанным = "ИмяРеквизита";

Разработка управляемого интерфейса Вам в помощь.
6. sweety-twetty 20.12.12 13:11 Сейчас в теме
(4)Делаю что-то подобное,
	ЭлементыФормы = Форма.Элементы;
	НоваяКолонка = ЭлементыФормы.Добавить("Вес(т.)",Тип("ПолеФормы"),ЭлементыФормы.Товары);

Получаю " Ошибка при вызове метода контекста (Добавить)
НоваяКолонка = ЭлементыФормы.Добавить("Вес(т.)",Тип("ПолеФормы"),ЭлементыФормы.Товары);
по причине:
Изменение состава элементов недоступно"

П.С.галочка "Разрешать изменение формы" есть
7. MrUnnamed 15 20.12.12 13:41 Сейчас в теме
(6) sweety-twetty,
пример программного создания таблицы, реквизитов, вывода таблицы и реквизитов.
	МассивДобавляемыхРеквизитов = Новый Массив; 
	МассивДобавляемыхРеквизитов.Добавить(Новый РеквизитФормы("Таб", Новый ОписаниеТипов("ТаблицаЗначений")));
	МассивДобавляемыхРеквизитов.Добавить(Новый РеквизитФормы("Вес", Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(15,3)),"Таб" , "Вес, т.")); 
	
	ИзменитьРеквизиты(МассивДобавляемыхРеквизитов); 
	
	
	ТаблицаФормы = Элементы.Добавить("Таб", Тип("ТаблицаФормы")); 
	ТаблицаФормы.ПутьКДанным = "Таб"; 
	ТаблицаФормы.ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиЭлементаФормы.Нет; 
	
	НоваяКолонка = Элементы.Добавить("Вес", Тип("ПолеФормы"), Элементы.Таб); 
	НоваяКолонка.Заголовок = "Вес"; 
	НоваяКолонка.ПутьКДанным = "Таб.Вес"; 
	НоваяКолонка.Вид = ВидПоляФормы.ПолеВвода;
Показать
10. sweety-twetty 20.12.12 14:43 Сейчас в теме
(7) а если мне не новую таблицу нужно создавать, а в уже существующую "Товары"? уже попробовала по-разному, все никак не получается(Кстати,реквизит в тч Товары "ВесВТоннах" у меня есть)

Сейчас выглядит так:
&НаСервере
Процедура ВнестиИзмененияВФорму_ФормаДокумента()  
    МассивДобавляемыхРеквизитов = Новый Массив; 
    МассивДобавляемыхРеквизитов.Добавить(Новый РеквизитФормы("Вес", Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(15,3)),"Товары" , "Вес, т.")); 

    
    ИзменитьРеквизиты(МассивДобавляемыхРеквизитов); 
    
    НоваяКолонка = Элементы.Товары.Добавить("Вес", Тип("ПолеФормы"), Элементы.Товары); 
    НоваяКолонка.Заголовок = "Вес"; 
    НоваяКолонка.ПутьКДанным = "ВесВТоннах"; 
    НоваяКолонка.Вид = ВидПоляФормы.ПолеВвода;
КонецПроцедуры
Показать
11. MrUnnamed 15 20.12.12 16:15 Сейчас в теме
(10) sweety-twetty,

пример добавления колонок в уже существующую таблицу во вложении
Прикрепленные файлы:
Тест.epf
mariupol1c; Куркуль; ResetAtreides; oleg-ts; dime2; tatyanasubbotina; Wrols; voronets; CodeNull; varav_11; chinkovs; kabantus; Valerianich; EvgeTrofi; user1832262; Eeeehhhh; Flipp; Matveev_VS; user1232315; user1275579; mpvrus21; user1358060; NoseMan; dnikolaev; Dmitri93; VasilyErmak; pirm2; skalex; APTEM_SLV; Boulala; MaZaHacKa_13; triviumfan; vis_tmp; jane_de_rio; d_kulbitski; Daynestro07; MsDjuice; Still325; Rokstedi; dklp; Hayliod; scanner1980; vasyalisk88; revned; +44 Ответить
12. revned 6 19.08.14 13:46 Сейчас в теме
(11) MrUnnamed, спасибо за пример!
17. MsDjuice 114 03.06.17 17:25 Сейчас в теме
(11) Большое спасибо за пример реализации, очень долго фантазировал как сделать дополнительную колонку в табличной части объекта.
13. dklp 42 17.04.16 17:18 Сейчас в теме
(11) MrUnnamed, а можно ли в модуле формы программно добавить реквизит не в саму форму, а в форму владельца? скажем, из внешней обработки заполнения объекта добавить новое поле в табличную часть реквизита формы документа, где вызывается эта обработка. я как бы умею из модуля формы внешней обработки заполнять табличную часть объекта формы владельца, а вот с изменением формы - проблема. не спрашиваю пока как это сделать. это в принципе возможно?
14. Stackmann 18.04.16 08:43 Сейчас в теме
(13) Может быть и не реально. Но стоить попробовать - вдруг получится. Тут есть пара моментов:
1. Изменение формы возможно только на сервере. То есть как-то надо туда передать управление.
2. Обычно форму изменяют при ее создании. Как система себя поведет, если вы попытаетесь ее изменить уже после создания - это вопрос.

Я бы пробовал два варианта реализации.
1. Передавал бы форму на сервер и пробовал ее там менять.
2. Если первый вариант не сработает, то делал бы оповещение из подчиненной формы, ловил бы это оповещение в форме-владельце и пытался изменить форму вызовом контекстной процедуры на сервере.

Если эти два варианта не сработают, то это сделать не реально.
15. dklp 42 18.04.16 12:37 Сейчас в теме
(14) Stackmann, не очень понимаю как это - передать форму владельца на сервер. передать на сервер можно только объект формы. или я не прав? в общем, изменить форму владельца из внешней обработки у меня не получилось, но мне тут подсказали рассмотреть в качестве компромиссного варианта возможности переопределяемых модулей МодификацияКонфигурацииПереопределяемый и МодификацияКонфигурацииКлиентСерверПереопределяемый. в принципе, тогда и внешняя обработка может не понадобится. вот здесь примеры есть: http://infostart.ru/public/424358/
16. dklp 42 25.04.16 14:41 Сейчас в теме
(14) Stackmann, нашлось решение для динамического изменения и добавления реквизитов и элементов формы стандартного документа из внешней обработки. для этого в сведениях о внешней обработке нужно указать тип использования команды ЗаполнениеФормы, и тогда можно прямо в модуле объекта внешней обработки работать с контекстом формы стандартного документа, из которого эта обработка вызывается. обращение к форме документа происходит через ПараметрыВыполнения.ЭтаФорма. в общем, если кому интересно, я тут сделал небольшую публикацию на эту тему:
http://infostart.ru/public/518037/
18. vis_tmp 32 16.08.18 20:59 Сейчас в теме
(11)Спасибо, Евгений, за этот пример!
8. MrUnnamed 15 20.12.12 13:45 Сейчас в теме
(6) sweety-twetty,
если не получится, то выложу в общий доступ пример работы механизма в обработке.
19. чингачгук 24 25.12.19 11:00 Сейчас в теме
Нашел один интересный нюанс... Если ТЧ просто на форме добавлена, то в нее можно кодом добавить свои колонки. Но вот если это реквизит объекта, то туда ни в какую не дает кодом добавлять...
Прикрепленные файлы:
20. dolter 120 12.03.20 22:08 Сейчас в теме
(19) Дает добавлять
МассивРеквизитов = Новый Массив;
НовыйРеквизит = Новый РеквизитФормы("ИмяРеквизита", ОписаниеТипа, "Объект.ИмяТЧ", "Заголовок", Истина);
МассивРеквизитов.Добавить(НовыйРеквизит);

ИзменитьРеквизиты(МассивРеквизитов);
	
НовыйЭлемент = Элементы.Добавить(МассивРеквизитов[0].Имя, Тип("ПолеФормы"), Элементы.ИмяТЧ);
НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;
НовыйЭлемент.ПутьКДанным = "Объект.ИмяТЧ." + МассивРеквизитов[0].Имя;
Показать
depb; JohnConnor; wolfsoft; +3 Ответить
26. JohnConnor 64 27.04.23 06:53 Сейчас в теме
(20) при условии что у вас этот объект есть в реквизитах ТЧ
27. dolter 120 27.04.23 10:39 Сейчас в теме
21. demONx7 09.10.20 02:40 Сейчас в теме
Подскажите как сдвинуть добавленную колонку? Она добавляется в конец элемента формы.
А нужно в определенное место ее передвинуть.
Если говорить про коллекцию колонок дерева значений, то тут все ясно. Методом Сдвинуть().
А вот тут
Элементы.Дерево.ПодчиненныеЭлементы
добавленные колонки остаются в конце.
22. comptr 34 09.10.20 06:49 Сейчас в теме
(21) помимо метода Добавить, который добавляет элемент в конец Родительского, есть метод Вставить, где можно указать, перед каким элементом вставлять новый. Да прибудет с вами CTRL+F1.
kabantus; Diks_Soft; +2 Ответить
23. demONx7 09.10.20 09:20 Сейчас в теме
(22)Уже разобрался. Оказалось все как обычно просто. Но спасибо что не оставили вопрос без внимания.
24. Matveev_VS 162 28.02.22 12:21 Сейчас в теме
25. lishniy 133 13.04.22 17:48 Сейчас в теме
Спрошу в этой теме, так как она гуглится первой в списке. Может кому-то сэкономит кучу времени
В реквизитах на форме есть атрибут "Использовать всегда". Если этот атрибут снят, то не удается установить ПутьКДанным в созданном поле табличной части.
Есть у кого объяснения почему и как выйти из ситуации(кроме создать колонки в конфигураторе)?
Прикрепленные файлы:
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот