Имя: Пароль:
1C
 
Программное создание реквизита и элемента формы
,
0 Peshalkin
 
16.02.22
09:11
Добрый день, столкнулся с проблемой программного создания табицы на форме, создаю реквизит формы(таблица, ПутьКДанным - Объект.Движения.Таблица), создаю элемент формы, но проблема заключается в том, что когда я выгружаю набор записей, чтобы создать колонки, то там у меня нет колонки с типом картинка(как это было на ОФ), и не совсем понимаю, как мне в программный элемент формы(таблицу) добавить колонку с картинкой, подскажите пожалуйста, уже всё перепробовал, что можно
1 Волшебник
 
модератор
16.02.22
09:13
ЭлементыФормы.ТабПоле.Колонки.Добавить()
2 Peshalkin
 
16.02.22
10:34
(1) Извиняюсь, что сразу не уточнил, это УФ

В общем колонку добавить смог, пришлось создать еще один реквизит формы программно, запихать в нужную таблицу движений, после в элемент формы добавить колонку картинка и на этот раз на установку пути данных не ругалось.
Теперь проблема в том, что когда я начинаю программно заполнять мою таблицу созданную, чтобы отобразить данные, у меня не виден реквизит картинка .-.
3 Мимохожий Однако
 
16.02.22
10:37
Не стесняйся, показывай код. Сложно догадаться
4 Peshalkin
 
16.02.22
10:42
Вот код по созданию реквизитов формы + элементов формы, дальше стандартное создание колонок и заполнение таблицы через ЭтотОбъект.ИмяТаблицы.Добави() и тут у меня нет картинки, чтобы её заполнить

ТипРегистра = ?(СтрокаРегистров.РегистрБухгалтерии, "РегистрБухгалтерии", "РегистрНакопления");
ИмяРеквизита = СтрокаРегистров.Имя + "НаборЗаписей";
ТипРеквизита  = Новый ОписаниеТипов(ТипРегистра + "НаборЗаписей." + СтрокаРегистров.Имя);
НовыйРеквизит = Новый РеквизитФормы(ИмяРеквизита, ТипРеквизита, , , Истина);
ДобавляемыеРеквизиты.Добавить(НовыйРеквизит);
        
НовыйРеквизит = Новый РеквизитФормы("Картинка", Новый ОписаниеТипов("Картинка"), "Объект.Движения.Таблица" , , Истина);
ДобавляемыеРеквизиты.Добавить(НовыйРеквизит);
        
ИзменитьРеквизиты(ДобавляемыеРеквизиты);

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

ИмяКолонки = ИмяТаблицы + "КартинкаРегистра";
ТекКолонка = Элементы.Найти(ИмяКолонки);
Если ТекКолонка = Неопределено Тогда
    ТекКолонка = Элементы.Добавить(ИмяКолонки, Тип("ПолеФормы"), ТекТаблица);
КонецЕсли;
ТекКолонка.ПутьКДанным = ТекТаблица.ПутьКДанным + "." + "Картинка";
ТекКолонка.Заголовок = "";
ТекКолонка.Вид = ВидПоляФормы.ПолеКартинки;
5 Мимохожий Однако
 
16.02.22
10:46
Кода,где идёт заполнение, я не увидел. Есть только код создания колонок таблицы.
6 Peshalkin
 
16.02.22
10:51
Кусок кода который создаёт реквизиты + заполняет таблицу

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

ТекКолонка.ПутьКДанным = ТекТаблица.ПутьКДанным + "." + КолонкаРеквизита.Имя;
ВидимостьКолонки = КолонкаРеквизита.Имя = "Регистратор" Или КолонкаРеквизита.Имя = "Период" Или КолонкаРеквизита.Имя = "Активность";
ТекКолонка.Видимость = НЕ ВидимостьКолонки;
            
КонецЦикла;

Для Каждого СтрокаДвижения Из Объект.Движения[СтрокаТаблицыРегистров.Имя] Цикл
            
    ИмяТаблицаДобавления = Лев(ТекТаблица.Имя, СтрДлина(ТекТаблица.Имя) - 1) + "НаборЗаписей";
    НовСтр = ЭтотОбъект[ИмяТаблицаДобавления].Добавить();
    ЗаполнитьЗначенияСвойств(НовСтр, СтрокаДвижения);
            
    //НовСтр.Картинка =
КонецЦикла;
7 Peshalkin
 
16.02.22
14:39
У кого-то есть мысли, почему при заполнении таблицы созданной, у меня нет колонки "Картинка"?