Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

ТЗ реквизит формы, удаляю колонки программно, они только очищаются...

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

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


Удаляю:

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

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

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.