gifts2017

Пример, как развернуть таблицу печати в горизонтальном виде (при этом не зная заранее, сколько будет столбцов)

Опубликовал Юрий Тимофеев (Tatitutu) в раздел Программирование - Практика программирования

Когда в итоговой таблице больше 2 параметров иногда хочется вывести
на печать в более удобном читаемом виде
например
по вертикали номенклатура -по горизонтали : места хранения
по вертикали номенклатура -по горизонтали : документы
по вертикали действия пользователя -по горизонтали : пользователь
и.т.д.

Данный пример будет работать на любой конфигурации 1С 77.

Показан только пример формирования таблицы

(с растяжкой по горизонтали - когда заранне не знаешь сколько будет итоговых столбцов)

В данном примере два списка:

список номенклатуры

список моделей

и таблица комплектации (она выглядит)

модель - номенклатура - количество

на рис(1) Вид обработки

на рис(2) "стандартный" вывод на печать ТЗ в вертикальном виде

на рис(3) горизонтальный вывод (растягивание) таблицы печати.

на рис (4) как выглядит макет в конфигураторе.

 

код открыт.Свободна для скачивания.

Может кто и предложит другой способ (более оригинальный распечать ТЗ как на рис(2) - буду очень признателен)

 

 

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
Primer print tab.ert
.ert 27,50Kb
20.02.12
376
.ert 27,50Kb 376 Скачать
С вариантом от Ёпрст (пост № 12)
.1249472237 15,00Kb
20.02.12
134
.1249472237 15,00Kb 134 Скачать
Пример от nikakoy (пост № 18)
.1249472314 14,50Kb
20.02.12
119
.1249472314 14,50Kb 119 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Brr (brr) 04.08.09 11:49
Просто и понятно, для новичков самое то
3. Александр Рытов (Арчибальд) 04.08.09 12:30
Вообще-то для таких вещей в языке запросов предусмотрено "ВошедшиеВЗапрос"
4. CCCР (Tatitutu) 04.08.09 12:40
(2) Спасибо тоже интересное решение.
(3) А можно пример ? (распечатать ТЗ на форме - не имея при этом запроса)
5. Александр Рытов (Арчибальд) 04.08.09 13:11
В чем вопрос-то? Как сформировать ТЗ без запроса? Или как распечатать ТЗ, где все колонки одинаковые, кроме первой и последней?
6. CCCР (Tatitutu) 04.08.09 13:15
(5) Вопрос и не стоял.
Написано пример :
(в частности вот для этой темы )
http://infostart.ru/forum/messages/forum9/topic10583/message85923/#message85923

ТЗ как на (Рис. 5756 . Внеший вид)
распечатать как в (Рис. 5758 . "горизонтальный" вид таблицы печати)
Без запроса

7. Александр Рытов (Арчибальд) 04.08.09 13:26
(6) То есть постановка задачи: сформировать таблицу значений, не пользуясь запросом.
Слушай Ёпрста в упомянутом форуме.
8. Александр Рытов (Арчибальд) 04.08.09 13:28
+7
3.Чтоб поглядеть, есть ли нужная колонка в ТЗ - не обязательно перебирать ВСЕ колонки в ТЗ
9. Сергей (Che) Коцюра (CheBurator) 04.08.09 13:33
Вылысыпыдысты ;-) ? есть более продвинутая разработка... - позволяет и группировать, и расшифровывать и еще чуть-чуть... (типа как в (2)):
http://infostart.ru/projects/942/
пример использования: http://infostart.ru/projects/522/
10. CCCР (Tatitutu) 04.08.09 13:34
(7) Я его и слушаю. Я же ему не перечу. У него свой вариант - у меня свой.

"есть ли нужная колонка в ТЗ - не обязательно перебирать ВСЕ колонки в ТЗ"

это уже третий раз говорят мне, а кто сможеть показать пример (честно научите, только без ВК)
11. CCCР (Tatitutu) 04.08.09 13:37
(9) Спасибо. Хороший пример. Буду знать
(но мой же пример по другому принципу работает и я думаю имеет право на жизнь)
12. Епрст (Ёпрст) 04.08.09 13:38
(10) Ну на..учись:

Если ТЗ.ВидимостьКолонки("ХренЗнаетКакойИдентификатор",1)=-1 Тогда
Сообщить("Нету в тз такой колонки");
Иначе
Сообщить("присутствует однако");
КонецЕсли;

:)
13. CCCР (Tatitutu) 04.08.09 13:44
14. Сергей (Che) Коцюра (CheBurator) 04.08.09 13:56
Вообще-то у автора подтасовка и тырение комплектующих ;-) ?
№п/п 7 - Упаковка - откуда там 13 взялось, если при суммировании всего 9 получается?
15. CCCР (Tatitutu) 04.08.09 14:04
(14) нет там такого )))
(столбцы закреплены ТП.Опции(0,0,4,3); и на скриншот не попали , а то длинный бы был)
16. Сергей (Che) Коцюра (CheBurator) 04.08.09 14:11
17. CCCР (Tatitutu) 04.08.09 14:12
(12) если на данном примере сравнить мой и твой вариант
то мой - 0,0312
с твоим вариантом - 0,0402

НО ! если добавить колонок в задание (до 256)

то мой - 1,467
с твоим вариантом - 0,586
Спасибо за вариант - предложенный Вами.
18. Nik (nikakoy) 05.08.09 13:02
а если так...
Начало похоже на http://djkxfhf.nm.ru/TZN/Rabota_s_TZN.html
В плане предварительной подготовки итогов

//*******************************************
Процедура Сформировать()
ТзМод=СоздатьОбъект("ТаблицаЗначений");
тз.Выгрузить(ТзМод);
ТзМод.Свернуть("Модель","Колво");
ТзМод.Сортировать("Модель");

ТзНом=СоздатьОбъект("ТаблицаЗначений");
тз.Выгрузить(ТзНом);
ТзНом.Свернуть("Номенклатура","Колво");


ТП=СоздатьОбъект("Таблица");


ТП.ВывестиСекцию("Шапка|Основа");
ТзМод.ВыбратьСтроки();
Пока ТзМод.ПолучитьСтроку() = 1 Цикл
списмод=СокрЛП(ТзМод.Модель);
ТП.ПрисоединитьСекцию("Шапка|Модель");
КонецЦикла;
ТП.ПрисоединитьСекцию("Шапка|Итого");

ТзВрем=СоздатьОбъект("ТаблицаЗначений");
тз.Выгрузить(ТзВрем);
ТзВрем.Свернуть("Номенклатура,Модель","Колво");
ТзВрем.Сортировать("Номенклатура,Модель");

ТекНом="";
ТекКолонка=ТзМод.КоличествоСтрок();
ТзВрем.ВыбратьСтроки();
Пока ТзВрем.ПолучитьСтроку() = 1 Цикл
Если ТзВрем.Номенклатура<>ТекНом Тогда
Если ТзВрем.НомерСтроки>1 Тогда
Для х=ТекКолонка По ТзМод.КоличествоСтрок() Цикл
ит=0;
ТП.ПрисоединитьСекцию("Строка|Модель");
КонецЦикла;
стр="";кол="";
ТзНом.НайтиЗначение(ТекНом,стр,кол);
ИтМод=ТзНом.ПолучитьЗначение(стр,"Колво");
ТП.ПрисоединитьСекцию("Строка|Итого");
КонецЕсли;
ТП.ВывестиСекцию("Строка|Основа");
ТекНом=ТзВрем.Номенклатура;
ТекКолонка=1;
КонецЕсли;
стр="";кол="";
ТзМод.НайтиЗначение(ТзВрем.Модель,стр,кол);
Пока ТекКолонка<стр-1 Цикл
ит=0;
ТП.ПрисоединитьСекцию("Строка|Модель");
ТекКолонка=ТекКолонка+1;
КонецЦикла;
ит=ТзВрем.Колво;
ТП.ПрисоединитьСекцию("Строка|Модель");
ТекКолонка=ТекКолонка+1;
КонецЦикла;

Для х=ТекКолонка По ТзМод.КоличествоСтрок() Цикл
ит=0;
ТП.ПрисоединитьСекцию("Строка|Модель");
КонецЦикла;

