Имя: Пароль:
1C
1С v8
Не могу удалить реквизиты Таблицы Значения
0 blueisacolour
 
09.06.15
07:34
Добрый день.Есть справочник Группа Детей,на форме есть кнопка "Обновить",при нажатие этой кнопки формируется ТабЗнч из РС "Сведения  о детях".При открытие формы запрос работает,создается таблица,но повтором нажатие соответственно она придерается на уникальность кода,необходимо конечно удалить реквизиты и элементы формы.пробовал разные варианты,не получается,что я делаю не так.Вот код:
Процедура ОбновитьСоставГруппы()
    
    Если Объект.Ссылка.Пустая() Тогда
        Возврат;
    КонецЕсли;
    
    СоставГруппы_Зн = РеквизитФормыВЗначение("СоставГруппы");
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("Дата"    , ДатаСреза);
    Запрос.УстановитьПараметр("Группа"    , ЭтотОбъект.Объект.Ссылка);
    
    Запрос.Текст =
    "ВЫБРАТЬ
    |    дс_СведенияОДетяхСрезПоследних.Период,
    |    дс_СведенияОДетяхСрезПоследних.Ребенок
    |ИЗ
    |    РегистрСведений.дс_СведенияОДетях.СрезПоследних(&Дата, ) КАК дс_СведенияОДетяхСрезПоследних
    |ГДЕ
    |    дс_СведенияОДетяхСрезПоследних.СтатусРебенка = ЗНАЧЕНИЕ(Перечисление.дс_СтатусыРебенка.Принят)
    |    И дс_СведенияОДетяхСрезПоследних.Группа = &Группа";
    
    СоставГруппы_Зн = Запрос.Выполнить().Выгрузить();
    МассивРеквизитов = Новый Массив;
    Для Каждого Колонка ИЗ СоставГруппы_Зн.Колонки Цикл
    МассивТипов = Новый Массив;
    МассивТипов.Добавить(Колонка.ТипЗначения);
    НоваяКолонка = Новый РеквизитФормы(Колонка.Имя, Новый ОписаниеТипов(МассивТипов), "СоставГруппы");
    МассивРеквизитов.Добавить(НоваяКолонка);
    КонецЦикла;
    
    МассивУдаляемыхРеквизитов = Новый Массив;
    Для каждого Кол Из  МассивРеквизитов Цикл
       МассивУдаляемыхРеквизитов.Добавить(Кол);
    КонецЦикла;
    ИзменитьРеквизиты(МассивРеквизитов);  //Создаются колонки у СоставГруппы
    //УдалитьРеквизитыТабЗнч();
    Для каждого ЭлементФормы Из МассивУдаляемыхРеквизитов Цикл
     Эл = Элементы.Найти("СоставГруппы" + ЭлементФормы.Имя);    
    Если  Эл <> Неопределено Тогда
       Элементы.Удалить(Эл);      
    КонецЕсли;
    КонецЦикла;
    
    ЭлементТЗ = Элементы.СоставГруппы;
    Для Каждого Колонка ИЗ СоставГруппы_Зн.Колонки Цикл
    НовыйЭлементФормы = Элементы.Добавить("СоставГруппы"+Колонка.Имя, Тип("ПолеФормы"), ЭлементТЗ); //Создается элемент формы, соответствующий колонке СоставГруппы
    НовыйЭлементФормы.Вид = ВидПоляФормы.ПолеВвода;
    НовыйЭлементФормы.ПутьКДанным = "СоставГруппы." + Колонка.Имя;
    ТабЗаг = Колонка.Заголовок;
    Если  ТабЗаг = "Период" Тогда
    НовыйЭлементФормы.Заголовок = "Дата прибытия в группу";
    КонецЕсли;
       КонецЦикла;
    ////////////////////////////////////////////////////////////////////////////////
    ЗначениеВРеквизитФормы(СоставГруппы_Зн, "СоставГруппы");

    КонецПроцедуры
1 Рэйв
 
09.06.15
07:37
(0)Открой для себя динамический список
2 blueisacolour
 
09.06.15
07:39
простите,это старый код,вот текущий:
Если Объект.Ссылка.Пустая() Тогда
        Возврат;
    КонецЕсли;
    
    СоставГруппы_Зн = РеквизитФормыВЗначение("СоставГруппы");
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("Дата"    , ДатаСреза);
    Запрос.УстановитьПараметр("Группа"    , ЭтотОбъект.Объект.Ссылка);
    
    Запрос.Текст =
    "ВЫБРАТЬ
    |    дс_СведенияОДетяхСрезПоследних.Период,
    |    дс_СведенияОДетяхСрезПоследних.Ребенок
    |ИЗ
    |    РегистрСведений.дс_СведенияОДетях.СрезПоследних(&Дата, ) КАК дс_СведенияОДетяхСрезПоследних
    |ГДЕ
    |    дс_СведенияОДетяхСрезПоследних.СтатусРебенка = ЗНАЧЕНИЕ(Перечисление.дс_СтатусыРебенка.Принят)
    |    И дс_СведенияОДетяхСрезПоследних.Группа = &Группа";
    
    СоставГруппы_Зн = Запрос.Выполнить().Выгрузить();
    МассивРеквизитов = Новый Массив;
    Для Каждого Колонка ИЗ СоставГруппы_Зн.Колонки Цикл
    МассивТипов = Новый Массив;
    МассивТипов.Добавить(Колонка.ТипЗначения);
    НоваяКолонка = Новый РеквизитФормы(Колонка.Имя, Новый ОписаниеТипов(МассивТипов), "СоставГруппы");
    МассивРеквизитов.Добавить(НоваяКолонка);
    КонецЦикла;
    
    МассивУдаляемыхРеквизитов = Новый Массив;
    Для каждого Кол Из  СоставГруппы_Зн.Колонки Цикл
       МассивУдаляемыхРеквизитов.Добавить("СоставГруппы" + "." + Кол.Имя);
    КонецЦикла;
    ИзменитьРеквизиты(МассивРеквизитов,МассивУдаляемыхРеквизитов);  //Создаются колонки у СоставГруппы
    //УдалитьРеквизитыТабЗнч();
    Для каждого ЭлементФормы Из МассивУдаляемыхРеквизитов Цикл
     Эл = Элементы.Найти("СоставГруппы" + ЭлементФормы.Имя);    
    Если  Эл <> Неопределено Тогда
       Элементы.Удалить(Эл);      
    КонецЕсли;
    КонецЦикла;
    
    ЭлементТЗ = Элементы.СоставГруппы;
    Для Каждого Колонка ИЗ СоставГруппы_Зн.Колонки Цикл
    НовыйЭлементФормы = Элементы.Добавить("СоставГруппы"+Колонка.Имя, Тип("ПолеФормы"), ЭлементТЗ); //Создается элемент формы, соответствующий колонке СоставГруппы
    НовыйЭлементФормы.Вид = ВидПоляФормы.ПолеВвода;
    НовыйЭлементФормы.ПутьКДанным = "СоставГруппы." + Колонка.Имя;
    ТабЗаг = Колонка.Заголовок;
    Если  ТабЗаг = "Период" Тогда
    НовыйЭлементФормы.Заголовок = "Дата прибытия в группу";
    КонецЕсли;
       КонецЦикла;
    ////////////////////////////////////////////////////////////////////////////////
    ЗначениеВРеквизитФормы(СоставГруппы_Зн, "СоставГруппы");
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн