Имя: Пароль:
1C
1С v8
Загрузка ТабличнойЧасти на управляемой форме из реквизита (ТЧ "по умолчанию").
, ,
0 bplmeddy
 
10.09.18
10:27
Доброго времени суток.

Интересует такой вопрос: имеется некая обработка. В ней имеется табличная часть. При работе с формой обработки, программно создаются новые колонки этой ТЧ (которые не описаны в структуре конфигурации). Есть ли возможность программно загрузить, так сказать "чистую" (та что описана в структуре) ТЧ, не затронув остальную форму (поля ввода и так далее) ? Буду очень благодарен за помощь.
1 RomaH
 
naïve
10.09.18
10:31
да - добавив в источник данные "остальной формы"
2 bplmeddy
 
10.09.18
10:32
(1) Имеете ввиду что все поля нужно описывать реквизитами обработки ?
3 Мимохожий Однако
 
10.09.18
10:37
(2) Да. Но твои объяснения невнятные. Вариантов реализации - куча.
4 bplmeddy
 
10.09.18
10:42
(3) Хм, попробую так: есть управляемая форма. На ней размещены несколько полей ввода и ТЧ. В реквизитах обработки описана только ТЧ. Во время работы с формой, при некоторых условиях программно создаются колонки ТЧ. Нужно при, например нажатии кнопки, программно созданные колонки убрать, и привести ТЧ к тому виду, который описан структурой конфигурации (реквизит обработки).
5 Мимохожий Однако
 
10.09.18
10:45
(4) Расшифруй слова:"который описан структурой конфигурации (реквизит обработки)."
6 Мимохожий Однако
 
10.09.18
10:47
Можно создать все колонки в ТЧ сразу и по нужной команде играться с видимостью и доступностью
7 bplmeddy
 
10.09.18
10:55
(5) Сама таблица создана реквизитом в обработке.
Скриншот структуры обработки: http://i.piccy.info/i9/ab6e6a6ff33dac7b439d63683ce074a5/1536566116/14130/1248074/REKV.jpg
8 bplmeddy
 
10.09.18
11:19
Так можно как-то "загрузить" ТЧ "первозданного" вида? Возможно кто-то сталкивался уже с подобной задачей ?
9 bplmeddy
 
10.09.18
11:29
Есть кто-нибудь ? :)
10 bplmeddy
 
10.09.18
11:46
Людии, ау ? Спасите-помогите :)
11 Вафель
 
10.09.18
11:47
запоминай созданные коолнки - потом их удалишь
12 bplmeddy
 
12.09.18
14:10
Решение:



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

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

&НаКлиенте
Процедура ВидыУстанавливаемыхЦенПриИзменении(Элемент)
    ВидыУстанавливаемыхЦенПриИзмененииНаСервере();
КонецПроцедуры

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

&НаКлиенте
Процедура ВидыУстанавливаемыхЦенНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    УдалитьКолонки();
КонецПроцедуры
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн