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

Публикация № 21571

Разработка - Практика программирования

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

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

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

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

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

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

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

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

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

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

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

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

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

 

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

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

 

 

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

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

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. brr 179 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 05.08.09 15:29 Сейчас в теме
(18) продолжу как в (17)

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

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

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

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

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

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

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

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

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

то мой - 1,467
с твоим вариантом - 0,586
Спасибо за вариант - предложенный Вами.
8. Арчибальд 2710 04.08.09 13:28 Сейчас в теме
+7
3.Чтоб поглядеть, есть ли нужная колонка в ТЗ - не обязательно перебирать ВСЕ колонки в ТЗ
14. CheBurator 3410 04.08.09 13:56 Сейчас в теме
Вообще-то у автора подтасовка и тырение комплектующих ;-) ?
№п/п 7 - Упаковка - откуда там 13 взялось, если при суммировании всего 9 получается?
15. Tatitutu 04.08.09 14:04 Сейчас в теме
(14) нет там такого )))
(столбцы закреплены ТП.Опции(0,0,4,3); и на скриншот не попали , а то длинный бы был)
16. CheBurator 3410 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 05.08.09 15:39 Сейчас в теме
(22) Спасибо. Добавил ваши варианты в шапку.
(если против - уберу)
24. Ёпрст 1036 06.08.09 11:07 Сейчас в теме
Ё... вариант №2 неправильный... да еще и медленный..
25. Ёпрст 1036 06.08.09 11:08 Сейчас в теме
Вариант №1 - аналогично - не верный!!!
26. Ёпрст 1036 06.08.09 11:10 Сейчас в теме
Вот только 3-ий вариант рабочий..
27. Ёпрст 1036 06.08.09 12:06 Сейчас в теме
На вот , тебе еще один вариант для коллекции...
http://webfile.ru/3822078

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

на 200000 строк...

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

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

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

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


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

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

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

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

вывод - действительно разницы особой..... (((
59. Ёпрст 1036 06.08.09 14:43 Сейчас в теме
(55) я твой код даже не смотрел, если что..
а убыстрить еще можно - если выводить заранее рассчитанные секции..
58. Ёпрст 1036 06.08.09 14:42 Сейчас в теме
+57 и я там ничего не переделывал.
60. Tatitutu 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. Ёпрст 1036 06.08.09 14:56 Сейчас в теме
(61) Тоже мне америку открыл..
ТЗ на форме мега тормоз.. и так, сам по себе..

(60) Тип того:

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

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




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

См. также

Особенности разделения объектной модели документа и базы данных в 1С 7.7. Забавный глюк

Статья Программист Архив с данными v77::ОУ Абонемент ($m) Практика программирования

Когда занимаешься разработкой в среде 1С, редко задумываешься о том, что программным кодом ты работаешь с объектной моделью базы данных, а не с самой базой данных. И что это вообще разные вещи. Ты создаешь объекты: документы и справочники, записываешь их - и в базе данных появляются соответствующие записи. Это настолько привычно, что когда сталкиваешься с нетипичным поведением платформы, первым делом думаешь: надо протестировать базу, она битая. В этой статье я хочу разобрать одну интересную ситуацию, которая как раз демонстрирует такое поведение. Описанная ниже ситуация воспроизводится как в файловом, так и в клиент-серверном (SQL) варианте. Тестировалось на версии платформы 1с77 релиз 027.

1 стартмани

16.05.2018    7740    2    Vortigaunt    26       

DevOps для 1С. Онлайн-курс проходит с 16 апреля по 11 июня 2020 года. Промо

Данный онлайн-курс предусматривает изучение процессов DevOps, их применение при разработке на платформе 1С. В результате прохождения онлайн-курса вы сможете: настроить ПО необходимое для проведения проверок и тестирования, создавать сценарии тестирования и объединять их в комплексные процессы, создавать скрипты для автоматизации процессов DevOps.

12000 рублей

Ведомость по остаткам ТМЦ на складах с ценой номенклатуры по типу и валюте для ТиС 9.2

Отчеты и формы Программист Бухгалтер Внешний отчет (ert,erf) v77::ОУ 1С7:ТиС Россия УУ Windows Учет ТМЦ Ценообразование, анализ цен Абонемент ($m) Ценообразование, прайсы Практика программирования Управленческие

Модификация типового отчета является фактически прайс-листом при формировании по цене продажи на текущие сутки. Может использоваться для грубого анализа себестоимости продукции и как отчет по стоимостной оценке склада. В типовой отчет добавлена колонка "цена" на конечную дату отчета с возможностью указания типа цены и валюты (при управленческом "многовалютном" учете в ТиС 9.2). Проверялась на отраслевой конфигурации 1С 7.7 "Агент плюс" на базе ТиС 9.2 Также показана методика разработки для начинающих программистов, кто столкнулся с устаревшей Торговля+склад 9.2 (или отраслевых аналогов типа Агент-Плюс...).

1 стартмани

05.11.2015    18479    17    jobkostya1c8    3       

Программы для исполнения 54-ФЗ Промо

С 01.02.2017 контрольно-кассовая техника должна отправлять электронные версии чеков оператору фискальных данных - правила установлены в 54-ФЗ ст.2 п.2. Инфостарт предлагает подборку программ, связанных с применением 54-ФЗ, ККТ и электронных чеков.

Как получить номер и дату договора из наименования справочника договоров?

Инструменты и обработки Программист Внешний отчет (ert,erf) v7.7 1cv7.md Windows Абонемент ($m) Практика программирования Обработка справочников

В типовых конфигурациях платформы "1С:Предприятие 7.7" часто номер и дата договора указаны в самом наименовании договора. Что создает сложности в тех случаях, когда эти реквизиты надо знать, например, при конвертации данных в конфигурации платформы "1С:Предприятие 8", где номер и дата договора - отдельные реквизиты.

1 стартмани

24.09.2015    18472    2    SiAl    7       

Методы для группировки данных по полю,полям в Таблице Значений на примере универсального метода списания по партиям, а также отбора строк в ТЗ по произвольному условию. Для 8.x и 7.7

Инструменты и обработки Программист Внешняя обработка (ert,epf) v7.7 v8 1cv8.cf 1cv7.md Windows Абонемент ($m) Практика программирования Универсальные функции

Я очень часто использую группировку данных по полю и полям, как в восьмерке, так и в семерке. Это аналог запроса Итоги, но там строится дерево, а в большинстве случаев нужны "плоские данные". Да и делать запрос в большинстве случаев более накладный процесс, чем работа с ТЗ. Все достоинства такого подхода приведены на примере метода универсального списания по париям, а так же отбора строк в ТЗ по произвольному условию. Для 7.7 еще отчеты сравнения двух ТЗ. Работая с различными базами для упрощения сравнения номенклатуры, или как аналог джойнов(join), сделал сравнение двух таблиц значений по нескольким полям. Пока группировки полей должны быть уникальны. Часто приходится искать дубли, для универсального поиска есть ДублиВТзПоПолю и пример в Тест.ert.

1 стартмани

25.06.2015    24519    4    Serginio    1       

Новый раздел на Инфостарте - Electronic Software Distribution Промо

Инфостарт напоминает: на нашем сайте можно купить не только ПО, связанное с 1С. В нашем арсенале – ESD-лицензии на ПО от ведущих вендоров: Microsoft, Kaspersky, ESET, Dr.Web, Аскон и другие.

  • Низкие цены, без скрытых платежей и наценок
  • Оперативная отгрузка
  • Возможность оплаты с личного счета (кешбек, обмен стартмани на рубли и т.п.)
  • Покупки идут в накопления для получения скидочных карт лояльности Silver (5%) и Gold (10%)

Предельные базы взносов в ПФР, ФСС, ФФОМС 2015 в 1С: Бухгалтерия 7.7

Инструменты и обработки Программист Конфигурация (md, cf) v77::БУ 1С7:Бух Россия БУ Windows Зарплата Абонемент ($m) Практика программирования

Реализация Постановления Правительства РФ 1316 от 04.12.14 для типовой конфигурации "Бухгалтерский учет 7.7" рел. 7.70.590

1 стартмани

31.12.2014    17927    10    Sergey1CSpb    2       

Онлайн-курс «Автоматизация процессов управления МТО: методика сбора и формализации требований» с 1 апреля по 13 мая 2020 года. Промо

Цель курса - повысить полноту и качество сбора и формализации требований к автоматизации процессов управления материально-техническим обеспечением. Курс основан на процессном подходе, позволяет в полном объеме выявить и учесть все факторы, влияющие на специфику процессов управления МТО. Участники курса получают теоретические знания в области организации процессов управления МТО и готовый инструментарий для сбора и формализации требований по автоматизации этих процессов (шаблоны, опросники, модели).

40000 рублей

Онлайн резервирование товаров

Инструменты и обработки Программист Подсистема v77::ОУ 1С7:ТиС Windows Абонемент ($m) Практика программирования

Бывало ли у Вас такое: зарезервировали товар по телефону, собрались проводить документ, а товара уже нет в доступном остатке на складе? Пока Вы разговаривали, кто-то успел провести документ, который зарезервировал товар. Что делать? Есть одна идея.

1 стартмани

10.10.2013    10527    1    Вадимко    1       

Программы для исполнения 488-ФЗ: Маркировка товаров Промо

1 января 2019 года вступил в силу ФЗ от 25.12.2018 № 488-ФЗ о единой информационной системе маркировки товаров с использованием контрольных (идентификационных) знаков, который позволяет проследить движение товара от производителя до конечного потребителя. Инфостарт предлагает подборку программ, связанных с применением 488-ФЗ и маркировкой товаров.

Изменение структуры баз 1С 7.7 без долгой реструктуризации. Часть 1. Справочники

Статья Программист Нет файла v7.7 1cv7.md Windows Абонемент ($m) Практика программирования

На днях встретил вопрос на форуме про возможность внесения изменений в конфигурацию без долгого сохранения в рабочей базе большого объема. Вот решил поделиться опытом, как это делал я. База у нас была объемом порядка 120 Гб. К базе обращался сайт в режиме 24/7, поэтому важно было быстро сохранять изменения и желательно без последующего монопольного запуска для восстановления индексов и процедур и без отключения пользователей от базы. Это первая часть статьи и посвящена она справочникам. С одной стороны - это самый простой объект, с другой стороны, именно про справочник спрашивалось на форуме. Если статья будет востребована, то я напишу аналогичные про документы, регистры и может еще что.

1 стартмани

13.08.2013    18017    4    Reptile    5       

Ошибка в регламентированной отчетности за 2-й квартал (форма-4 ФСС: Титульный лист, релиз 13q2001)

Инструменты и обработки Программист Бухгалтер Внешний отчет (ert,erf) v77::БУ 1С7:Бух Россия БУ Windows ФОМС, ПФ, ФСС Абонемент ($m) Регламентированная отчетность Практика программирования

В регламентированной отчетности за 2-й квартал (форма-4 ФСС: Титульный лист, релиз 13q2001) для конфигурации "Бухгалтерский учет, редакция 4.5" при открытии ранее сохраненного титульного листа дата подписания всегда будет "01.04.2013" независимо от того, какая там была дата при сохранении.

1 стартмани

27.06.2013    12228    18    user77    8       

1C:Предприятие для программистов: Расчетные задачи (зарплата). Онлайн-интенсив с 01 по 17 июня 2020 г. Промо

Данный онлайн-курс предусматривает изучение механизмов платформы “1С:Предприятие”, которые предназначены для автоматизации периодических расчетов, а именно - для расчета зарплаты. Курс предназначен для тех, кто уже имеет определенные навыки конфигурирования и программирования в системе “1С:Предприятие”, а также для опытных пользователей прикладного решения “1С:Зарплата и управление персоналом” и прочих прикладных решений, в которых реализован функционал расчета зарплаты.

4900 рублей

Итоговая строка в форме "Требование-накладная" М-11 в 1С: Бухгалтерия 7.7

Статья Бухгалтер Нет файла v77::БУ 1С7:Бух Россия БУ Windows Абонемент ($m) Практика программирования

Появилась необходимость видеть итог в Требовании-накладная М-11 по колонке "Сумма" Выкладываю - как написать

1 стартмани

15.04.2013    15256    10    Доня    3       

Базовый курс по обмену данными в системе 1С:Предприятие. Онлайн-интенсив с 12 по 28 мая 2020 г. Промо

Данный онлайн-курс предусматривает изучение механизмов платформы “1С:Предприятие”, обеспечивающих обмен данными между различными прикладными 1С-решениями и взаимодействие с другими информационными системами. Курс предназначен для тех, кто уже имеет определенные навыки конфигурирования и программирования в системе “1С:Предприятие”.

5500 рублей

[Разработчику] Любая таблица значений в OLAP

Инструменты и обработки Программист Архив с данными v7.7 1cv7.md Windows Абонемент ($m) Инструментарий разработчика Практика программирования Универсальные обработки

Анализируем различные данные в 1С, используя OLAP-технологии со всеми прелестями. Т.е. наглядное отображение данных, быстрые расчеты, горизонтальные и вертикальные группировки любой вложенности, удобная фильтрация, Drag'n'Drop и ещё много приятных вещей от MS. Обработка на входе принимает практически любую таблицу значений (ТЗ в которой колонкам указаны типы значений, строка, число и т.п.), на выходе имеем на форме 1С сводную таблицу и график по этой ТЗ, с которой работаем, как и в Excel со сводной таблицей и диаграммой. Взял за основу разработку «OLAP Анализ счёта» ( http://infostart.ru/public/14964/ ) от JohnyDeath и переделал под любую ТЗ. Опционально используется «Прогресс бар для 1С 77» (http://infostart.ru/public/14061/ ) от Gmix.

1 стартмани

21.12.2012    25856    49    venger    7       

Реализация условий в прямых запросах к журналу расчета.

Статья Программист Нет файла v77::Расчет 1С7:ЗиК Windows Зарплата Абонемент ($m) Практика программирования

Обзор методов реализации условий и функций с условиями в обращениях к журналу расчетов при помощи прямого запроса.

1 стартмани

06.12.2012    12442    5    nicotin    5       

Онлайн-интенсив "1C:Предприятие для программистов: Бухгалтерские задачи" с 22 июня по 8 июля 2020 г. Промо

Данный онлайн-курс предусматривает изучение механизмов платформы “1С:Предприятие”, которые предназначены для решения задач бухгалтерского учета. Курс предназначен для тех, кто уже имеет определенные навыки конфигурирования и программирования в системе “1С:Предприятие”, а также для опытных пользователей прикладного решения “1С:Бухгалтерия” и прочих прикладных решений, в которых реализованы соответствующие механизмы для автоматизации бухгалтерских задач.

4900 рублей

Библиотека кода 1С 7.7 (накопленная за 8 лет)

Инструменты и обработки Программист Внешний отчет (ert,erf) v7.7 1cv7.md Абонемент ($m) Практика программирования

Весь код на 1С 7.7, собранный для повторного использования за 8 лет работы.

10 стартмани

25.11.2012    25045    247    adhocprog    51       

Групмейкер для таблицы значений.

Инструменты и обработки Программист Внешний отчет (ert,erf) v7.7 v77::ОУ v77::БУ v77::Расчет 1cv7.md Windows Абонемент ($m) Инструментарий разработчика Практика программирования Универсальные обработки

Универсальная функция и обработка для свертки и группировки таблицы значений. Очень простой способ подвести итоги по призвольным группам в произвольном порядке любой таблицы значений для быстрого вывода на печать нужной пользователю последовательности и детализации группировок.

1 стартмани

20.11.2012    21808    59    dusha0020    15       

Подборка программ для взаимодействия с ЕГАИС Промо

ЕГАИС (Единая государственная автоматизированная информационная система) - автоматизированная система, предназначенная для государственного контроля за объёмом производства и оборота этилового спирта, алкогольной и спиртосодержащей продукции. Инфостарт рекомендует подборку проверенных решений для взаимодействия с системой.

Выгрузка на сайт через EXСEL, с таймером (с повторениями выгрузки через заданный промежуток времени). 7.7 ТиС Украина

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v77::ОУ 1С7:ТиС Украина Windows Абонемент ($m) Практика программирования Загрузка и выгрузка в Excel WEB

Данная обработка состоит из двух обработок, т.к. таймер в 1С реализован крайне криво, я старался как мог. Первая обработка запускает таймер, и настройки выгрузки (а точнее вторую обработку, которая выгрузкой и занимается непосредственно). Выгрузка данных в EXСEL осуществляется согласно логу, т.е. выгружаются исключительно те данные, которые редактировали ближайшие два дня. Также обработка автоматически удаляет все экселевские файлы, лежащие в указанной папке более трех дней (можно эту функцию отключить) Подробная инструкция по установке в описании

1 стартмани

03.09.2012    9372    15    serko8547    1       

Готовые переносы данных из различных конфигураций 1C Промо

Рекомендуем готовые решения для переноса данных из различных конфигураций 1C. C техподдержкой от разработчиков и гарантией от Инфостарт.

Сохранить активный табличный документ на рабочий стол в XLS

Инструменты и обработки no Внешняя обработка (ert,epf) v77::ОУ v77::БУ v77::Расчет 1cv7.md Казахстан Windows Абонемент ($m) Практика программирования

Удобное, БЫСТРОЕ сохранение табличного документа. Средствами йокселя. Сохраняет открытый документ на рабочий стол.

1 стартмани

22.08.2012    11699    6    Maximysis    3       

Время учиться: до 3 апреля скидки на курсы до 40%! Промо

Для тех, кто решил провести самоизоляцию с пользой, Инфостарт запускает акцию «Время учиться». С 30 марта до 3 апреля 2020 года наши курсы и видеозаписи докладов INFOSTART EVENT 2019 INCEPTION продаются со скидкой!

Баги 1С 7.7 - добро или зло: непосредственный ввод "а ля 1С 8.х" без использования ВК

Инструменты и обработки Программист Архив с данными v7.7 1cv7.md Россия Абонемент ($m) Практика программирования

Баг 1С 7.7 открывает нам возможность реализовать без использования ВК непостредственный ввод таких значений, как справочники, перечисления, документы по введенному тексту в поле ввода (а ля 1С 8.х)

1 стартмани

25.06.2012    21348    33    MarSeN    21       

Скрипт обработки повторов принадлежности видов расчетов к группам расчетов при сравнении конфигураций ЗИК

Инструменты и обработки Программист Компонента, плагин (dll, vbs,..) v77::Расчет 1С7:ЗиК Россия Абонемент ($m) Практика программирования

При сравнении конфигураций 7.7 ЗИК у групп расчетов и видов расчетов присутствуют строки, относящиеся одновременно к удалённым и добавленным видам/группам. Скрипт анализирует отчет о сравнении конфигураций и удаляет лишние строки.

1 стартмани

05.06.2012    4531    2    bubblegum    1       

Базовый курс для начинающих 1С-программистов. Онлайн-интенсив со 2 июня по 2 июля 2020 г. Промо

Данный онлайн-курс является начальной ступенью по изучению базовых принципов программирования в системе “1С:Предприятие” и предназначен для обучения 1С-программированию “с нуля”.

4500-9500 рублей