Имя: Пароль:
1C
1С v8
ТЗ реквизит формы, удаляю колонки программно, они только очищаются...
0 SkillUp
 
17.11.20
17:26
Здравствуйте, не могу удалить колонки из реквизита формы таблицы значений ("данные"). Они только очищаются. После удаления остается 1 одна, как и должно быть. Но визуально (на стороне пользователя) вижу все колонки ТЗ и они просто пустые...

Создаю колонки:
    ЭлементыФормы.Данные.Колонки.Очистить();
    Данные.Очистить();
        
    МассивСкладов = ПолучитьВсеСклады();
    
    КолонкиТаблицы = Данные.Колонки;
    ОчереднойНомерКолонки = 0;
        
    ТекущаяКолонка = КолонкиТаблицы.Найти("Номенклатура");
    СдвинутьКолонку(ТекущаяКолонка, ОчереднойНомерКолонки);
    
    Для Каждого Склад ИЗ МассивСкладов Цикл
                    
            СтрокаБезСимв = УбратьЛишниеСимволы(Склад);
            
            НомерСоответствияТекущейКолонки = мСоответствиеТиповЦен[СтрокаБезСимв];
            Если НомерСоответствияТекущейКолонки = Неопределено Тогда
                НомерСоответствияТекущейКолонки = МассивСкладов.Количество();
                мСоответствиеТиповЦен.Вставить(СтрокаБезСимв, мСоответствиеТиповЦен.Количество());
            КонецЕсли;
            
            // Колонки.
            ТекущаяКолонка = КолонкиТаблицы.Найти(СтрокаБезСимв);
            Если ТекущаяКолонка = Неопределено Тогда // надо вставить
                КолонкиТаблицы.Вставить(ОчереднойНомерКолонки, СтрокаБезСимв, Новый ОписаниеТипов("Булево"), Склад, 25);
                ОчереднойНомерКолонки = ОчереднойНомерКолонки + 1;
            Иначе
                СдвинутьКолонку(ТекущаяКолонка, ОчереднойНомерКолонки);
            КонецЕсли;
            
            // Все, что за пределами, надо удалить.
            Для НомерУдаляемойКолонки = ОчереднойНомерКолонки По КолонкиТаблицы.Количество() - 1 Цикл
                КолонкиТаблицы.Удалить(ОчереднойНомерКолонки);
            КонецЦикла;
            
            ЭлементыФормы.Данные.СоздатьКолонки();
        
    КонецЦикла;


Удаляю:

Счетчик = Данные.Колонки.Количество()-1;    
    Пока Счетчик >= 0 Цикл
        
        Колонка = Данные.Колонки[Счетчик];
        
        Если Колонка.Имя = "Номенклатура" Тогда
            Прервать;
        КонецЕсли;    

        Индекс = НовМассиСкладов.Найти(Справочники.Склады.НайтиПоНаименованию(Колонка.Заголовок));
        Если Индекс = Неопределено Тогда
            ЭтаФорма.Данные.Колонки.Удалить(Колонка);
        КонецЕсли;
        Счетчик = Счетчик - 1;
    КонецЦикла;
1 SkillUp
 
17.11.20
17:28
После удаления остается 1 одна- смотрю через отклчик Данные.Колонки.Количество() !
2 I_am_rrrrED
 
18.11.20
09:58
А элемент, который заполняется из ТЗ на форме, как называется?
3 Ёпрст
 
гуру
18.11.20
10:18
ЭлементыФормы.Данные.ОбновитьСтроки()
4 arsik
 
гуру
18.11.20
10:20
(3) ЭлементыФормы.Данные.СоздатьКолонки()
5 arsik
 
гуру
18.11.20
10:23
(0) И зачем при создании СоздатьКолонки() внутри цикла? Делай 1 раз после цикла.