|
Таблица значений на управляемой форме | ☑ | ||
---|---|---|---|---|
0
Dionisious
07.09.12
✎
12:08
|
Подскажите пожалуйста кто знает.
Есть управляемая форма. У нее в реквизитах ТаблицаЗначений. Таблица заполняется программно и содержит много строк (больше 100 000). Таблица выведена на форму. На форме есть поле. У поля прописан обработчик события ПриИзменении. В этом обработчике вызывается серверная процедура. Дак вот вызов этой процедуры занимает очень много времени. Хотя ни каких параметров не передается. По всей видимости при вызове серверной процедуры на сервер передается вся таблица значений. Как думаете можно это как нибудь обойти. Заранее благодарен за любые предложения. |
|||
1
DrShad
07.09.12
✎
12:09
|
так она передается или нет?
|
|||
2
Dionisious
07.09.12
✎
12:10
|
В коде не передается. Но судя по замеру производительности - что еще 1С может так долго делать?
|
|||
3
aleks-id
07.09.12
✎
12:11
|
а таб.часть использовать не?
|
|||
4
k1us181b
07.09.12
✎
12:13
|
&НаСервереБезКонтекста пробовал?
|
|||
5
Волесвет
07.09.12
✎
12:15
|
"На форме есть поле. У поля прописан обработчик события ПриИзменении. В этом обработчике вызывается серверная процедура"
приизменении поля?? табл часть тогда причем? вызывается серверная процедура - имхо копаем тут |
|||
6
Dionisious
07.09.12
✎
12:20
|
(3) увы нужна именно таблица значений.
(4) потом нужно получить объект. Так что без контекста не катит. (5) вот и я думал при чем тут таблица. Зависает именно на вызове процедуры. Если таблицу очистить и снова изменить поле - вызов проходит в разы быстрее. |
|||
7
kochurovg
07.09.12
✎
12:20
|
(4) поможет
|
|||
8
zladenuw
07.09.12
✎
12:21
|
А что именно ты хочешь изменять ? тормоза только когда 1 раз изменяешь или постоянно ?
|
|||
9
Rovan
гуру
07.09.12
✎
12:25
|
(6) а чем ТЗ лучше чем ТЧ ?
|
|||
10
Dionisious
07.09.12
✎
12:26
|
Нет я конечно понимаю как это обойти радикально переделав пол документа. Но вопрос в том как хранить реквизит формы таблицу значений на сервере не передавая ее на клиента и обратно.
Вот думаю может как то можно динамический список для отображения таблицы использовать. С произвольным запросом и параметром ТЗ. Но что то не получается. |
|||
11
Dionisious
07.09.12
✎
12:29
|
(9) Это форма документа и ТЧ там ни к чему. Вернее в зависимости от вида документа ТЗ может содержать разные колонки. Поэтому формирую ТЗ и записываю ее в реквизит документа ХранилищеЗначения. При записи и при открытии тормоза конечно есть из-за этого. Но это терпимо. Но когда реквизиты документа начинаешь менять становится все печально как то.
|
|||
12
acsent
07.09.12
✎
12:31
|
вызов сервера неявно передает форму на сервер, а потом обратно
|
|||
13
acsent
07.09.12
✎
12:31
|
сделай таблицу невидимой по умолчанию
|
|||
14
DrShad
07.09.12
✎
12:34
|
(11) мсье знает толк в извращениях
|
|||
15
Defender aka LINN
07.09.12
✎
12:59
|
(11) Маладец...
|
|||
16
Dionisious
07.09.12
✎
13:01
|
(14) (15) Да я такой.
(13) иногда надо редактировать. Хотя можно таблицу и вообще не выводить на форму. |
|||
17
zladenuw
07.09.12
✎
13:06
|
(16) если ее скрыть то все Хорошо ?
|
|||
18
Dionisious
07.09.12
✎
13:14
|
(17) ни видимость ни полное удаление таблицы с формы не помогают.
|
|||
19
zladenuw
07.09.12
✎
13:18
|
а если попробовать реквизит объекта. а не формы. может попустить
|
|||
20
Dionisious
07.09.12
✎
13:26
|
(19) а тип реквизита какой сделать?
|
|||
21
zladenuw
07.09.12
✎
13:33
|
может тз ?
|
|||
22
Dionisious
07.09.12
✎
14:00
|
Это будет тогда табличная часть. У меня документ а не обработка. В документе реквизит - хранилище значения. Куда при записи сохраняется ТЗ.
|
|||
23
Стальная Крыса
07.09.12
✎
14:52
|
а зачем: "... В этом обработчике вызывается серверная процедура" ?
серверная процедура что-то делает со всей ТЗ или с какой-то ее частью - строкой ? если только со строкой, тогда все просто: 1. упаковать данные строки в структуру; 2. передать на "сервер без контекста" для обработки; 3. получить на клиент результат обработки ОДНОЙ строки; 4. записать на клиенте в ТЗ. зы. ну а при закрытии все равно тормозов не избежать. |
|||
24
Стальная Крыса
07.09.12
✎
14:55
|
есть вариант хранения произвольной структуры данных объекта с использованием нескольких регистров:
3 под метаданные + по количеству типов хранящейся информации. в этом случае все будет быстро, но разумеется накладно. |
|||
25
vmv
07.09.12
✎
15:01
|
наверняка в серверной есть РеквизитФормыВЗначение("Объект")
где 100К строк или с самой тз и вся это масса конфертиться в значение-объект чему удивляться? вообще 100К строк в Тч/Тз и более - попахивает кривым проектированием, вернее это 100% недуманное решение задачи Есть же средства дифференцирования данных, есть мастер-детели и никакой идиот не будут листать 100 000 строк, он всегда будет использовать отборы и фильтры. там почему же сразу не разложить яйца по разным корзинам грамотно? |
|||
26
Defender aka LINN
07.09.12
✎
15:02
|
Может лучше хранить ТЗ на сервере, да и все? Нафига она на форме?
Ну и, само собой, правильный совет: избавься нафиг от этого извращения. Совсем. |
|||
27
vmv
07.09.12
✎
15:02
|
(22) бгг, хранилище значений для тз - это вообще капец.
я тож раньше велся на это типа удобно - опа сохранил тз в хранилище вытащил, но как видим при солидном объеме тз этот соблазн - от лукавого) |
|||
28
Dionisious
08.09.12
✎
10:42
|
(23) Ни чего она с ТЗ не делает. Совсем. Говорю же замер производительности дает 99% выполнения на строке вызова серверной процедуре а не на всяких там РеквизитФормыВЗначение(). То есть при вызове даже пустой серверной процедуры на сервер передается вся ТЗ.
(24) через ТЗ делаю что бы объекты метаданных не плодить. (25) если серверную процедуру сделать пустой - то же самое. (26) я бы рад но как? Реквизит формы передается туда сюда даже если он на форме не отображается. Делал переменную формы. Ее значение пропадает при завершении выполнения любой процедуры. Может попробовать переменную объекта? Попробую в понедельник пожалуй. Но что то сомнения терзают. Регистр что ли сделать для временного хранения? Но это еще большее извращение. (27) Кстати работает вполне себе ни че так. Если бы ТЗ при каждом вызове не передавалась с клиента на сервер было бы совсем хорошо. Кстати видимые тормоза заметил на 180 тысячах строк. При этом открытие документа идет секунд 20. Закрытие примерно столько же. Вполне себе нормально. Если бы не серверные обработчики событий было бы совсем хорошо. Кстати кому интересно задача собственно такая - алкогольная декларация. Надо хранить в том виде в каком ее сдали. Раньше делал через регистр сведений. Но в том решении при сдаче корректировки данные первичного отчета пропадали. Сейчас новую форму решил сделать примерно так же как в типовой регламентированная отчетность. Сначала даже думал сделать так же через ТабличныйДокумент. Но он у меня умер - даже не дошел до 100 тысяч строк. Переделал на ТЗ. Вроде стало лучше. Но появилась эта проблема. Кроме того есть еще корпоративная отчетность тоже думаю запилить на этот же механизм. Нужные данные хранить в ТЗ а ТЗ в хранилище. Поэтому и не хочу делать фиксированные метаданные. Так что да извращение но по моему вполне оправдано. |
|||
29
Defender aka LINN
10.09.12
✎
10:29
|
(28) Открой для себя временное хранилище
|
|||
30
Dionisious
10.09.12
✎
13:01
|
(29) кстати да. Спасибо. Пробовал уже временное хранилище. Но там была таблица не очень оптимизирована поэтому переделал на ТЗ. Сейчас попробую вернуть назад временное хранилище с другой ТЗ и отображать буду по установленному отбору.
Всем огромное спасибо. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |