|   |   | 
| 
 | Как ускорить обработку? | ☑ | ||
|---|---|---|---|---|
| 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) так может на сервере ексель обрабатывать?
 установить, настроить права - и вперед | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |