пятница, 18 декабря 2015 г.

Как заполнить таблицу значений с динамическими колонками в управляемой форме (1С 8.2 управляемые формы)

Добавляем на управляемую форму:
1)Реквизит "ТаблицаДанных" с типом таблица значений
2)Элемент "Таблица" - ТаблицаДанныхНаФорме и связываем с реквизитом ТаблицаДанных
По кнопке "Загрузить" пишем:

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


Источник

Комментариев нет:

Отправить комментарий