|
Максимальное число строк в макете (табличный документ) | ☑ | ||
---|---|---|---|---|
0
DrShust
04.08.14
✎
07:23
|
Пишу обработку, которая собирает данные из нескольких регистров и записывает их в другой регистр. Перед тем как записать их туда, предоставляется возможность редактирования полученных данных. Народ желает редактировать эти данных в том виде, в котором набросали в Excel’е. В тестовом варианте одни и те же данные вывожу в табчасть обработки и в табличный документ реквизита формы (в который, собственно вывожу макет). При изменении чисел в макете, происходит изменение и пересчёт как в макете так и в табчасти.
Суть проблемы: при выводе большого числа строк, обработка виснет, причём не на этапе расчётов, а при методах табличного документа Вывести и Присоединить (которые, чередуясь, используются в цикле). Если эти строки заремарить, тогда всё ОК: табличная часть заполняется за 25-30 сек. На данном этапе выводится 15 тыс. строк, а будет в 10 раз больше. Т.е. табчасть заполнится минут за 5, а если выводить макетом (но в более удобном для пользователей варианте), тогда очень не скоро. Возник вопрос: есть ли порог (например, в количестве выводимых на экран строк), сверх которого не целесообразно идти на уступки пользователям в этой конкретной задаче в ущерб производительности? И второй вопрос: какое максимальное количество строк вы видели на экране в фиксированном макете? Здесь видимо я имею ввиду даже не визуальное наблюдение информации, а использование методов Вывести и Присоединить. Если кто-то выводил, скажем, более 10-15 тыс. строк в макет хотя бы за 5 минут, тогда в коде у меня что-то напутано (хотя для проверки того, что тормоза именно в этих местах кода, я комментил только 2 строки: Табдок.Вывести(ОбластьСтроки) и Табдок.Присоединить(ОбластьСтроки). |
|||
1
Повелитель
04.08.14
✎
07:28
|
(0) 100 000 в легкую.
Для того чтобы определить максимум, можно написать обработку внешнюю с циклом на 1 млн, 10 млн вывода строк, это займет ну 5 минут, ты больше писал, чем бы сам тестанул |
|||
2
DrShust
04.08.14
✎
07:31
|
(1) :)) Возможно. Просто я уже почти закончил писать, об этом подумал.
|
|||
3
Повелитель
04.08.14
✎
07:34
|
https://yadi.sk/d/TsdLhnzvYyr9y
Че тут думать на навоял сейчас за 5 минут. 100 000 строк выводит за 5 секунд. |
|||
4
DrShust
04.08.14
✎
07:42
|
(3) А если для управляемых не дольше будет? Да, извиняюсь, забыл сказать - Управляемое приложение, тонкий клиент. С модуля формы я ухожу в модуль объекта.
|
|||
5
Повелитель
04.08.14
✎
07:49
|
(4) Тут я не подскажу. Тестировать надо.
Знаю только, что некоторые браузере xml с 10000 записей открывают по 10 минут. Возможно как раз из-за этого и тормозит у тебя, 1с тонкий клиент, тоже можно браузером назвать )) |
|||
6
Drac0
04.08.14
✎
07:55
|
(0) табдок ты заполняешь в безконтестном вызове?
|
|||
7
DrShust
04.08.14
✎
07:55
|
(5) 100000 строк вывело за 20 секунд. Может быть дело в количестве параметров - их больше 10. Причём один из них как раз выводится методом присоединить (получается макет расползается не только по вертикали, но и по горизонтали, в зависимости от введённых данных пользователями).
|
|||
8
DrShust
04.08.14
✎
07:57
|
(6) Табдок заполняется в модуле объекта, т.е. на сервере, я там директивы не указываю.
|
|||
9
DrShust
04.08.14
✎
08:02
|
(5) Правда в твоих словах есть (насчёт браузера :))) Но это точнее будет применить к динамическим спискам. Когда прокручиваешь список документов, база может притормаживать. Вроде 1000 строк выводится при открытии формы списка, а при прокрутке добавляется новая порция. В принципе, как в большинстве новых сайтов (для быстроты отображения информации).
|
|||
10
Drac0
04.08.14
✎
08:51
|
(8) т.е. безконтекстно. Есть большой нюанс: если табдок заполняется в контекстном вызове, то на клиента приходит частями при просмотре, а если в безконтекстном вызове, то сразу весь, что несколько дольше иногда.
|
|||
11
DrShust
04.08.14
✎
09:00
|
(10) Немного поэксперементировал. Зависает при методе Присоединить. У меня получается цикл внутри цикла: сначала методом Вывести выводится строка, а потом методом Присоединить к этой строке подцепляются новые колонки и их количество грубо говоря зависит от количество элементов справочника. Т.е. таблица: в строках номенклатура, в колонках города. Видимо оптимизацию нужно в этом куске кода проводить...
|
|||
12
DrShust
04.08.14
✎
09:09
|
(11) Т.е. получается по строкам цикл проходит 15 тыс раз - и это 1С вывозит. Но в каждой итерации новый цикл по городам, а их забили 40. Соответственно 15000*40 = 600 тыс. прогонов. Сейчас ради интереса в простецкую обработку, которая построчно выводит номера строк и больше ничего забил количество проходов 600 тыс. Прошло больше 6 минут - программа зависла. Причём на 100 тыс. - думает 20 сек. Но 20*6 <> 120 :))
|
|||
13
Drac0
04.08.14
✎
09:28
|
(12) тогда делай макет на лету и меня логику заполнения, чтобы избежать вложенного цикла.
|
|||
14
DrShust
04.08.14
✎
09:35
|
(13) Да, видимо придётся что-то придумать либо отказаться от этой идеи. Всем спасибо!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |