Имя: Пароль:
1C
1С v8
Одним движением выгрузить ТЗ в ТабличныйДокумент
0 igel1969
 
26.04.16
12:24
1С 8.2, УТ 103.

Здравствуйте.
Есть ТЗ, в которой около 5000 строк.
Для каждой строки я делаю:
ОбластьТабл.Параметр.Наименование = Стр.Наименование....
ну и так три параметра.
ТабДок.Вывести(ОбластьТаб).

Для 5000 строк это занимает около 40 секунд.
Не очень красиво.

А нет ли возможности выгрузить целиком всю ТЗ в ТабличыйДокумент?
1 Тролль главный
 
26.04.16
12:25
чето долго
2 ptiz
 
26.04.16
12:26
(0) Заменить значения ссылочного типа на примитивные, и будет быстро.
3 Бубка Гоп
 
26.04.16
12:30
(0) 40 сек? Это что же ты там такого накодил то?
4 Рэйв
 
26.04.16
12:31
(0)гдето давно встречал такой вариант.
Не знаю правда насколько он сейчас работоспособен.

//---    
    Построитель = Новый ПостроительОтчета;
    Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(РезультатТЗ);
    Построитель.МакетОформления = ПолучитьМакетОформления(СтандартноеОформление.Асфальт);
    
    Построитель.Выполнить();  
    Построитель.ВыводитьЗаголовокОтчета = Истина;
    Построитель.ТекстЗаголовка = "Данные таблицы значений";    

    Для каждого Колонка Из Построитель.ВыбранныеПоля Цикл
       Колонка.Представление = РезультатТЗ.Колонки[Колонка.Имя].Заголовок;
    КонецЦикла;

    МакетТД = Новый ТабличныйДокумент;
    Построитель.Вывести(МакетТД);
    ОбластьТД = МакетТД.Область();
    ОбластьТД.ШиринаКолонки = 20;    
    МакетТД.ТолькоПросмотр = Истина;
    МакетТД.ФиксацияСверху = 4;
    МакетТД.ОтображатьЗаголовки = Истина;
    МакетТД.Показать();
5 igel1969
 
26.04.16
12:31
(2) ну в параметры уже примитивные заносятся, а в ТЗ ссылочные хранятся. это имеет значение?
т.е.:

Для каждого Стр из Контрагенты Цикл
        ОбластьТабл.Параметры.Код = Стр.Контрагент.Код;
        ОбластьТабл.Параметры.Наименование = Стр.Контрагент.Наименование;
        ОбластьТабл.Параметры.Адрес = Стр.Адрес;
        ТабДок.Вывести(ОбластьТабл);
        ЭлементыФормы.Индикатор1.Значение = ЭлементыФормы.Индикатор1.Значение + 1;
    КонецЦикла;
6 Тролль главный
 
26.04.16
12:32
(5) потому что через точку
7 Тролль главный
 
26.04.16
12:32
используй запрос
8 Бубка Гоп
 
26.04.16
12:33
(5) а, теперь понятно почему 40 сек.
9 Бубка Гоп
 
26.04.16
12:34
(8) + в свое время за такое по ручкам били...
10 Timon1405
 
26.04.16
12:35
(5) добавить в ТЗ внутреннее соединение со справочником контрагентов, вытащить код и наименование, заполнять ими, а не через точку
11 igel1969
 
26.04.16
12:37
(2) (7) да, в запросе стал сразу выбирать код и наименование, в ТЗ тоже помещать только их (без ссылки) и стало все работать 5 секунд. тоже не моментально, но уже пойдет. спасибо
12 Бубка Гоп
 
26.04.16
12:39
(11) Замер производительности сделай, посмотри где время теряешь. Небось еще где то начудил
13 hhhh
 
26.04.16
12:42
(12) ну здесь похоже

      ЭлементыФормы.Индикатор1.Значение = ЭлементыФормы.Индикатор1.Значение + 1;


5000 раз выврдит форму на экран.
14 Бубка Гоп
 
26.04.16
12:47
(13) а, ну да. Похоже ты прав!
15 igel1969
 
26.04.16
12:47
(13) да, после того как перешел со ссылок на текст надобность в индикаторе отпала, а если убрать индикатор, то и 5 секунд задержки пропадает.
AdBlock убивает бесплатный контент. 1Сергей