Имя: Пароль:
1C
 
Внешняя обработка. Работа с табличным полем.
0 kindecstasy
 
08.09.09
02:17
Здравствуйте. Только начинаю осваивать конфигурирование. Использую 1С8.1 "Версия для обучения программированию". Столкнулся с проблемой. Как заполнять строки табличного поля? Пусть Таб1 - Табличное поле на форме. Плюс у него 2 колонки: Имя и Время. Пытаюсь вытворять такое:

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

Пытаюсь создать новую строку и заполнить значениями из справочника, у которых пометка на удаление взведена. Но эта зараза, добавляет всего одну запись, которая идёт самая последняя по порядку в справочнике. И одинаковых записей ровно столько, сколько всего записей в справочнике.

Как я понял, работа с этим контролом кардинально отличается от дельфового TListView?? Короче, дайте пожалуйста рабочий пример, а если вас не затруднит, обьясните, что я делаю не так.

Кстати, если заменяю кусок:

ТабличноеПоле1.Добавить();
           ТабличноеПоле1.ЗаполнитьЗначения(Запись.Наименование,"Имя");
           ТабличноеПоле1.ЗаполнитьЗначения(Запись.Цена,"Время");

на

Сообщить(Запись.Наименование+" "+Запись.Время);

то процедурка корректно пробегает по записям.

Грешу конечно на себя, скорее всего просто не правильно заполняю табличку.
1 ТелепатБот
 
гуру
08.09.09
02:17
2 quest
 
08.09.09
02:35
свяжи с ТЗ и в нее пиши

Процедура ЗаполнитьТаблицу1()
    Выборка = Справочники.Справочник1.Выбрать();
   Пока Выборка.Следующий() Цикл
       Запись = Выборка.ПолучитьОбъект();        
       Если Запись.ПометкаУдаления Тогда            
           ч = ТЗ.Добавить();
           ч.Имя = Запись.Наименование;
           ч.Время = Запись.Цена;    
       КонецЕсли        
   КонецЦикла;    
КонецПроцедуры
3 kindecstasy
 
08.09.09
03:01
Если я вас правильно понял, сделал вот так:

Процедура ЗаполнитьТаблицу2()
   Выборка = Справочники.Справочник1.Выбрать();
   ТЗ = Новый ТаблицаЗначений;
   ЭлементыФормы.ТабличноеПоле1.Значение = ТЗ;
   Пока Выборка.Следующий() Цикл
       Запись = Выборка.ПолучитьОбъект();        
       Если Запись.ПометкаУдаления Тогда            
           ч = ТЗ.Добавить();
           ч.Имя = Запись.Наименование;
           ч.Время = Запись.Цена;    
       КонецЕсли        
   КонецЦикла;    
КонецПроцедуры

Результата к сожалению не изменился. Если не правильно, обьясните пожалуйста.
4 quest
 
08.09.09
03:39
тыкни в свйоства своего поля и укажи в данных - ТЗ тип - тпблица значений.
5 kindecstasy
 
08.09.09
05:51
quest, спасибо тебе. Это работает. Пока ещё конечно не совсем понятно как, но факт - есть факт :)
Ошибка? Это не ошибка, это системная функция.