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

20.06.11

Разработка - Работа с интерфейсом

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

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

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

 

 

См. также

1С:Фото номенклатуры 7.7 - решение для работы с фотографиями номенклатуры в 1С:7.7 (включая формат PNG)

Работа с интерфейсом Логистика, склад и ТМЦ Платформа 1С v7.7 1С:Торговля и склад 7.7 Оптовая торговля, дистрибуция, логистика Управленческий учет Платные (руб)

Решение для разработчика и конечного пользователя для работы с фотографиями номенклатуры: систематизация, хранение, отображение, а также выгрузка на Яндекс-Диск и FTP (кроме версии лайт). Поддерживаются графические форматы: bmp, jpg, gif, tiff, а также png - не поддерживаемый штатными средствами 1С. Выполнено без использования внешних компонент (кроме функции выгрузки на FTP). Поставляется как в виде пустой конфигурации с набором объектов и модулей для работы с фото, так и в виде обновления к 1С:Торговля и склад 7.7. Выполнено в двух версиях: "полная" и "лайт".

5000 руб.

18.10.2022    5131    1    45    

3

WebЦвета для 1с77 FormEx

Инструментарий разработчика Работа с интерфейсом Платформа 1С v7.7 Абонемент ($m)

Обработка с фрагментами кода для программного использования набора цветов из коллекции WebЦвета 1с версии 8+ в 1с версии 77. Требуется предварительное подключение сторонней библиотеки FormEх. Будет полезно программистам 1с 77, 1с 8. Да и вообще при программировании на любом языке при потребности использовать коллекцию цветов WebЦвета.

1 стартмани

30.03.2022    4527    2    igor7777    4    

5

К привязкам элементов форм (1С 7.7, FormEx)

Работа с интерфейсом Платформа 1С v7.7 Конфигурации 1cv7 Бесплатно (free)

Публикация имеет цель обратить внимание на возможность улучшения интерфейса.

15.12.2021    4449    62    Cерый    13    

6

Выбор цвета для 1С 7.7

Работа с интерфейсом Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Простая и удобная внешняя обработка для выбора цвета без применения внешних компонент.

1 стартмани

09.06.2020    7002    3    vap_pig    5    

3

Производственный календарь для 1С 7.7

Учет рабочего времени Работа с интерфейсом Платформа 1С v7.7 Конфигурации 1cv7 Россия Абонемент ($m)

Обработка производственного календаря с возможностью импорта и экспорта xls для 1С 7.7 (7.70.027) без изменения конфигурации.

1 стартмани

18.09.2019    12559    5    Jill    8    

3

Альтернативная обработка "Выбор периода"

Работа с интерфейсом Оперативный учет 7.7 1С:Торговля и склад 7.7 Абонемент ($m)

Альтернативная обработка ввода периода для 1С 7.7.

1 стартмани

27.03.2019    6580    3    v.a.n-    11    

2

Несколько табличных частей в 1С:7.7 - это просто

Работа с интерфейсом Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

При программировании на платформе V7 достаточно часто возникает задача создать несколько табличных частей документа (или справочника). Традиционно эта задача имеет несколько решений..

1 стартмани

01.05.2018    22398    27    Gkmy    11    

5
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. brr 182 04.08.09 11:49 Сейчас в теме
Просто и понятно, для новичков самое то
18. nikakoy 43 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;

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

Переделал ПриОткрытии() для большей показательности.
Неправильно выводит номера строк. Это просто чтоб не трогать таблицу.
21. Tatitutu 3855 05.08.09 15:29 Сейчас в теме
(18) продолжу как в (17)

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

