Медленная запись регистра бухгалтерии

1. t955938 02.05.17 10:15 Сейчас в теме
Добрый день Знатоки!!!
В конфигурации УНФ 8.2 работающей в файловом тестовом режиме (пользователь только я), добавил новый регистр бухгалтерии.
Режим управления блокировкой данных = Управляемый.
Режим разделения итогов = Ложь.
Полнотексный поиск = Ложь;
Для этого регистра использую три субконто, имеющие составной тип.
Хочу сформировать движения в процедуре Обработка Проведения::
НабБух = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
НабБух.Отбор.Регистратор.Установить(Ссылка);

Для каждого Стр Из Таб Цикл
Движ = НабБух.Добавить();
Движ.Регистратор = Ссылка;
Движ.Период = Период;
Движ.Организация = Стр.Организация;
Движ.СчетДт = Стр.СчетЗатрат;

Движ.СубконтоДт.Характеристика1 = Стр.СтруктурнаяЕдиница;
Движ.СубконтоДт.Характеристика2 = Стр.ВнеоборотныйАктив;
Движ.СубконтоДт.Характеристика3 = Стр.НаправлениеДеятельности;

Движ.СчетКт = Стр.СчетУчета;
Движ.СубконтоКт.Характеристика1 = Стр.СтруктурнаяЕдиница;
Движ.СубконтоКт.Характеристика2 = Стр.ВнеоборотныйАктив;
Движ.СубконтоКт.Характеристика3 = Стр.НаправлениеДеятельности;

КонецЦикла;

НабБух.Записать();
Показать
,

Количество записей примерно 1000 строк. Если указываю текущий период, то регистр проводиться, но если 2014 год, то запись регистра затягивается.

Понятно, что одна из причин тормозящих запись в регистр это составные субконто. Вторая я предполагал - индексация субконто. Пробовал на время проведения отключать индексацию, но не получил желаемого результата.
Измерял производительность операции, но не увидал причину тормозов.
Подскажите, пожалуйста, как ускорить запись регистра бухгалтерии. .
По теме из базы знаний
Найденные решения
10. starik-2005 3039 02.05.17 11:08 Сейчас в теме
(8)
Начисление амортизации основных средств
А зачем нужен отдельный план счетов? Почему не используете регистр накопления?
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. starik-2005 3039 02.05.17 10:23 Сейчас в теме
Все зависит от того, сколько там операций уже есть. 1с любит кластерные индексы ко всему приклеивать, одним из полей этого индекса является период. Если текущих записей много, то при записи данных предыдущего периода происходит запись данных в ""начало" списка, что производит множественное разделение страниц индекса. Это достаточно затратная операция как в файловом режиме, так и в клиент-серверном.
3. t955938 02.05.17 10:30 Сейчас в теме
Спасибо за ответ. Но что сделать???
Пробовал временно отключить индексацию, но при включении ее требуется время.
Пробовал всю запись объединить в одну транзакцию, вообще разницы не почувствовал.
4. alexlights 02.05.17 10:40 Сейчас в теме
Вот способы для ускорения:
запись несколькими порциями;
запись вне транзакции;
перевод базы в монопольный режим;
установка управляемой исключительной блокировки на весь регистр;
отключение использования итогов
5. t955938 02.05.17 11:01 Сейчас в теме
Пробовал записывать несколькими порциями:
Движ.СчетКт = Стр.СчетУчета;
Движ.СубконтоКт.Характеристика1 = Стр.СтруктурнаяЕдиница;
Движ.СубконтоКт.Характеристика2 = Стр.ВнеоборотныйАктив;
Движ.СубконтоКт.Характеристика3 = Стр.НаправлениеДеятельности;

Сч =Сч +1;
Если Сч >= 100 Тогда
Сч = 0;
НабБух.Записать(Ложь);
КонецЕсли;

КонецЦикла;

НабБух.Записать(Ложь);
Показать


Ускорения не почувствовал Не уверен, что реализовывал правильный алгоритм..

Так как в тестовой базе я один, то монопольный режим и управления блокировками, не то .

В процессе поиска причин наткнулся на непонятную штучку. Если я фиксирую счет Кредита для всех проводок, то установка разных счетов влияет на время проводки. Наверное это связано с количеством записей по этому щету.
6. t955938 02.05.17 11:03 Сейчас в теме
7. kolya_tlt 86 02.05.17 11:04 Сейчас в теме
что за операция делает 1000 проводок? попахивает не правильным проектированием
8. t955938 02.05.17 11:07 Сейчас в теме
Начисление амортизации основных средств.
10. starik-2005 3039 02.05.17 11:08 Сейчас в теме
(8)
Начисление амортизации основных средств
А зачем нужен отдельный план счетов? Почему не используете регистр накопления?
9. starik-2005 3039 02.05.17 11:07 Сейчас в теме
Попробуйте писать не 3 субконото, а 1 и 2. Посмотрите на разницу в скорости. Если она существенна, то дело в индексах для таблиц, содержащих остатки и обороты по разным субконто. 1С, помнится, создавала при таком раскладе кучу дополнительных таблиц. Также посмотрите, нужны ли вам остатки по всем субконто. Если нет - используйте только обороты (настройка счета)..
11. t955938 02.05.17 11:17 Сейчас в теме
Конечно можно, учет амортизации можно вести и в регистре накопления, И по всей видимости мне придется так и поступить.
Спасибо за помощь!
12. Armando 1399 02.05.17 11:20 Сейчас в теме
Еще зависит от периода рассчитанных итогов. Если движения записать в старый период, за которые итоги уже посчитаны, то будут пересчитаны итоги за каждый месяц до границы итогов.
13. t955938 02.05.17 11:42 Сейчас в теме
Да, понятно. Спасибо!!!!!!!!!!!!!!!!!!!!!!!!!!

Подведем итог.
Я знал,, но еще раз проверил предложенные вами способы ускорения записи регистра. Все они дали мизерный прирост ускорения. Поэтому наверное самое правильное задействовать регистр накопления для хранения больших объемов, а в бухгалтерском регистре хранить только обобщенные итоги.
14. alexlights 02.05.17 11:48 Сейчас в теме
(13) А Итоги пробовали отключать при записи?)
15. t955938 02.05.17 12:01 Сейчас в теме
Пробовал. Регистр проводится быстрее. Но потом их включить надо, что займет кучу времени.
16. alexlights 02.05.17 13:07 Сейчас в теме
Для 1000 записей займет немного времени.
17. t955938 02.05.17 13:12 Сейчас в теме
Отключать и включать индексацию придется в не рабочее время. Поэтому лучше задействовать отдельный регистр накопления.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот