Имя: Пароль:
1C
1С v8
Удаление реквизитов, созданных программно
0 r_i_n_i_k
 
19.09.12
11:10
8.2 УП
при формировании отчета программно создаются вкладки и табличные документы в них. При повторном заполнении отчета выпадает ошибка, т.к. создаются вкладки, которые уже созданы..но если вручную закрыть и открыть отчет, то опять отлично заполняется.. Подскажите, как в коде очистить все эти элементы и реквизиты, созданные программно?
1 Фокусник
 
19.09.12
11:13
(0) Массив. В него при добавлении добавить элементы.
При повторном добавлении либо искать элементы: есть - не добавлять, либо перед повторным добавлением удалить все эти элементы (из массива) с формы
2 r_i_n_i_k
 
19.09.12
11:18
(1) я создаю программно
* вкладку
* реквизит с типом ТД
* элемент формы, где путь к данным - это реквизит

т.е. это всё добавлять в массив и перед формированием искать элементы этого массива по форме и удалять, если нашли?
3 Reset
 
19.09.12
11:23
Если КудаВыводить=Неопределено тогда
  /// Создать всю эту лабудень
КонецЕсли;

// Выводить в КудаВыводить
4 r_i_n_i_k
 
19.09.12
11:32
(3)
да, так работает, когда при повторном формировании было создано меньше или столько же вкладок...а как быть с лишщними вкладками?  т.е. при первом формировании создало 4 вкладки, а при повторном нужны лишь 2?
5 Reset
 
19.09.12
11:46
Для ОчереднаяВозможноНужнаяВкладка из КоллекцияОписанийПараметровВкладокНапримерСоотвествиеИлиМассив цикл
 Если НужнаВЭтомВарианте(ОчереднаяВозможноНужнаяВкладка.Имя) тогда
    Если ОчереднаяВозможноНужнаяВкладка.КудаВыводить=Неопределено тогда
        /// Создать всю эту лабудень
    КонецЕсли;
    /// Выводить в КудаВыводить
 Иначе
    Если ОчереднаяВозможноНужнаяВкладка.КудаВыводить<>Неопределено тогда
        /// Удалить или скрыть вкладку
    КонецЕсли;
 КонецЕсли;
КонецЦикла;
6 Reset
 
19.09.12
11:49
или
Для Очередная из КоллекцияОписанийПараметровВкладокНапримерСоотвествиеИлиМассив цикл
    Если ОчереднаяВозможноНужнаяВкладка.КудаВыводить<>Неопределено тогда
        /// Удалить или скрыть вкладку

    КонецЕсли;
КонецЦикла;

Для каждого ОчереднаяНужная из СписокНужных цикл
    Если КоллекцияОписанийПараметровВкладокНапримерСоотвествиеИлиМассив[ОчереднаяНужная]=Неопределено тогда
        /// Создать всю эту лабудень, запомнить в КоллекцияОписанийПараметровВкладокНапримерСоотвествиеИлиМассив

    КонецЕсли;
    /// Выводить в КудаВыводить
КонецЦикла;
7 Reset
 
19.09.12
11:50
Чувствую себя преподавателем на уроке информатики
8 Reset
 
19.09.12
11:51
или наоборот, студентом (или школьником, информатика в школе вроде)
9 Фокусник
 
19.09.12
12:47
(2) >т.е. это всё добавлять в массив и перед формированием искать элементы этого массива по форме и удалять, если нашли?

Да, т.е. убиваешь всё, что было созданно программно.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший