|
Как ускорить обработку? | ☑ | ||
---|---|---|---|---|
0
Help1с
16.08.16
✎
10:44
|
Приветствую.
Есть такой код: Процедура на клиенте выполняет код: Сообщить("1: " + ТекущаяДата()); ЗагрузитьДанныеВТЗИзМассива(Данные1, КолКолонок, КоличествоСтрок); Сообщить("4: " + ТекущаяДата()); &НаСервере Процедура ЗагрузитьДанныеВТЗИзМассива(МассивДанных, КолКолонок, КоличествоСтрок) Сообщить("2: " + ТекущаяДата()); Данные1 = МассивДанных; ТЗ1 = Новый ТаблицаЗначений(); Для ТекСтрока = 1 По КоличествоСтрок Цикл ТЗ1.Добавить(); КонецЦикла; НомерКолонки = 0; Для каждого ТекКолонка Из Данные1 Цикл НомерКолонки = НомерКолонки + 1; НоваяКолонка = ТЗ1.Колонки.Добавить("Кол" + Формат(НомерКолонки,"ЧЦ=3; ЧВН=")); ТЗ1.ЗагрузитьКолонку(ТекКолонка, НоваяКолонка); КонецЦикла; ТЗ1.Сортировать("Кол005,Кол008,Кол009,Кол007"); Сообщить("2,5: " + ТекущаяДата()); ТЗСодержаниеФайла.Загрузить(ТЗ1); Сообщить("3: " + ТекущаяДата()); КонецПроцедуры Загружаю данные массива, более 80 тысяч строк. Вот что выводит Сообщить: 1: 16.08.2016 12:30:40 2: 16.08.2016 12:31:02 //20 секунд на передачу массива на сервер? 2,5: 16.08.2016 12:31:05 3: 16.08.2016 12:31:08 4: 16.08.2016 12:32:28 //что делает полторы минуты? Сообщения выходят так: 1 - сразу, 2, 2,5, 3 - одновременно. значит процедура на сервере завершилась и вернулся обработчик на клиент. 4 - через полторы минуты после завершения процедуры на сервере. Есть варианты как ускорить работу обработки? Спасибо. |
|||
1
Help1с
16.08.16
✎
10:47
|
(0) + отладчиком прошелся, никакие события формы не выполняются.
|
|||
2
H A D G E H O G s
16.08.16
✎
10:49
|
Возвращает массив с сервера на клиент
|
|||
3
Help1с
16.08.16
✎
10:49
|
суть вопроса как бы сводится к тому, что выполняется между пунктом 3 и 4.
|
|||
4
patria0muerte
16.08.16
✎
10:50
|
Ммм... может серверную процедуру без контекста вызвать?
|
|||
5
Help1с
16.08.16
✎
10:50
|
(2) тогда получается не массив, а ТЗ.
в коде ТЗСодержаниеФайла.Загрузить(ТЗ1) - это таблица на форме |
|||
6
patria0muerte
16.08.16
✎
10:53
|
Я правильно понял, что общая проблема в том, чтобы передать ТЗ с клиента на сервер?
|
|||
7
Help1с
16.08.16
✎
10:55
|
(6) нет, проблема пока в том, что долго выполняется.
|
|||
8
RomaH
naïve
16.08.16
✎
10:58
|
ЗагрузитьДанныеВТЗИзМассива(Знач МассивДанных, Знач КолКолонок, Знач КоличествоСтрок)
|
|||
9
f_vadim
16.08.16
✎
10:58
|
>>ТЗСодержаниеФайла.Загрузить(ТЗ1);
если эти данные нужны на клиенте, то видимо ускорить не получится |
|||
10
RomaH
naïve
16.08.16
✎
10:59
|
(7) проблема в том, что контекст (форма + ТЗ)
|
|||
11
RomaH
naïve
16.08.16
✎
11:01
|
может все на клиенте делать?
|
|||
12
Help1с
16.08.16
✎
12:09
|
(11) хм. надо попробовать. спасибо.
|
|||
13
Fragster
гуру
16.08.16
✎
12:16
|
включить показатели производительности и посмотреть в них объем передаваемых данных
|
|||
14
Fragster
гуру
16.08.16
✎
12:17
|
у параметров функции поставить ЗНАЧ
|
|||
15
МихаилМ
16.08.16
✎
12:19
|
время на сервере и клиенте мб не синхронным
|
|||
16
Help1с
16.08.16
✎
12:25
|
(14) это помогло частично, теперь возврат с сервера не 80 секунд, а 40.
как быстрее работать - на сервере с ТЗ или на клиенте с данными формы коллекция? |
|||
17
Fragster
гуру
16.08.16
✎
12:27
|
есть ли на форме динамические списки, элементы управления со ссылочными данными, подписки на события у динамических списков?
|
|||
18
Help1с
16.08.16
✎
12:44
|
(17) есть все вышеперечисленное
|
|||
19
Help1с
16.08.16
✎
12:50
|
(16) + проверил. на клиенте ужасно долго.
&НаКлиенте Процедура ЗагрузитьДанныеВТЗИзМассива(Знач МассивДанных, Знач КолКолонок, Знач КоличествоСтрок) Сообщить("2: " + ТекущаяДата()); Данные1 = МассивДанных; ТЗ1 = ТЗСодержаниеФайла; НомерКолонки = 0; Для каждого ТекКолонка Из Данные1 Цикл НомерКолонки = НомерКолонки + 1; Для каждого ТекСтрокаКолонки Из ТекКолонка Цикл НоваяСтрока = ТЗ1.Добавить(); НоваяСтрока["Кол" + Формат(НомерКолонки,"ЧЦ=3; ЧВН=")] = ТекСтрокаКолонки; КонецЦикла; КонецЦикла; Сообщить("2,3: " + ТекущаяДата()); ТЗ1.Сортировать("Кол005,Кол008,Кол009,Кол007"); Сообщить("3: " + ТекущаяДата()); КонецПроцедуры |
|||
20
Help1с
16.08.16
✎
12:55
|
(19) + результат:
1: 16.08.2016 14:46:14 2: 16.08.2016 14:46:14 2,3: 16.08.2016 14:47:10 3: 16.08.2016 14:50:43 4: 16.08.2016 14:50:44 получается что сама таблица заполняется 50 секунд, а потом сортируется 3,5 минуты. сейчас подумаю что с этим делать. |
|||
21
ДемонМаксвелла
16.08.16
✎
13:05
|
сортируй МассивДанных, причем на сервере
|
|||
22
Fragster
гуру
16.08.16
✎
13:06
|
(18) переделай на &НаСервереБезКонтекста
|
|||
23
Fragster
гуру
16.08.16
✎
13:07
|
подписка на событие ПриАктивизацииСтроки у демонических списков долго выполняется?
|
|||
24
Help1с
16.08.16
✎
13:31
|
(23) это событие не замерял. данная процедура не задействована.
(22) не получится, таблица на форме не заполняется. |
|||
25
ovrfox
16.08.16
✎
13:35
|
(0) попробуйте сохранить данные в специальную структуру на сервере, например регистр сведений. В котором у же указаны необходимые сортировки.
Во время выполнения процедуры Вы просто передаете массив на сервер, пишете его в ТЗ, Сохраняете в регистр. После возврата отображаете динамический список регистра. |
|||
26
Fragster
гуру
16.08.16
✎
13:46
|
очищать ТЗСодержаниеФайла перед уходом на сервер
|
|||
27
Help1с
16.08.16
✎
13:49
|
(26) сохранить не дает обработку, пишет что переменная ТЗСодержаниеФайла не определена
|
|||
28
Fragster
гуру
16.08.16
✎
13:57
|
ТЗСодержаниеФайла - это что?
|
|||
29
Fragster
гуру
16.08.16
✎
14:00
|
вообще абстрактная обработка в вакууме - это непонятно. вероятно, надо грузануть файл на сервер и там уже его целиком обработать. пользователю показать уже результат, причем в виде таб. части или таб. дока
|
|||
30
Help1с
16.08.16
✎
14:13
|
(28) реквизит формы ТЗ
|
|||
31
Fragster
гуру
16.08.16
✎
14:24
|
ну так не = неопределено, а .очистить().
но вообще походу все дело во времени сериализации и десериализации |
|||
32
Fragster
гуру
16.08.16
✎
14:46
|
кстати, тут может зависеть от платформы. например таб.часть или тз может кэшироваться на сервере. а может и не кэшироваться, тут хз. с таб. документом точно прокатывает http://catalog.mista.ru/public/504141/ с ТЗ не смог сформудировать условия, когда оно на сервере живет и на клиент частями приходит
|
|||
33
Fragster
гуру
16.08.16
✎
14:46
|
* сформулировать :)
|
|||
34
RomaH
naïve
17.08.16
✎
06:54
|
я правильно понял - массив - это из екселя?
|
|||
35
Help1с
17.08.16
✎
08:41
|
(34) да. выгружаем область екселя в массив.
|
|||
36
Йохохо
17.08.16
✎
09:04
|
(35) в табличную часть формы у меня 60к строк 3 столбца на клиенте читаются за пару секунд из экселя
|
|||
37
Help1с
18.08.16
✎
09:34
|
(36) можно код?
|
|||
38
RomaH
naïve
18.08.16
✎
11:46
|
(35) так может на сервере ексель обрабатывать?
установить, настроить права - и вперед |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |