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