Добрый день Знатоки!!!
В конфигурации УНФ 8.2 работающей в файловом тестовом режиме (пользователь только я), добавил новый регистр бухгалтерии.
Режим управления блокировкой данных = Управляемый.
Режим разделения итогов = Ложь.
Полнотексный поиск = Ложь;
Для этого регистра использую три субконто, имеющие составной тип.
Хочу сформировать движения в процедуре Обработка Проведения::
,
Количество записей примерно 1000 строк. Если указываю текущий период, то регистр проводиться, но если 2014 год, то запись регистра затягивается.
Понятно, что одна из причин тормозящих запись в регистр это составные субконто. Вторая я предполагал - индексация субконто. Пробовал на время проведения отключать индексацию, но не получил желаемого результата.
Измерял производительность операции, но не увидал причину тормозов.
Подскажите, пожалуйста, как ускорить запись регистра бухгалтерии. .
В конфигурации УНФ 8.2 работающей в файловом тестовом режиме (пользователь только я), добавил новый регистр бухгалтерии.
Режим управления блокировкой данных = Управляемый.
Режим разделения итогов = Ложь.
Полнотексный поиск = Ложь;
Для этого регистра использую три субконто, имеющие составной тип.
Хочу сформировать движения в процедуре Обработка Проведения::
НабБух = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
НабБух.Отбор.Регистратор.Установить(Ссылка);
Для каждого Стр Из Таб Цикл
Движ = НабБух.Добавить();
Движ.Регистратор = Ссылка;
Движ.Период = Период;
Движ.Организация = Стр.Организация;
Движ.СчетДт = Стр.СчетЗатрат;
Движ.СубконтоДт.Характеристика1 = Стр.СтруктурнаяЕдиница;
Движ.СубконтоДт.Характеристика2 = Стр.ВнеоборотныйАктив;
Движ.СубконтоДт.Характеристика3 = Стр.НаправлениеДеятельности;
Движ.СчетКт = Стр.СчетУчета;
Движ.СубконтоКт.Характеристика1 = Стр.СтруктурнаяЕдиница;
Движ.СубконтоКт.Характеристика2 = Стр.ВнеоборотныйАктив;
Движ.СубконтоКт.Характеристика3 = Стр.НаправлениеДеятельности;
КонецЦикла;
НабБух.Записать();
ПоказатьНабБух.Отбор.Регистратор.Установить(Ссылка);
Для каждого Стр Из Таб Цикл
Движ = НабБух.Добавить();
Движ.Регистратор = Ссылка;
Движ.Период = Период;
Движ.Организация = Стр.Организация;
Движ.СчетДт = Стр.СчетЗатрат;
Движ.СубконтоДт.Характеристика1 = Стр.СтруктурнаяЕдиница;
Движ.СубконтоДт.Характеристика2 = Стр.ВнеоборотныйАктив;
Движ.СубконтоДт.Характеристика3 = Стр.НаправлениеДеятельности;
Движ.СчетКт = Стр.СчетУчета;
Движ.СубконтоКт.Характеристика1 = Стр.СтруктурнаяЕдиница;
Движ.СубконтоКт.Характеристика2 = Стр.ВнеоборотныйАктив;
Движ.СубконтоКт.Характеристика3 = Стр.НаправлениеДеятельности;
КонецЦикла;
НабБух.Записать();
Количество записей примерно 1000 строк. Если указываю текущий период, то регистр проводиться, но если 2014 год, то запись регистра затягивается.
Понятно, что одна из причин тормозящих запись в регистр это составные субконто. Вторая я предполагал - индексация субконто. Пробовал на время проведения отключать индексацию, но не получил желаемого результата.
Измерял производительность операции, но не увидал причину тормозов.
Подскажите, пожалуйста, как ускорить запись регистра бухгалтерии. .
По теме из базы знаний
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Все зависит от того, сколько там операций уже есть. 1с любит кластерные индексы ко всему приклеивать, одним из полей этого индекса является период. Если текущих записей много, то при записи данных предыдущего периода происходит запись данных в ""начало" списка, что производит множественное разделение страниц индекса. Это достаточно затратная операция как в файловом режиме, так и в клиент-серверном.
Вот способы для ускорения:
запись несколькими порциями;
запись вне транзакции;
перевод базы в монопольный режим;
установка управляемой исключительной блокировки на весь регистр;
отключение использования итогов
запись несколькими порциями;
запись вне транзакции;
перевод базы в монопольный режим;
установка управляемой исключительной блокировки на весь регистр;
отключение использования итогов
Пробовал записывать несколькими порциями:
Ускорения не почувствовал Не уверен, что реализовывал правильный алгоритм..
Так как в тестовой базе я один, то монопольный режим и управления блокировками, не то .
В процессе поиска причин наткнулся на непонятную штучку. Если я фиксирую счет Кредита для всех проводок, то установка разных счетов влияет на время проводки. Наверное это связано с количеством записей по этому щету.
Движ.СчетКт = Стр.СчетУчета;
Движ.СубконтоКт.Характеристика1 = Стр.СтруктурнаяЕдиница;
Движ.СубконтоКт.Характеристика2 = Стр.ВнеоборотныйАктив;
Движ.СубконтоКт.Характеристика3 = Стр.НаправлениеДеятельности;
Сч =Сч +1;
Если Сч >= 100 Тогда
Сч = 0;
НабБух.Записать(Ложь);
КонецЕсли;
КонецЦикла;
НабБух.Записать(Ложь);
ПоказатьДвиж.СубконтоКт.Характеристика1 = Стр.СтруктурнаяЕдиница;
Движ.СубконтоКт.Характеристика2 = Стр.ВнеоборотныйАктив;
Движ.СубконтоКт.Характеристика3 = Стр.НаправлениеДеятельности;
Сч =Сч +1;
Если Сч >= 100 Тогда
Сч = 0;
НабБух.Записать(Ложь);
КонецЕсли;
КонецЦикла;
НабБух.Записать(Ложь);
Ускорения не почувствовал Не уверен, что реализовывал правильный алгоритм..
Так как в тестовой базе я один, то монопольный режим и управления блокировками, не то .
В процессе поиска причин наткнулся на непонятную штучку. Если я фиксирую счет Кредита для всех проводок, то установка разных счетов влияет на время проводки. Наверное это связано с количеством записей по этому щету.
Попробуйте писать не 3 субконото, а 1 и 2. Посмотрите на разницу в скорости. Если она существенна, то дело в индексах для таблиц, содержащих остатки и обороты по разным субконто. 1С, помнится, создавала при таком раскладе кучу дополнительных таблиц. Также посмотрите, нужны ли вам остатки по всем субконто. Если нет - используйте только обороты (настройка счета)..
Да, понятно. Спасибо!!!!!!!!!!!!!!!!!!!!!!!!!!
Подведем итог.
Я знал,, но еще раз проверил предложенные вами способы ускорения записи регистра. Все они дали мизерный прирост ускорения. Поэтому наверное самое правильное задействовать регистр накопления для хранения больших объемов, а в бухгалтерском регистре хранить только обобщенные итоги.
Подведем итог.
Я знал,, но еще раз проверил предложенные вами способы ускорения записи регистра. Все они дали мизерный прирост ускорения. Поэтому наверное самое правильное задействовать регистр накопления для хранения больших объемов, а в бухгалтерском регистре хранить только обобщенные итоги.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот