Имя: Пароль:
1C
1С v8
Заполнение созданных программно реквизитов
0 yyyuuu
 
22.08.18
12:30
здравствуйте ребята.
Управляемая форма.Программно создаю на форме таблицу значений и ее реквизиты.
Вот столкнулся с непониманием, подскажите пожалуйста. Хочу заполнить эти реквизиты. В момент когда они создались или создаются записать в них значение


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    МассивТипаВыбора = Новый Массив;
    МассивТипаВыбора.Добавить(Тип("ТаблицаЗначений"));
    ОписаниеТипаВыбора = Новый ОписаниеТипов(МассивТипаВыбора);
    МассивРеквизитов = Новый Массив;
    МассивРеквизитов.Добавить(Новый РеквизитФормы("ТаблицаРасписания", ОписаниеТипаВыбора, "", "ТЗН"));

    КД = Новый КвалификаторыДаты(ЧастиДаты.Время);            

    МассивКД = Новый Массив;

    МассивКД.Добавить(Тип("Дата"));

    ОписаниеТиповВремя = Новый ОписаниеТипов(МассивКД, , ,КД);

        
    ТЗ = Новый ТаблицаЗначений;
    ТЗ.Колонки.Добавить("С");
    ТЗ.Колонки.Добавить("До");
    ТЗ.Колонки.Добавить("ФИО");
    ТЗ.Колонки.Добавить("Примечание");//ФИО и Примечание - строки

    Для Каждого Колонка Из ТЗ.Колонки Цикл

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

        НовыйЭлемент = Элементы.Добавить(Колонка.Имя, Тип("ПолеФормы"), ТаблицаПолейВыбора);
        НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;
        НовыйЭлемент.ПутьКДанным = "ТаблицаРасписания." + Колонка.Имя;
        НовыйЭлемент.Ширина = 10;
    КонецЦикла;
    ТаблицаПолейВыбора.УстановитьДействие("Выбор","ТЗНВыбор");
КонецПроцедуры
1 yyyuuu
 
22.08.18
16:27
Вроде разобрался завтра вам покажу)
2 yyyuuu
 
23.08.18
09:47
Функция ДинамичноСоздатьТЗ(Таблица)
    //
    //Добавим таблицу: Сначала саму таблицу, потом колонку
    //Ищем если форма уже создана надо ее удалить если нет создаем
    ЭлементТаблица = Элементы.Найти("ТаблицаНаФорме");
    ЭлементыТЗ     = Элементы.Найти("ТаблицаЗначений");
    //
    Если ЭлементТаблица <> Неопределено Тогда
        //
        Элементы.Удалить(ЭлементТаблица);
        //
    КонецЕсли;
    //
    Реквизиты = Новый Массив;
    //**
    ДобавляемыеРеквизиты = Новый Массив;
    МассивТипов = Новый Массив;
    МассивТипов.Добавить(Тип("Булево"));
    Булево1 = Новый РеквизитФормы("ПолеВводаСтроки", новый ОписаниеТипов(МассивТипов),, "Поле ввода", Истина);
    ДобавляемыеРеквизиты.Добавить(Булево1);
    ИзменитьРеквизиты(ДобавляемыеРеквизиты);
    //**
    //
    Реквизиты.Добавить(Новый РеквизитФормы("ТаблицаНаФорме", Новый ОписаниеТипов("ТаблицаЗначений")));
    //
    Для Каждого Ст ИЗ Таблица.Колонки Цикл
        //
        Реквизиты.Добавить(Новый РеквизитФормы(Ст.Имя, Ст.ТипЗначения, "ТаблицаНаФорме"));
        //
    КонецЦикла;
    //
    //Добавим Реквизиты на форму    
    ИзменитьРеквизиты(Реквизиты);
    //
    //Добавим элементы формы
    Таб = Элементы.Добавить("ТаблицаНаФорме", тип("ТаблицаФормы"));
    Таб.ПутьКДанным = "ТаблицаНаформе";
    //
    //запретим менять положение строк и сами строки, отключим командную панель
    //
    Таб.ИзменятьСоставСтрок       = Ложь;
    Таб.ИзменятьПорядокСтрок      = Ложь;
    Таб.ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиЭлементаФормы.Нет;
    //
    Для Каждого СТ ИЗ Таблица.Колонки Цикл
        //
        Рек = Элементы.Добавить("Колонка" + Ст.Имя, Тип("ПолеФормы"), Таб);
        //
        Рек.Вид            = ВидПоляФормы.ПолеНадписи;
        Рек.ПутьКДанным = "ТаблицаНаФорме" + "." + Ст.Имя;
        Рек.Заголовок   = Ст.Имя;
    КонецЦикла;
    //
    //Заполним Таблицу
    ЗначениеВРеквизитФормы(Таблица,"ТаблицаНаФорме");
    //
КонецФункции
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.