стр="";кол="";
ТзНом.НайтиЗначение(ТекНом,стр,кол);
ИтМод=ТзНом.ПолучитьЗначение(стр,"Колво");
ТП.ПрисоединитьСекцию("Строка|Итого");
тп.Показать();


КонецПроцедуры

Процедура ПриОткрытии()
ТЗ.НоваяКолонка("Модель","Строка",6,,,4);
ТЗ.НоваяКолонка("Номенклатура","Строка",50,,,20);
ТЗ.НоваяКолонка("Колво","Число",12,2,"Кол-во",3);

ном=СоздатьОбъект("СписокЗначений");
Ном.ДобавитьЗначение("Ткань шерстяная");
Ном.ДобавитьЗначение("Ткань капроновая");
Ном.ДобавитьЗначение("Ткань подкладочная");
Ном.ДобавитьЗначение("Шнур резиновый");
Ном.ДобавитьЗначение("Шнур текстурированный");
Ном.ДобавитьЗначение("Молния 45 см");
Ном.ДобавитьЗначение("Молния 15 см");
Ном.ДобавитьЗначение("Нашивка Герб большой");
Ном.ДобавитьЗначение("Нашивка Герб маленький");
Ном.ДобавитьЗначение("Вышивка");
Ном.ДобавитьЗначение("Термопечать");
Ном.ДобавитьЗначение("Кнопка");
Ном.ДобавитьЗначение("Нитки");
Ном.ДобавитьЗначение("Упаковка");

мод=СоздатьОбъект("СписокЗначений");
Мод.ДобавитьЗначение("281135");
Мод.ДобавитьЗначение("172138");
Мод.ДобавитьЗначение("111111");
Мод.ДобавитьЗначение("322589");
Мод.ДобавитьЗначение("125148");
Мод.ДобавитьЗначение("198700");
Мод.ДобавитьЗначение("855555");
Мод.ДобавитьЗначение("685243");
Мод.ДобавитьЗначение("200000");
Мод.ДобавитьЗначение("777000");
Мод.ДобавитьЗначение("789456");
Мод.ДобавитьЗначение("123545");

// добавим парочку моделей для примера
ТЗ.НоваяСтрока();
ТЗ.Модель = Мод.ПолучитьЗначение(1);
ТЗ.Номенклатура = Ном.ПолучитьЗначение(1);
ТЗ.Колво = 2.58;

ТЗ.НоваяСтрока();
ТЗ.Модель = Мод.ПолучитьЗначение(2);
ТЗ.Номенклатура = Ном.ПолучитьЗначение(2);
ТЗ.Колво = 2.93;

ТЗ.НоваяСтрока();
ТЗ.Модель = Мод.ПолучитьЗначение(3);
ТЗ.Номенклатура = Ном.ПолучитьЗначение(3);
ТЗ.Колво = 1.62;

ТЗ.НоваяСтрока();
ТЗ.Модель = Мод.ПолучитьЗначение(5);
ТЗ.Номенклатура = Ном.ПолучитьЗначение(4);
ТЗ.Колво = 0.94;

ТЗ.НоваяСтрока();
ТЗ.Модель = Мод.ПолучитьЗначение(1);
ТЗ.Номенклатура = Ном.ПолучитьЗначение(5);
ТЗ.Колво = 1;

Для Сч = 1 По Мод.РазмерСписка()-5 Цикл
ТЗ.НоваяСтрока();
ТЗ.Модель = Мод.ПолучитьЗначение(Сч);
ТЗ.Номенклатура = Ном.ПолучитьЗначение(14);
ТЗ.Колво = 1;
КонецЦикла;

ТЗ.НоваяСтрока();
ТЗ.Модель = Мод.ПолучитьЗначение(1);
ТЗ.Номенклатура = Ном.ПолучитьЗначение(6);
ТЗ.Колво = 2;

ТЗ.НоваяСтрока();
ТЗ.Модель = Мод.ПолучитьЗначение(1);
ТЗ.Номенклатура = Ном.ПолучитьЗначение(9);
ТЗ.Колво = 1;

Для Сч = Мод.РазмерСписка()-5 По Мод.РазмерСписка() Цикл
ТЗ.НоваяСтрока();
ТЗ.Модель = Мод.ПолучитьЗначение(Сч);
ТЗ.Номенклатура = Ном.ПолучитьЗначение(14);
ТЗ.Колво = 1;
КонецЦикла;

ТЗ.НоваяСтрока();
ТЗ.Модель = Мод.ПолучитьЗначение(1);
ТЗ.Номенклатура = Ном.ПолучитьЗначение(13);
ТЗ.Колво = 800;

ТЗ.НоваяСтрока();
ТЗ.Модель = Мод.ПолучитьЗначение(1);
ТЗ.Номенклатура = Ном.ПолучитьЗначение(14);
ТЗ.Колво = 1;

КонецПроцедуры

Переделал ПриОткрытии() для большей показательности.
Неправильно выводит номера строк. Это просто чтоб не трогать таблицу.
19. Nik (nikakoy) 05.08.09 13:20
Прошу прощения!!!
строка 50
Пока ТекКолонка<стр-1 Цикл
должна выглядеть
Пока ТекКолонка<стр Цикл
20. Владимир Корнев (smart-it) 05.08.09 13:39
21. CCCР (Tatitutu) 05.08.09 15:29
(18) продолжу как в (17)

если на данном примере сравнить мой, Ёпрст и твой вариант
мой - 0,0312
Ёпрст - 0,0402
nikakoy - 0,02398

НО ! если добавить колонок в задание (до 256)
//нет времени попробовать
// в (18) нужно две строки закоментировать
// //ном=СоздатьОбъект("СписокЗначений");
// //мод=СоздатьОбъект("СписокЗначений");
// так они уже есть на форме
22. Nik (nikakoy) 05.08.09 15:37
у меня на форме только тз.... и весь код при открытии нужен для автоматического заполнения тз....
Смысл в правильной(требуемой) сортировке и последующем создании необходимого числа свернутых табличек.....
23. CCCР (Tatitutu) 05.08.09 15:39
(22) Спасибо. Добавил ваши варианты в шапку.
(если против - уберу)
24. Епрст (Ёпрст) 06.08.09 11:07
Ё... вариант №2 неправильный... да еще и медленный..
25. Епрст (Ёпрст) 06.08.09 11:08
Вариант №1 - аналогично - не верный!!!
26. Епрст (Ёпрст) 06.08.09 11:10
Вот только 3-ий вариант рабочий..
27. Епрст (Ёпрст) 06.08.09 12:06
На вот , тебе еще один вариант для коллекции...
http://webfile.ru/3822078

И свой - исправляй..
28. Епрст (Ёпрст) 06.08.09 12:06
Одно непонятно, те хто плюсует.. вообще смотрит, что ЭТО ?...
29. Nik (nikakoy) 06.08.09 13:30
Ёпрст 70
nikakoy 79
а выигрыш на
"исхТЗ.Выгрузить(врТЗ);
исхТЗ.Выгрузить(ТЗСлуж);"
из таблицы - переменной
по сравнению с
"тз.Выгрузить(ТзМод);
тз.Выгрузить(ТзНом);"
из таблицы формы....

