|
v8: как ускорить загрузку в регистр бухгалтерии | ☑ | ||
---|---|---|---|---|
0
Garry1010
27.12.13
✎
15:42
|
Удивительное дело, каким образом 1С пишет свои методы объектов.
В продолжение своей ранней темы с переносом проводок в МСФО занимаюсь сейчас ускорением работы этой шняги. Стал делать заполнение проводок через Таблицу значений, чтобы потом всё скопом загрузить в регистр и - О, ужас! Строка: Движения.Международный.Загрузить(тзМСФО); работает так же медленно, как и обычный вариант с прямым созданием записей. Даже отключение использования итогов для регистра бухгалтерии не помогает. Зато вариант с построчным добавлением записей в регистр работает в 10(!) раз быстрее (160 секунд вместо 1366). То есть что-то типа: Для Каждого стр из тзМСФО цикл
...даёт офигенный прирост скорости. Я обалдеваю... Может кому-то поможет при поиске ответа на вопрос "как ускорить загрузку в регистр бухгалтерии". |
|||
1
Maxus43
27.12.13
✎
16:06
|
Что за тзМСФО? сколько записей? колонки типизированы?
|
|||
2
ptiz
27.12.13
✎
16:08
|
Не верю, что в этом дело.
|
|||
3
Azverin
27.12.13
✎
16:09
|
о, ужас!
|
|||
4
Кирпич
27.12.13
✎
16:12
|
мож под отладкой запускаешь
|
|||
5
Garry1010
27.12.13
✎
17:42
|
(1) Очевидно, что ТаблицаЗначений.;) 25408 строк - нормально? Строго типизированы, ибо созданы выгрузкой из регистра (когда он пустой вначале): тзМСФО = Движения.Международный.Выгрузить();
(2) Сам не верю... (4) Вообще-то, да.[:шарк:] И сейчас вот без отладки что-то тормозит, собака! О_О Как это вообще возможно??? Они там в 1С вообще сдурели, что ли?.. Хотя исходный вариант с загрузкой всей таблицы ведь тоже под Отладчиком сидел, однако не ускорялся от него.-_- Чудеса! Я добавил в цикл вывод состояния с прогресс-баром - и всё полетело красиво и быстро, как под отладкой. |
|||
6
H A D G E H O G s
27.12.13
✎
17:43
|
(5) Хрень какая-то.
|
|||
7
Garry1010
27.12.13
✎
17:46
|
(6) Не то слово!О_О
|
|||
8
Мимохожий Однако
27.12.13
✎
17:47
|
(6) + 1
(7) - 1 |
|||
9
Apokalipsec
27.12.13
✎
17:48
|
В (0) не вижу, чтобы записывалась запись в регистр, автор ты просто добавляешь?))
Автор - черепашка. |
|||
10
vde69
модератор
27.12.13
✎
17:50
|
(5) для отлдадчика каждая лишняя строка = замедление,
если отладчика нет - количество строк влияет только если код выполняется на клиенте, при выполнении на сервере писать в одну строку не имеет смысла. собственно именно по этому ты и поимел неверные оценки скорости |
|||
11
hhhh
27.12.13
✎
18:07
|
(7) перебор-то понятно должен быстрее работать, чем Загрузить().
попробуйте еще заменить ЗаполнитьЗначенияСвойств(), еще быстрее получится. |
|||
12
Garry1010
27.12.13
✎
18:08
|
(9) Так это документ ПереносПроводок такой - там сначала заполняются проводки, показываются в форме документа и лишь потом документ записывается вместе с регистрами своими. Ясен пень, что я не собираюсь записывать в базу 25408 строк по одной строке.[:гы-гы:]
|
|||
13
Garry1010
27.12.13
✎
18:12
|
(10) Посмотрим - пока, вроде, удалось добиться ускорения.
(11) Хз. Обычно встроенные методы должны(?) работать быстрее - они же не подвергаются интерпретации кода. Видать, тут у 1С что-то криво написано. (10) Не понял про "если отладчика нет - количество строк влияет только"... По идее, наоборот, чем меньше строк, тем быстрее должно жужжать - верно? А тут - наоборот. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |