Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2, свеженьких 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Программное добавление Динамической колонки на форму          
myr4ik07 Подменю пользователя
сообщение 09.01.16, 0:43
Сообщение #1

Говорящий
***
Группа: Пользователи
Сообщений: 54
Спасибо сказали: 0 раз
Рейтинг: 0

Нужно создать столько Колонок на форме в ТаблицеЗначений сколько есть Элементов Справочника

Код
Процедура Добавление()

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

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

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


...Показать

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


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

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


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

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

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

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

то уже и в столбец не выводит и показывает сообщение то, что в первом посте моем

Сообщение отредактировал Vofka - 11.01.16, 8:53

хакерок Подменю пользователя
сообщение 28.01.16, 17:57
Сообщение #2

Оратор
*****
Группа: Пользователи
Сообщений: 258
Из: Київ
Спасибо сказали: 12 раз
Рейтинг: 0

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

Там проще с выводом вопрос решать

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 19.04.24, 23:15
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!