Имя: Пароль:
1C
1С v8
Программное добавление колонки в таблицу значений на форме.
0 lirt82
 
25.07.25
09:58
Всем привет, возникла необходимость программного добавления колонки в таблицу элемента формы, чтобы не снимать с поддержки затянул форму в расширение, но при выполнении кода выходит ошибка.
по причине:
Недопустимый путь к реквизиту. Путь: "ЭтаФорма.ДокументыКИмпорту"

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


как указать путь? если элемент "ДокументыКИмпорту" это реквизит формы а не объекта.
https://iimg.su/i/lhTqhm
1 Мультук
 
гуру
25.07.25
07:50
google:
1c динамически добавить колонку в таблицу значений


https://fastcode.im/Templates/6972/tablicza-znachenij-na-uf-s-dinamicheskim-naborom-kolonok
2 lirt82
 
25.07.25
08:07
(0) решение, нужно без обращения через точку
НоваяКолонка.ПутьКДанным = "ДокументыКИмпорту.ДоговорКонтрагента";
3 lirt82
 
25.07.25
10:13
колонка добавилась как для нее описать обработчик в расширении? т.е. при открытии поля чтобы был отбор по контрагенту а не как сейчас все договора всех контрагентов.
https://iimg.su/i/WWcOG7
4 Fedor-1971
 
25.07.25
10:18
(3) Заполни СвязиПараметровВыбора для поля формы (НовыйЭлемент из (0))
5 lirt82
 
25.07.25
13:23
(4) благодарю получилось
ДобавляемыеРеквизиты = Новый Массив;
	Реквизит_ДоговорКонтрагента = Новый РеквизитФормы("ДоговорКонтрагента",	Новый ОписаниеТипов("СправочникСсылка.ДоговорыКонтрагентов"), "ДокументыКИмпорту", "Договор контрагента");
	ДобавляемыеРеквизиты.Добавить(Реквизит_ДоговорКонтрагента);
	ИзменитьРеквизиты(ДобавляемыеРеквизиты);
	
	НоваяКолонка = Элементы.Добавить("ДоговорКонтрагента", Тип("ПолеФормы"), Элементы.ДокументыКИмпорту);

    НоваяКолонка.Заголовок = "Договор контрагента";
    НоваяКолонка.ПутьКДанным = "ДокументыКИмпорту.ДоговорКонтрагента";
    НоваяКолонка.Вид = ВидПоляФормы.ПолеВвода;
        
    НоваяКолонка.СвязиПараметровВыбора = Новый ФиксированныйМассив(Новый Массив);
    НоваяСвязь = Новый СвязьПараметраВыбора("Отбор.Владелец", "Элементы.ДокументыКИмпорту.ТекущиеДанные.Контрагент");
    НовыйМассив = Новый Массив();
    НовыйМассив.Добавить(НоваяСвязь);
    НоваяКолонка.СвязиПараметровВыбора = Новый ФиксированныйМассив(НовыйМассив);
6 Fedor-1971
 
25.07.25
12:36
(5)
   НоваяКолонка.СвязиПараметровВыбора = Новый ФиксированныйМассив(Новый Массив); /// Вот это лишнее, достаточно последней строки
    НоваяСвязь = Новый СвязьПараметраВыбора("Отбор.Владелец", "Элементы.ДокументыКИмпорту.ТекущиеДанные.Контрагент");
7 2S
 
25.07.25
12:52
(0) Откройте уже для себя https://infostart.ru/1c/articles/1284403/
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший