Home
1С Код для конструктора
Произвольную таблицу значений на форму УФ    
Автор:
 
Создано: 27.09.2016 15:00  
  Печать   E-mail  

     Очень нужная процедура, если предварительно надо просмотреть данные в таблице значений. В процедуру передаем таблицу значений и имя реквизита формы, реквизит формы создается и пересоздается (надо если несколько раз запускается процедура). Имена колонок берутся из переданной таблицы значений.

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

     //если надо точно расположить новый реквизит на нужную страницу или в определенную группу то делаем так

            ЭлементФормы = Элементы.Найти(СтрОбТб);
         Элементы.Переместить(ЭлементФормы, Элементы.Группа5,"сюда элемент за которым будет наш новый");


     //если надо точно расположить новый реквизит на нужную страницу или в определенную группу то делаем так    
КонецПроцедуры

запарился раскрашивать.

 
Яндекс.Метрика
   
 
 
  Top