Имя: Пароль:
1C
1С v8
Управляемые формы. Таблица значений. Удаление колонки
0 wylde
 
02.10.12
16:34
Есть например такая таблица значений на форме.

http://s61.radikal.ru/i171/1210/b4/8a363aa53c69.jpg

Как программно удалить колонку?  

Колонки = ТЗ.Колонки - пишет поле объекта не обнаружено (Колонки)
1 5 Элемент
 
02.10.12
16:34
ИзменитьФорму
2 5 Элемент
 
02.10.12
16:35
Элементы.ХХ.Видимость
3 wylde
 
02.10.12
16:35
а что изменить то конкретно нужно? С управляемыми формами редко сталкиваюсь.
4 MSII
 
02.10.12
16:36
ИзменитьРеквизиты
5 Asmody
 
02.10.12
16:37
(0) на форме не бывает таблицы значений. на форме бывает элемент таблица. и ещё может быть реквизит формы типа таблица значений
6 wylde
 
02.10.12
16:39
2 5 Элемент: Не, нужно именно удалить колонку, не через видимость
7 5 Элемент
 
02.10.12
16:39
см (4)
8 MSII
 
02.10.12
16:40
В общем, если нужно изменить состав реквизитов - см. метод УФ ИзменитьРеквизиты
Если достаточно удалить элемент формы - удаляй его, используя метод Удалить коллекции Элементы УФ.
9 Defender aka LINN
 
02.10.12
16:45
(8) Заипешься, я гарантирую это.
10 wylde
 
02.10.12
16:45
ок, спасибо попробую разобраться.
11 5 Элемент
 
02.10.12
16:47
Тебе ТЗ нужна без колонок или форма без колонок?
12 wylde
 
02.10.12
16:58
Думаю что проще наверное будет создать обычную таблицу значений на сервере удалить нужные колонки, а потом уже ее выгрузить на клиент на управляемую форму.
13 Defender aka LINN
 
02.10.12
16:58
(12) бггггг. Удачи :)
14 IKSparrow
 
02.10.12
17:37
(12) Он (13) что-то знает... Я бы прислушался...
15 Pro-tone
 
02.10.12
17:44
(0) а для каких целей это надо?

(12) Строить типизированную ТЗ на сервере имеет смысл только для каких-нибудь демонически изменяемых расчетов, а если ТЗ нужна только для вывода данных на форму - тогда нарисовать ТЗ на форме с тем кол-вом колонок которые будут использоваться, а ненужные просто скрывать или закрывать доступность, к примеру.
16 wylde
 
02.10.12
18:17
Спасибо разобрался, в общем вот она рыба моей мечты ))

Удалять колонки можно только из таблиц которые были созданы программно
поэтому создаем программно таблицу с колонками

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

   
   ТЗ_Объект = Новый ТаблицаЗначений;
   ТЗ_Объект.Колонки.Добавить("Кол1", Новый ОписаниеТипов("Строка"));
   ТЗ_Объект.Колонки.Добавить("Кол2", Новый ОписаниеТипов("Строка"));    
   
   
   // Создание Реквизита формы типа ДанныеФормыТЗ
   МассивДобавляемыхРеквизитов = Новый Массив;
   МассивДобавляемыхРеквизитов.Добавить(Новый РеквизитФормы("ТЗ", Новый ОписаниеТипов("ТаблицаЗначений")));
   
   Для Каждого Колонка Из ТЗ_Объект.Колонки Цикл
       МассивДобавляемыхРеквизитов.Добавить(Новый РеквизитФормы(Колонка.Имя, Колонка.ТипЗначения, "ТЗ"));
   КонецЦикла;
     
   ИзменитьРеквизиты(МассивДобавляемыхРеквизитов);

   // Преобразование объекта прикладного типа ТаблицаЗначений
   // в реквизит управляемой формы (данные формы)
   ЗначениеВРеквизитФормы(ТЗ_Объект, "ТЗ");

   //ЭтаФорма.Элементы.Удалить(ЭлементФормы);
   
   // Создание элемента формы типа ТаблицаФормы для отображения ТЗ
   ЭлементТЗ = Элементы.Добавить("ТЗ", Тип("ТаблицаФормы"));
   ЭлементТЗ.ПутьКДанным = "ТЗ";
   ЭлементТЗ.Отображение = ОтображениеТаблицы.Список;

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

   
КонецПроцедуры



а затем уже можно колонки удалять


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