НО ! если добавить колонок в задание (до 256)
//нет времени попробовать
// в (18) нужно две строки закоментировать
// //ном=СоздатьОбъект("СписокЗначений");
// //мод=СоздатьОбъект("СписокЗначений");
// так они уже есть на форме
4. Tatitutu 3855 04.08.09 12:40 Сейчас в теме
(2) Спасибо тоже интересное решение.
(3) А можно пример ? (распечатать ТЗ на форме - не имея при этом запроса)
9. CheBurator 3119 04.08.09 13:33 Сейчас в теме
Вылысыпыдысты ;-) ? есть более продвинутая разработка... - позволяет и группировать, и расшифровывать и еще чуть-чуть... (типа как в (2)):
http://infostart.ru/projects/942/
пример использования: http://infostart.ru/projects/522/
11. Tatitutu 3855 04.08.09 13:37 Сейчас в теме
(9) Спасибо. Хороший пример. Буду знать
(но мой же пример по другому принципу работает и я думаю имеет право на жизнь)
3. Арчибальд 2706 04.08.09 12:30 Сейчас в теме
Вообще-то для таких вещей в языке запросов предусмотрено "ВошедшиеВЗапрос"
5. Арчибальд 2706 04.08.09 13:11 Сейчас в теме
В чем вопрос-то? Как сформировать ТЗ без запроса? Или как распечатать ТЗ, где все колонки одинаковые, кроме первой и последней?
6. Tatitutu 3855 04.08.09 13:15 Сейчас в теме
(5) Вопрос и не стоял.
Написано пример :
(в частности вот для этой темы )
http://infostart.ru/forum/messages/forum9/topic10583/message85923/#message85923

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

7. Арчибальд 2706 04.08.09 13:26 Сейчас в теме
(6) То есть постановка задачи: сформировать таблицу значений, не пользуясь запросом.
Слушай Ёпрста в упомянутом форуме.
10. Tatitutu 3855 04.08.09 13:34 Сейчас в теме
(7) Я его и слушаю. Я же ему не перечу. У него свой вариант - у меня свой.

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

это уже третий раз говорят мне, а кто сможеть показать пример (честно научите, только без ВК)
12. Ёпрст 1063 04.08.09 13:38 Сейчас в теме
(10) Ну на..учись:

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

:)
Tatitutu; +1 Ответить
13. Tatitutu 3855 04.08.09 13:44 Сейчас в теме
17. Tatitutu 3855 04.08.09 14:12 Сейчас в теме
(12) если на данном примере сравнить мой и твой вариант
то мой - 0,0312
с твоим вариантом - 0,0402

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

то мой - 1,467
с твоим вариантом - 0,586
Спасибо за вариант - предложенный Вами.
8. Арчибальд 2706 04.08.09 13:28 Сейчас в теме
+7
3.Чтоб поглядеть, есть ли нужная колонка в ТЗ - не обязательно перебирать ВСЕ колонки в ТЗ
14. CheBurator 3119 04.08.09 13:56 Сейчас в теме
Вообще-то у автора подтасовка и тырение комплектующих ;-) ?
№п/п 7 - Упаковка - откуда там 13 взялось, если при суммировании всего 9 получается?
15. Tatitutu 3855 04.08.09 14:04 Сейчас в теме
(14) нет там такого )))
(столбцы закреплены ТП.Опции(0,0,4,3); и на скриншот не попали , а то длинный бы был)
16. CheBurator 3119 04.08.09 14:11 Сейчас в теме
19. nikakoy 43 05.08.09 13:20 Сейчас в теме
Прошу прощения!!!
строка 50
Пока ТекКолонка<стр-1 Цикл
должна выглядеть
Пока ТекКолонка<стр Цикл
20. smart-it 27 05.08.09 13:39 Сейчас в теме
22. nikakoy 43 05.08.09 15:37 Сейчас в теме
у меня на форме только тз.... и весь код при открытии нужен для автоматического заполнения тз....
Смысл в правильной(требуемой) сортировке и последующем создании необходимого числа свернутых табличек.....
23. Tatitutu 3855 05.08.09 15:39 Сейчас в теме
(22) Спасибо. Добавил ваши варианты в шапку.
(если против - уберу)
24. Ёпрст 1063 06.08.09 11:07 Сейчас в теме
Ё... вариант №2 неправильный... да еще и медленный..
25. Ёпрст 1063 06.08.09 11:08 Сейчас в теме
Вариант №1 - аналогично - не верный!!!
26. Ёпрст 1063 06.08.09 11:10 Сейчас в теме
Вот только 3-ий вариант рабочий..
27. Ёпрст 1063 06.08.09 12:06 Сейчас в теме
На вот , тебе еще один вариант для коллекции...
http://webfile.ru/3822078

И свой - исправляй..
28. Ёпрст 1063 06.08.09 12:06 Сейчас в теме
Одно непонятно, те хто плюсует.. вообще смотрит, что ЭТО ?...
50. Tatitutu 3855 06.08.09 14:32 Сейчас в теме
И вообще тема родилась на основании вопроса в форуме.
Человек просил помочь , я помогла.
Тебя задело , что я влезла?

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

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

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

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

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

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

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

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

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

52. Ёпрст 1063 06.08.09 14:37 Сейчас в теме
71. brr 182 07.08.09 09:03 Сейчас в теме
(28) Да уж, каюсь. Мельком глянул.
29. nikakoy 43 06.08.09 13:30 Сейчас в теме
Ёпрст 70
nikakoy 79
а выигрыш на
"исхТЗ.Выгрузить(врТЗ);
исхТЗ.Выгрузить(ТЗСлуж);"
из таблицы - переменной
по сравнению с
"тз.Выгрузить(ТзМод);
тз.Выгрузить(ТзНом);"
из таблицы формы....

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

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

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

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


( и в шапке все варианты рабочие - разный подход, разная скорость у пользователя должен быть выбор всегда) Тем и прекрасно программирование в 1С - что почти всегда задачу можно решить разными способами и чем больше ты способов знаешь тем лучше. Разве я не права ?
46. Ёпрст 1063 06.08.09 14:21 Сейчас в теме
(44) Рабочие ???
Мот на результат сначала посмотришь?
40. Ёпрст 1063 06.08.09 14:12 Сейчас в теме
+39
Процедура СССР()
Перем ЗагКол;
Начало = _GetPerformanceCounter(); // Это что по вашему ?

42. nikakoy 43 06.08.09 14:16 Сейчас в теме
нашли повод!!! =-О
почему у Ёпрста быстрее?????
43. Ёпрст 1063 06.08.09 14:19 Сейчас в теме
(42) Оптимальнее алгоритм и привет..
Нет лишнего поиска.
45. Ёпрст 1063 06.08.09 14:20 Сейчас в теме
+43 а у автора, самый медленный - создание всей простыни + её заполнение..
да к томуже еще и не рабочий, пока...
47. nikakoy 43 06.08.09 14:21 Сейчас в теме
Т.е. перебор быстрее??? :-$
49. Ёпрст 1063 06.08.09 14:30 Сейчас в теме
(47) смотря как использовать.
48. Ёпрст 1063 06.08.09 14:29 Сейчас в теме
53. Tatitutu 3855 06.08.09 14:37 Сейчас в теме
(48) это вопрос сам себе задаешь ?
ты вызываешь процедуру из своей разработки (в которой все перемашал вкучу)
и спрашиваешь почему так получилось (хочешь угадаю на какую кнопку ты нажимал ?)
54. Tatitutu 3855 06.08.09 14:40 Сейчас в теме
+(53) из моей первоначальной обработки это выглядит так
http://i075.radikal.ru/0908/d4/f3e8ec9d9c50.jpg
57. Ёпрст 1063 06.08.09 14:42 Сейчас в теме
(54) да из любой, что в топике по 1,2 ...
51. nikakoy 43 06.08.09 14:37 Сейчас в теме
nikakoy 3822
Ёпрст 3811

на 200000 строк...

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

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

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

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


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

ТП=СоздатьОбъект("Таблица");
ТП.ВывестиСекцию("Шапка|Основа");
ТзМод.ВыбратьСтроки();
Пока ТзМод.ПолучитьСтроку() = 1 Цикл
списмод=СокрЛП(ТзМод.Модель);
ТП.ПрисоединитьСекцию("Шапка|Модель");
КонецЦикла;
56. Ёпрст 1063 06.08.09 14:41 Сейчас в теме
55. nikakoy 43 06.08.09 14:40 Сейчас в теме
До этого у мня сворачивалась по моделям и номенклатуре исх. таблица
Счас исходная сворачивается по ном и мод
и она уже сворачивается по отдельности...

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

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

вывод - действительно разницы особой..... (((
59. Ёпрст 1063 06.08.09 14:43 Сейчас в теме
(55) я твой код даже не смотрел, если что..
а убыстрить еще можно - если выводить заранее рассчитанные секции..
58. Ёпрст 1063 06.08.09 14:42 Сейчас в теме
+57 и я там ничего не переделывал.
60. Tatitutu 3855 06.08.09 14:48 Сейчас в теме
(60) подскажи, только нормально.

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

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

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

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

пример

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

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

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


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

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

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

(60) Тип того:

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

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




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