непринципиально....
30. Епрст (Ёпрст) 06.08.09 13:36
(29) увеличь количество строк до 10 тысяч и замерь...
31. Епрст (Ёпрст) 06.08.09 13:36
+30 там есть кнопка заполнить для этого с указанием количества строк..
32. Епрст (Ёпрст) 06.08.09 13:37
+31 и выигрыш там не в том вообще... У тебя НайтиЗначение... у меня - этого нет вообще.
33. Епрст (Ёпрст) 06.08.09 13:38
На 10 000 строк выигрыш по скорости ~ 2 раза..ужо.
34. Nik (nikakoy) 06.08.09 13:45
35. Nik (nikakoy) 06.08.09 13:48
а по идее не должно...
У тебя вложенный цикл по таблице моделей, у меня поиск по ней же...
мой должен быстрее работать... счас посмотрим...
Другой разницы не увидел!!! ;-))
36. Епрст (Ёпрст) 06.08.09 13:49
(35) НайтиЗначение- тот же перебор...нефига не быстрый метод..
37. Nik (nikakoy) 06.08.09 13:53
Наверно заблуждался.... еще заполняется..... проверим!!!!
Где-то здесь виде ВК по индексированным таблицам, но у нас вечная контра с сисадмином... :-((... и лишние ВК ему как нож по всем частям!!!!
38. CCCР (Tatitutu) 06.08.09 14:01
(36) в (27) что ты выложил посмотрела. Спасибо за объединенный тест.
Только вот чуть-чуть ты там смухлевал )))
в мой процедуре -ты забыл инициализировать переменную НАЧАЛО
Начало = _GetPerformanceCounter(); И поэтому у меня там дикий результат :)
Спасибо за активное участие , я в (17) тебе сказала что твой метод после 36 столбцов быстрее будет работать.
Тема называется "Пример как развернуть таблицу печати в горизонтальном виде " а не как быстрее это сделать.
Есть четвертый метод - вечером поставаюсь добавить.
39. Епрст (Ёпрст) 06.08.09 14:10
(38) Ну чего за гон ?
В каком месте смухлевал ?
Всё там у всех одинаково..
Только у вас - не рабочий код вообще, да еще и самый медленный...
40. Епрст (Ёпрст) 06.08.09 14:12
+39
Процедура СССР()
Перем ЗагКол;
Начало = _GetPerformanceCounter(); // Это что по вашему ?

41. Епрст (Ёпрст) 06.08.09 14:13
(37) На лимоне может не хватить памяти.. 100 тыщ более чем достаточно, хотя и 10-ки хватит... для убедительности :)
42. Nik (nikakoy) 06.08.09 14:16
нашли повод!!! =-О
почему у Ёпрста быстрее?????
43. Епрст (Ёпрст) 06.08.09 14:19
(42) Оптимальнее алгоритм и привет..
Нет лишнего поиска.
44. CCCР (Tatitutu) 06.08.09 14:20
(41) :) так там (в 27) твой вариант "ТЗВрем.ВидимостьКолонки(СокрЛП(ТекМод),1)=-1 "

я подругому предлага
//это не мой код
Процедура СССР()
Перем ЗагКол;
Начало = _GetPerformanceCounter();
Если ТЗ.КоличествоСтрок()=0 Тогда
Сообщить("Таблица комплектации пустая - нет данных для печатит");
Иначе
//создадим ТЗ с одной колонкой ВЕРТИКАЛЬНОЙ
ТЗврем=СоздатьОбъект("ТаблицаЗначений");
ТЗВрем.НоваяКолонка("Номенклатура");
//создадим список - для хранения колонок
Сверток=СоздатьОбъект("СписокЗначений");
КолКол=1;

ТЗ.ВыбратьСтроки();
Пока ТЗ.ПолучитьСтроку()=1 Цикл
ТекМод=ТЗ.Модель;
НСтолба=0;
Счет=0;
//проверим если колонка с таким заголовком

Если ТЗВрем.ВидимостьКолонки(СокрЛП(ТекМод),1)=-1 Тогда
КолКол=КолКол+1; //увеличиваем счетчик
Сверток.ДобавитьЗначение(КолКол,ТекМод); //и добавим значение в список
ТЗврем.НоваяКолонка(,"Число",10,0,СокрЛП(ТекМод),,,); //новая колонка с заголовком новой модели
НСтолба=КолКол;
КонецЕсли;


( и в шапке все варианты рабочие - разный подход, разная скорость у пользователя должен быть выбор всегда) Тем и прекрасно программирование в 1С - что почти всегда задачу можно решить разными способами и чем больше ты способов знаешь тем лучше. Разве я не права ?
45. Епрст (Ёпрст) 06.08.09 14:20
+43 а у автора, самый медленный - создание всей простыни + её заполнение..
да к томуже еще и не рабочий, пока...
46. Епрст (Ёпрст) 06.08.09 14:21
(44) Рабочие ???
Мот на результат сначала посмотришь?
47. Nik (nikakoy) 06.08.09 14:21
49. Епрст (Ёпрст) 06.08.09 14:30
(47) смотря как использовать.
50. CCCР (Tatitutu) 06.08.09 14:32
И вообще тема родилась на основании вопроса в форуме.
Человек просил помочь , я помогла.
Тебя задело , что я влезла?

Я еще там сказала ЁПРСТ - ты не заменимый и самый лучший.
Сказала - спасибо за конструктивный диалог и примеры.

на твои высказывания:

"Это - никогда не заработает."
"Да ну ? И - БОЛТ! "

я доказала , правоту СВОЕГО высказывания и показала на примере.

Помогла человеку - Правильно оформила тему (описание, скриншоты, обработка) заметь многие даже сказали спасибо , ибо им пригодилось.

но ответ я так думаю в (28)
так мелочно , в чужой теме - орать на всю сеть

"Одно непонятно, те хто плюсует.. вообще смотрит, что ЭТО ?..."

Поставь мне минус (меня это уже дАААвно мало колышит, но хоть тебе приятно будет) - Но что подумают ЛЮДИ ?

Хочешь выложи в новой ветке свой вариант, я этот удалю - нет проблем :)
Жизнь прекрасна тем , что Ты в ней Есть.

51. Nik (nikakoy) 06.08.09 14:37
nikakoy 3822
Ёпрст 3811

на 200000 строк...

Это после переделки
Процедура nikakoy()
Начало = _GetPerformanceCounter();
ТзМод=СоздатьОбъект("ТаблицаЗначений");
ТзНом=СоздатьОбъект("ТаблицаЗначений");
ТзВрем=СоздатьОбъект("ТаблицаЗначений");

тз.Выгрузить(ТзВрем);
ТзВрем.Свернуть("Номенклатура,Модель","Колво");

ТзВрем.Выгрузить(ТзНом);
ТзНом.Свернуть("Номенклатура","Колво");

ТзВрем.Выгрузить(ТзМод);
ТзМод.Свернуть("Модель","Колво");


ТзВрем.Сортировать("Номенклатура,Модель");
ТзМод.Сортировать("Модель");

ТП=СоздатьОбъект("Таблица");
ТП.ВывестиСекцию("Шапка|Основа");
ТзМод.ВыбратьСтроки();
Пока ТзМод.ПолучитьСтроку() = 1 Цикл
списмод=СокрЛП(ТзМод.Модель);
ТП.ПрисоединитьСекцию("Шапка|Модель");
КонецЦикла;
52. Епрст (Ёпрст) 06.08.09 14:37
53. CCCР (Tatitutu) 06.08.09 14:37
(48) это вопрос сам себе задаешь ?
ты вызываешь процедуру из своей разработки (в которой все перемашал вкучу)
и спрашиваешь почему так получилось (хочешь угадаю на какую кнопку ты нажимал ?)
54. CCCР (Tatitutu) 06.08.09 14:40
+(53) из моей первоначальной обработки это выглядит так
http://i075.radikal.ru/0908/d4/f3e8ec9d9c50.jpg
55. Nik (nikakoy) 06.08.09 14:40
До этого у мня сворачивалась по моделям и номенклатуре исх. таблица
Счас исходная сворачивается по ном и мод
и она уже сворачивается по отдельности...

Это имелось ввиду под оптимизацией кода????
Мог и сразу сказать, а не понты кидать!!!

по поводу найти значение 0,06% времени у меня
0,05% в случае "Пока врТЗ.ПолучитьСтроку()=1 Цикл..."

