Таблица значений на управляемой форме #628525


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

В этой группе 1С