Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
11 дек 2024, 18:48

Табличное поле

Автор nvstyle, 04 янв 2011, 16:27

0 Пользователей и 1 гость просматривают эту тему.

nvstyle

Доброго времени суток. Вопрос такой.

Необходимо выгрузить запрос в табличное поле. В нем (Табличном поле) созданы колонки идентичне наименованию в запросе. Хотелось бы узнать в чем разница между записями:

              ТабличноеПоле1 = Запрос.Выполнить().Выгрузить(); //При такой записи запрос выгружается
    
              ЭлементыФормы.ТабличноеПоле1 = Запрос.Выполнить().Выгрузить(); // ругается "Поле объекта недоступно для записи (ТабличноеПоле1)"

progmikon

Если вы очень хотите использовать "ЭлементыФормы", тогда пишите так

ЭлементыФормы.ТабличноеПоле1.Значение = Запрос.Выполнить().Выгрузить();

nvstyle

Цитата: progmikon от 06 янв 2011, 13:11
Если вы очень хотите использовать "ЭлементыФормы", тогда пишите так

ЭлементыФормы.ТабличноеПоле1.Значение = Запрос.Выполнить().Выгрузить();


Спасибо за ответ. Но я это знаю. Мне хотелось бы узнать, в чем разница именно между записями? Ведь и в той и той записи ссылается на реквизит табполя

progmikon

Цитата: nvstyle от 06 янв 2011, 18:04
Цитата: progmikon от 06 янв 2011, 13:11
Если вы очень хотите использовать "ЭлементыФормы", тогда пишите так

ЭлементыФормы.ТабличноеПоле1.Значение = Запрос.Выполнить().Выгрузить();


Спасибо за ответ. Но я это знаю. Мне хотелось бы узнать, в чем разница именно между записями? Ведь и в той и той записи ссылается на реквизит табполя
Посмотрите в отладчике тип значения:
Для ЭлементыФормы.ТабличноеПоле1 - это "ТабличноеПоле", а для
ТабличноеПоле1 - "ТаблицаЗначений".

nvstyle

Спасибо за ответ!

progmikon


nvstyle

Появился такой вопрос. По результату запроса, нобходимо добавить колонки в ТабПоле (количеств колонок заранее неизвестно, знаю только тип ввоимых данных). Делаю это так:

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

Более предметно:

Если убрать эту часть кода (т.к. такоя колонка уже создана на форме):

ТаблицаДанных.Колонки.Добавить("Студент", Новый ОписаниеТипов("СправочникСсылка.Студент"));
     
     Студент = ЭлементыФормы.ТабличноеПоле1.Колонки.Добавить("Студент", "Студент");
     Студент.Данные = "Студент";
     Студент.УстановитьЭлементУправления(Тип("ПолеВвода"));
     Студент.ЭлементУправления.ТипЗначения = Новый ОписаниеТипов("СправочникСсылка.Студент");

Тогда в результате, в ней ничего не отображается... Я так понимаю, что из-за этого ТабличноеПоле1 = ТаблицаДанных;
Суть вопроса такова: Можно ли заранее создать на форме колонку, а потом к ней вручную добавить еще ?

nvstyle

Ткните носом, где почитать, как записать данные из документа в регистр сведений, при условии, что количество колонок неизвестно (если это возможно)

cska-fanat-kz

Цитата: nvstyle от 11 янв 2011, 14:00
Ткните носом, где почитать, как записать данные из документа в регистр сведений, при условии, что количество колонок неизвестно (если это возможно)

Не надо никаких извращений типа
Колонка.Данные = "Колонка" + х;
Колонка.УстановитьЭлементУправления(Тип("ПолеВвода"));
Колонка.ЭлементУправления.ТипЗначения = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(1));

Просто делаешь
ТабличноеПоле.Колонки.Добавить("Колонка"+Ш,Новый ОписаниеТипов("Число"),"Колонка"+Ш);
причем столько раз сколько нужно.
А потом одним махом
ЭлементыФормы.ТабличноеПоле.СоздатьКолонки();
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

nvstyle

Спасибо за совет!
Для того, что бы данные из табполя сохранялись, их надо записать, в регистрсведений? Воникает вопрос, как сделать, если количество колонок не известно.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск