Имя: Пароль:
IT
 
Проблемы с выгрузкой Табличной части документа
0 Demonic10
 
22.10.12
09:19
Всем привет. Пишу отчет на 1c v7.7, освавивая весь язык по ходу дела и напарываясь на кучу проблем, но вот с последней не могу разобраться уже довольно долго. Собственно потому и решил обратиться сюда. Суть проста - я выгружаю табличную часть документа в заранее созданную таблицу значений, но при этом в таблицу, по совершенно неведомой мне причине, записывается лишь последняя строка табличной части. Может я как -то неправильно использую метод?
1 Demonic10
 
22.10.12
09:20
Вот код.

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

   Состояние("Заполнение выходной таблицы...");

   Таб.ТолькоПросмотр(1);
   Таб.Показать("Сформировать", "");
КонецПроцедуры
2 Галахад
 
гуру
22.10.12
09:24
Таб.ВывестиСекцию("Строка");  
почему за циклом?
3 Demonic10
 
22.10.12
09:26
(2) А... не обращая внимание, надо так. Нужная мне часть находитться вот здесь вот.
ТаблЗнач = СоздатьОбъект("ТаблицаЗначений");
ТекДок.ВыгрузитьТабличнуюЧасть(ТаблЗнач);
4 butterbean
 
22.10.12
09:27
(0) почему ты решил что там одна строка??
5 Demonic10
 
22.10.12
09:29
(4) Посмотрел в отладчике.
6 Demonic10
 
22.10.12
09:41
К тому же после того, как я осуществляю Выборку, чтобы пройтись по строкам - они все оказываются пустыми.
7 Demonic10
 
22.10.12
09:47
И да, еще один непонятный момент - после этой строки
ТаблЗнач.ВыбратьСтроки();
элементы ТаблЗнач перезаписываются на пустые строки
8 oartemyev
 
22.10.12
11:37
у тебя в коде ошибка :

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

ты перебираешь все строки, а в Таб выводишь после выхода из цикла, а не внутри него. потому и выводится только последнее.
Используй :
          // Создаем выборку по строкам Табличной части документа реализации
           ТаблЗнач.ВыбратьСтроки();
           
           // Проходимся по строкам табличной части документа реализации
           Пока ТаблЗнач.ПолучитьСтроку() = 1 Цикл
               //ТекСтр = СоздатьОбъект("ТаблицаЗначений");
               ТекСтр = ТаблЗнач.ТекущаяСтрока();
               
               Таб.ВывестиСекцию("Строка");                    
           КонецЦикла;
9 nv24
 
22.10.12
11:40
(8) молодец.