1С 8.3 Динамический вывод Таблицы значений на форму - Программист 1С Минск. Автоматизация бизнеса.

Перейти к контенту

1С 8.3 Динамический вывод Таблицы значений на форму

Данные > Примеры кода 1С > 1С 8.3 Таблица значений
Выводим на форму Таблицу значений и очищаем предыдущую (структуру и данные) в 1С 8.3:
Процедура Вывести_ТЗ_в_Таблицу_на_форме(ТЗ, ТабРеквизитФормы, ТабЭлементФормы = Неопределено) Экспорт

   
// Процедура позволяет выводить любое количество таблиц значений в таблицу формы
    // (с различным количеством и названиями полей). При изменении выводимых данных –
    // таблица на форме программно очищается и заменяется на новую с новым составом
    // полей и данных соответствующей таблицы значений.

   
Если ТабЭлементФормы = Неопределено Тогда // проверка передан ли элемент формы
       
ТабЭлементФормы = ТабРеквизитФормы;
    КонецЕсли;

   
Реквизиты_для_удаления = Новый Массив;
   
Элементы_для_удаления  = Новый Массив;
   
Реквизиты_для_вывода   = Новый Массив;

   
// Получаем данные (на которые элементы формы ссылаются)
    // по добавленным ранее реквизитам и элементам формы
   
Для Каждого Элемент Из Элементы[ТабЭлементФормы].ПодчиненныеЭлементы Цикл
       
Реквизиты_для_удаления.Добавить(Элемент.ПутьКДанным);
       
Элементы_для_удаления.Добавить(Элемент);
    КонецЦикла;
   
// Удаляем элементы
   
Для Каждого УдалитьЭлемент Из Элементы_для_удаления Цикл
       
Элементы.Удалить(УдалитьЭлемент);
    КонецЦикла;

   
// Добавляем колонки из Таблицы значений в реквизит ТабРеквизитФормы
   
Для Каждого КолонкаТЗ Из ТЗ.Колонки Цикл
       
Реквизиты_для_вывода = Новый РеквизитФормы(КолонкаТЗ.Имя, КолонкаТЗ.ТипЗначения, ТабРеквизитФормы, КолонкаТЗ.Заголовок);
       
Реквизиты_для_вывода.Добавить(Реквизиты_для_вывода);
    КонецЦикла;

   
// Удаляем старые реквизиты и выводим новые реквизиты
   
ИзменитьРеквизиты(Реквизиты_для_вывода, Реквизиты_для_удаления);

   
// Добавляем колонки из Таблицы значений
    // в элементы ТабЭлементФормы (со ссылкой на колонки в ТабРеквизитФормы)
   
Для Каждого КолонкаТЗ Из ТЗ.Колонки Цикл
       
ЭлементТЗ = Элементы.Добавить(ТабРеквизитФормы + "_" + КолонкаТЗ.Имя, Тип("ПолеФормы"), Элементы[ТабЭлементФормы]);
       
ЭлементТЗ.Вид = ВидПоляФормы.ПолеНадписи; //Или ПолеВвода, или что-то другое;
       
ЭлементТЗ.ПутьКДанным = ТабРеквизитФормы + "." + КолонкаТЗ.Имя;
    КонецЦикла;

   
// В реквизит загружаем Таблицу значений
   
ЭтаФорма[ТабРеквизитФормы].Загрузить(ТЗ);

КонецПроцедуры
0
комментарии
____________________
Copyright©, «Программист 1С в г.Минске», 26.04.2021
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник
Яндекс.Метрика
Защищенное соединение ssl
visa
mastercard
Maestro
Яндекс деньги
Назад к содержимому