Каталог решений - Описание пары важных функций для управляемого интерфейса: СоздатьКолонки() в 1C 8.2, ИзменитьРеквизиты()

Описание пары важных функций для управляемого интерфейса: СоздатьКолонки() в 1C 8.2, ИзменитьРеквизиты()

Описание пары важных функций для управляемого интерфейса: СоздатьКолонки() в 1C 8.2, ИзменитьРеквизиты()

В наличии

Столкнулся с проблемой отсутствия такой функции, как СоздатьКолоноки() в 1С8.2. и нормального описание функции ИзменитьРеквизиты()
Задача такая:
Есть динамически заполняемая таблица значений, надо ее отображать на форме.

Категория:

Описание

В поисках решения пришлось покопаться сети, но тоже нормального решения не нашел, или плохо искал, все как то узко, и трудно, решил сам реализовать.

Решение это Процедура, которую надо создать у себя в модуле формы и передавать параметры, и будет вам счастье)

Вот собственно сама процедура:

//*********************************

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

   
КонецПроцедуры

//*********************************

Описание передаваемых параметров:

1) ИмяПоляТаблицыФормы — Имя элемента на форме Таблица, или существующего или который надо создать, не важно. (Пример как у меня «ТаблицаФормы»)

2) ИмяРеквизитаДанныеФормыКоллекция — Имя реквизита формы, его надо создать, пример настройки на картинке (имя должно отличаться от имени элемента формы, желательно) (Пример как у меня «Таблица»)

3) ТаблицаЗначений — Собственно сама таблица с данными из-за которой все это и делалось.)

Ну вот и все. На 1С8.1 это выгляделобы так:

ИмяРеквизитаДанныеФормыКоллекция = ТаблицаЗначени;

ЭлементыФормы.ИмяПоляТаблицыФормы.СоздатьКолонки();

 

has been added to your cart:
Оформление заказа