вывод - действительно разницы особой..... (((
56. Епрст (Ёпрст) 06.08.09 14:41
57. Епрст (Ёпрст) 06.08.09 14:42
(54) да из любой, что в топике по 1,2 ...
58. Епрст (Ёпрст) 06.08.09 14:42
+57 и я там ничего не переделывал.
59. Епрст (Ёпрст) 06.08.09 14:43
(55) я твой код даже не смотрел, если что..
а убыстрить еще можно - если выводить заранее рассчитанные секции..
60. CCCР (Tatitutu) 06.08.09 14:48
(60) подскажи, только нормально.

если выводить заранее рассчитанные секции...

а если вывести сначала все сетку а потом в процессе разбора таблицы ее заполнить (помоему так медленнее будет)
61. Nik (nikakoy) 06.08.09 14:51
Д не... и не заморачивался... разница не принципиальна, тема была как развернуть таблицу... скорость заинтересовала по ходу развития темы!!!

Важный вывод для читающих!!!!

Готовьте таблицы внимательно, чт об не заставлять машину лопатить лишние данные!!!
Работа с виртуальными таблицами на порядки выше!!!!

пример

Процедура Заполнить()
ТЗ.УдалитьСтроки();
тз1=СоздатьОбъект("ТаблицаЗначений");
тз.Выгрузить(тз1);
Если ВсегоСтрок<=0 Тогда
randomize();
ВсегоСтрок=random(1000);
КонецЕсли;

ВсегоНоменклатуры = Ном.РазмерСписка();
ВсегоМоделей = Мод.РазмерСписка();

Для к =1 По ВсегоСтрок Цикл
randomize();
ТЗ1.НоваяСтрока();
ТЗ1.Модель = Мод.ПолучитьЗначение(random(ВсегоМоделей));
ТЗ1.Номенклатура = Ном.ПолучитьЗначение(random(ВсегоНоменклатуры));
ТЗ1.Колво = random(1000);
Состояние(к);
КонецЦикла;
тз1.Выгрузить(тз);


КонецПроцедуры // Заполгить

заполнения на 1000000 в первоначальном варианте так и не дождался!!!!

;-))
62. Епрст (Ёпрст) 06.08.09 14:56
(61) Тоже мне америку открыл..
ТЗ на форме мега тормоз.. и так, сам по себе..

(60) Тип того:

Секция = Таб.ПолучитьСекцию("Шапка|Строка");
Область = Секция.Область();

Цикл.....
Область.Текст = <Чтото>;
Таб.ВывестиСекцию(Секция);




63. Епрст (Ёпрст) 06.08.09 14:57
(61) И лучше не пользоваться СоздатьОбъект(...) это тоже не быстрый метод, хотя и с загрузкой 1c++ он в разы быстрее стал..
64. CCCР (Tatitutu) 06.08.09 15:00
и "избегайте" большого количества столбцов (так как в EXCEL больше 256 столбцов не сохраните, да строк там 65536 всего)
65. Nik (nikakoy) 06.08.09 15:06
У нас 1спп не стоит....
Обычно использую ГлПустаяТаблица.Выгрузить(ТаблицаКредитовПоВеткам);
55% уходит на первоначальную выгрузку ТЗ.Выгрузить(исхТЗ);
44% на первоначальную свертку исхТЗ.Свернуть("Номенклатура,Модель","Колво");
Далее все меньше процента таб.показать,присоединитьсекцию.....
Так что не вижу особого смысла в дальнейшей оптимизации...
если все время уходит на визуализацию.....
66. Nik (nikakoy) 06.08.09 15:08
Сейчас заинтересовало это
"Странник Сети (Собеседник Разума)
У вас нет прав на просмотр профайла этого пользователя. "
Почему???
67. Епрст (Ёпрст) 06.08.09 15:09
(65) посмотри, сколько жрёт метод вывести/присоединитьСекцию... если не дай бог там еще и выражения в ней вычисляются...
Моксель тоже узкое место..
Tatitutu; +1 Ответить
68. Nik (nikakoy) 06.08.09 15:09
Уже понял, свой профиль глянул!!! :-))
Tatitutu; +1 Ответить
69. CCCР (Tatitutu) 06.08.09 15:13
(67,68) Спасибо за прекрасное и развернутое обсуждение. Мальчики вам по заслуженному + за обсуждение. :{}
71. Brr (brr) 07.08.09 09:03
(28) Да уж, каюсь. Мельком глянул.
72. CCCР (Tatitutu) 07.08.09 09:11
(72) Это Ваше право. А как же (1) ведь именно там - выражена ГЛАВНАЯ мысль темы
73. Юрий Мисюрин (Socrat) 14.01.10 12:09
Кое в чём программка помогла разобраться =)
Tatitutu; +1 Ответить
74. 123113 (1C-Nic) 18.03.10 13:34
Привет! А что нужно прописать, что бы макет автоматически выводился на печать горизонтально т.к. вертикально в формате А4 не влазит?
75. 123113 (1C-Nic) 18.03.10 13:35
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа