|
v7: Вопрос по работе с объектом "Таблица" | ☑ | ||
---|---|---|---|---|
0
AlexS1C
06.05.13
✎
19:40
|
Может кто знает, есть ли какая внеш. компонента, что бы создать программно шаблон объекта «Таблица», а потом его уже заполнять. Штатными средствами этого сделать нельзя(((! Создать программного шаблон помогло бы повысить скорость формирования таблицы для универсальных отчетов! Исключив к примеру дополнительный цикл по колонкам: Таб.ПрисоеденитьСекцию(«Строка|Колонка»).
|
|||
1
КапЛей
06.05.13
✎
19:46
|
а зачем?
|
|||
2
Ork
06.05.13
✎
19:53
|
(0) Пользуя "область" вместо "секция" вполне можно обойтись вообще без шаблона/макета. И будет вам полностью программное заполнение, оформление и проТчая радости.
|
|||
3
vcv
07.05.13
✎
09:59
|
По заполнению отчета быстрее его выводить в стиле 1С8. То есть перед циклом вывода строк получить секцию, при выводе заполнять её значениями и выводить.
СекцияСтроки = Таб.ПолучитьСекцию("Строка"); Пока ... Цикл СекцияСтроки.Сумма = ... Таб.ВывестиСекцию(СекцияСтроки); КонецЦикла; Заодно, бонусом, в замере производительности в отладчике увидишь всё. А то, если в ячейке таблицы написать выражение, например, Номенклатура.ПечНаименование, в отладчике эту строку не увидишь, а обращение к справочнику при выводе каждой строки отчета получишь. И соответствующие тормоза. |
|||
4
AlexS1C
07.05.13
✎
13:17
|
(2) Если имеешь ввиду такое заполнение:
Таб.Область(ИИ+1, ЖЖ, ИИ+1, ЖЖ).Текст = Значение; Таб.Область(ИИ+1, ЖЖ, ИИ+1, ЖЖ).Расшифровка(Значение, 0); Таб.Область(ИИ+1, ЖЖ, ИИ+1, ЖЖ).РамкаОбвести(3, 0, 3, 0); То в нем большой минус по производительности! Как то годик назад помню тестил что быстрей работает вывод через шаблон или без него! Оказалось шаблон в разы давал большу скорость выполнения!Хотя сам думал что без шаблона будет быстрей, оказалось все наоборот! Поэтому было бы здорово создать шаблон программно! |
|||
5
AlexS1C
07.05.13
✎
13:18
|
(3) Это интересный способ! Надо будет его по тестировать! Спасибо за подсказку!!!
|
|||
6
AlexS1C
07.05.13
✎
15:51
|
(3) Да этот метод работает в раза 2 быстрее! Кстати еще по тестировал, еще более быстрый нашел на 30-40 %! На основании (3):
СекцияСтроки = Таб.ПолучитьСекцию("Строка|Колонка"); ОбластьСекции = СекцияСтроки.область(1,1,1,1); //- если секция с одной ячейкой Пока ... Цикл ОбластьСекции.Текст = ... Таб.ВывестиСекцию(СекцияСтроки); КонецЦикла; Скорость чуть выше + ни надо создавать именованную область! |
|||
7
Mikeware
07.05.13
✎
15:53
|
белорусам отсыпали восклицательных знаков...
|
|||
8
NS
07.05.13
✎
15:56
|
(0) Вообще-то программно создать шаблон можно.
|
|||
9
AlexS1C
07.05.13
✎
16:04
|
(8) Как?
|
|||
10
NS
07.05.13
✎
16:05
|
(9) Таб.записать(,0);
|
|||
11
Chum
07.05.13
✎
16:07
|
>Штатными средствами этого сделать нельзя
схерали? Загрузить(<?>); Синтаксис: Загрузить(<СписокЗначений>) Назначение: Загружает значения и имена для всех предназначенных для ввода ячеек таблицы из объекта типа ''Список значений'', причем представление списка значений становится именем ячейки, а значение записи становится значением ячейки. Параметры: <СписокЗначений> - идентификатор объекта типа ''Список значений'', откуда загружаются парами значения и имена для всех предназначенных для ввода ячеек. |
|||
12
AlexS1C
07.05.13
✎
16:23
|
(10) Просто сохранить таблицу. При чем тут шаблон? Создать программно шаблон я имею ввиду, создать секции и т.д.
|
|||
13
AlexS1C
07.05.13
✎
16:25
|
(11) Это только в режиме ввода данных
|
|||
14
NS
07.05.13
✎
16:30
|
(12) А нафига? Есть же методы области таблицы.
|
|||
15
AlexS1C
07.05.13
✎
16:55
|
(14) Через области, если имеется ввиду типа как тут(4)! То работает медленей, чем через шаблон! Да и вообще вопрос не актуален, меня вполне устраивает так (6)!
|
|||
16
AlexS1C
07.05.13
✎
16:56
|
Всем спасибо за участие! Хотя если у кого еще есть идеи то всегда пожалуйста!)))
|
|||
17
trad
07.05.13
✎
17:02
|
(0) есть ВК tabledoc.dll
Там новые секции в макете создавать нельзя, но можно изменять существующие секции макета, что в принципе соответствует поставленной задаче - избавиться от ПрисоеденитьСекцию. вот такой демонстрационный код: Таб = СоздатьОбъект("Таблица"); Мен = СоздатьОбъект("МенеджерТабличногоДокумента"); Мен.УстановитьТаблицу(Таб); СекцияМакета = Мен.ПолучитьСекциюМакета("Секция_1"); //секция макета без расчета формул Область = СекцияМакета.Область(1,1); Область.ФорматДанных(3); Область.Текст = "[i*2]"; Область = СекцияМакета.Область(1,2); Область.ФорматДанных(1); Область.Текст = "i"; Область = СекцияМакета.Область(1,3); Область.ФорматДанных(2); Область.Текст = "текст"; Для i=1 По 100 Цикл Таб.ВывестиСекцию(СекцияМакета.ВычислитьСекцию()); //вывод рассчитанной области КонецЦикла; Таб.Показать(); |
|||
18
AlexS1C
07.05.13
✎
20:44
|
(17) Спасибо за совет.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |