Имя: Пароль:
1C
1С v8
Динамическое добавление колонок в УФ
0 default90374
 
24.03.14
20:16
Есть регистр сведений с измерениями Номенклатура, Группа пользователей.

Ну запрос легко сделать чтобы показать уникальные вхождения групп пользователей. Так вот надо в Реализации добавить колонки с именами этих групп пользователей и если по номенклатуре есть соответствующие данные в регистре, то в колонках прописать значения ресурса. Где копать?
1 banco
 
24.03.14
20:44
в чем проблема то?  ну добавь колонки и заполняй
2 Zamestas
 
24.03.14
20:46
(0) Добавляешь колонки реквизитов, ИзменитьРеквизиты(), Добавляешь (или вставляешь) поля в табличную часть, попутно вяжешь с реквизитами созданными ранее (если нужно - привязываешь обработчики) - ПриЧтенииНаСервере заполняешь что нужно.
3 default90374
 
24.03.14
20:52
Ага... А пример кода можно?
4 Zamestas
 
24.03.14
22:03
(3) Немного обрезанный кусок из нетленки (у меня для динамического создания элементов свои модули):

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

&НаКлиенте
Процедура ПриИзмененииКолонки1(Элемент)
    сообщить("Измена!");    
КонецПроцедуры