Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Программное добавление Динамической колонки на форму
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.3
myr4ik07
Нужно создать столько Колонок на форме в ТаблицеЗначений сколько есть Элементов Справочника

необходимо зарегистрироваться для просмотра ссылки
Процедура Добавление()

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

    Линия = Справочники.прЛинии.Выбрать();
    Пока Линия.Следующий() Цикл
        Список.Добавить(Линия.Ссылка);
    КонецЦикла;
    Для Каждого эл Из Список Цикл
        эл.Представление = СтрЗаменить(эл," ","");
        ДобавитьКолонку("ТаблицаЗначенийКолонок",эл.Представление,эл.Представление);
    КонецЦикла;
        
КонецПроцедуры

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


...Показать

вот
НоваяКолонка.ПутьКДанным = ИмяТаблицы + "." + ИмяКолонки;


здесь когда доходит до Динамического добавления Колонок (из Справочника) получаю

Цитата
{Документ.РобочийТабель.Форма.ФормаДокумента.Форма(106)}: Ошибка при установке значения атрибута контекста (ПутьКДанным)
НоваяКолонка.ПутьКДанным = ИмяТаблицы + "." + ИмяКолонки;
по причине:
Недопустимое значение


кстати, есть еще такой кусок
    
        Линия = Справочники.прЛинии.Выбрать();    
    НовыеКолонки = Новый Массив;    
    Пока Линия.Следующий()Цикл
        Список.Добавить(Линия.Ссылка);     
    КонецЦикла;    
    
    Для Каждого элеме Из Список Цикл
        элеме.Представление = "К_"+СтрЗаменить(элеме," ","");;    
        НовыеКолонки.Добавить(Новый РеквизитФормы(элеме.Представление,
        Новый ОписаниеТипов("СправочникСсылка.прЛинии"), , элеме.Значение));    
    КонецЦикла;
    
    ИзменитьРеквизиты(НовыеКолонки);

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

и тут выводяться все колонки, но выводяться не в рядк, а в столбец и есл я
НовыйЭлемент = Элементы.Добавить(Колонка.Имя,Тип("ПолеФормы"),ЭтаФорма);

изменяю на
НовыйЭлемент = Элементы.Добавить(Колонка.Имя,Тип("ПолеФормы"),Элементы.ТаблицаЗначенийКолонок);

то уже и в столбец не выводит и показывает сообщение то, что в первом посте моем
хакерок
А может имеет смысл использовать поле с типом ТабличныйДокумент и СКД для вывода данных

Там проще с выводом вопрос решать
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.