Имя: Пароль:
1C
1С v8
Редактирование программно добавленной колонки в табличном поле
0 SalBas
 
23.12.21
21:56
Здравствуйте!

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


ИмяТабличногоПоля = "Товары" + строка.Поставщик;
Элемент = ЭтаФорма.ЭлементыФормы.Добавить(Тип("ТабличноеПоле"), ИмяТабличногоПоля, Истина, ЭлементыФормы.ОсновнаяПанель);
Элемент.УстановитьПривязку(ГраницаЭлементаУправления.Право, Панель,ГраницаЭлементаУправления.Право);        
Элемент.УстановитьПривязку(ГраницаЭлементаУправления.Низ, Панель,ГраницаЭлементаУправления.Низ);        
Элемент.Лево = 5;
Элемент.Верх = ПромежутокВерх;
Элемент.Ширина = ЭлементыФормы.ОсновнаяПанель.Ширина - 15;
Элемент.Высота = ЭлементыФормы.ОсновнаяПанель.Высота - ПромежутокВерх - 25;    

Элемент.Значение = строка.Товары;        
Элемент.СоздатьКолонки();        
Элемент.Колонки.Отметка.Видимость = Ложь;
Элемент.Колонки.ИдСтроки.Видимость = Ложь;
Элемент.Колонки.ИдПоставщика.Видимость = Ложь;        

Для Каждого реквизитыТовар Из строка.ПараметрыТоваров Цикл    
        //Создание колонки табличного поля
    ЭлементыФормы[ИмяТабличногоПоля].Значение.Колонки.Добавить(реквизитыТовар.ИмяРеквизита, Новый ОписаниеТипов("Строка"));
    
    КолонкаТабличногоПоля = ЭлементыФормы[ИмяТабличногоПоля].Колонки.Добавить(реквизитыТовар.ИмяРеквизита);
    КолонкаТабличногоПоля.Данные = реквизитыТовар.ИмяРеквизита;            
    КолонкаТабличногоПоля.УстановитьЭлементУправления(Тип("ПолеВвода"));
    КолонкаТабличногоПоля.ТекстШапки = реквизитыТовар.name;
    //КолонкаТабличногоПоля.ЭлементУправления.ТипЗначения = Новый ОписаниеТипов("Строка");
КонецЦикла;
1 hhhh
 
23.12.21
23:59
(0) колонка же у тебя ни к каким данным не привязана, вычисляется на лету. Конечно, никакие данные в нее не вобьешь. Их негде сохранять.
2 youalex
 
24.12.21
01:27
(0) у самого ТП проверь доступность/просмотр
3 SalBas
 
24.12.21
02:56
(1) Я сделал переделал процедуру.

Вот в этой строке
Элемент.Значение = строка.Товары;

"строка.Товары" является таблицей значений (источником данных). Я добавил в неё колонки, которые мне были нужны, и потом уже присваиваю эту таблицу как значение табличного поля и связка с данными тогда появляется.

До этого я создавал программно колонку и пытался в свойстве "Данные" этой колонки что-то указать, но 1С ругалась на то, что не верный путь к данным.

(2) Я не посмотрел на свойство "Только просмотр" табличного поля. У него значение было Истина. Я даже не знал, что если программно создавать табличное поле, то ТолькоПросмотр будет по умолчанию равно Истина.

Всем спасибо за помощь! Всё получилось у меня.
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс