Имеется НаборЗаписей Регистра бухгалтерии Хозрасчетный на 9 тысяч строк. Записывается 6 часов. База на Постгре. Что-нибудь можно сделать для ускорения записи? ТиС не помогло...
НаборЗаписей = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(Док); //Док - ЗакрытиеМесяца
НаборЗаписей.Прочитать();
//тут изменяем субконто записей по условию
НаборЗаписей.Записать();
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(3) в файловой 1С вылетает с сообщением о нехватке памяти. Процесс съедает ее всю (4 Гб примерно). Замер сделаю. Код обработки я выложил, срабатывает он быстро. Тормоза именно в момент выполнения строки НаборЗаписей.Записать(). Код документа "Закрытие месяца" стандатрный и не изменялся.
Запись за 6 часов это точно не здраво. Ускорить можно если записывать частями (например, по 100 штук). Самый быстрый способ - записывать данные напрямую в БД SQL. Но это не так уж много записей чтоб так тормозила система...
РегистрБухгалтерииМенеджер.<Имя регистра бухгалтерии> (AccountingRegisterManager.<Имя регистра бухгалтерии>)
УстановитьИспользованиеИтогов (SetTotalsUsing)
Синтаксис:
УстановитьИспользованиеИтогов(<Признак>)
Параметры:
<Признак> (обязательный)
Тип: Булево.
Признак использования итогов. Ложь - пересчет итогов не производится.
Описание:
Устанавливает признак использования итогов. Если использование итогов отключено, то при записи набора записей регистра не будет производиться пересчет итогов, но при этом будут не доступны виртуальные таблицы расчета остатков и оборотов.
Данный режим работы регистра позволяет повысить скорость записи набора записей регистра. Он может быть полезен при массовых загрузках данных.
При установке признака использования итогов производится пересчет только тех итогов, которые зависят от движений, сделанных в момент, когда итоги были выключены.
Доступность:
Сервер, толстый клиент, внешнее соединение.
ПоказатьУстановитьИспользованиеИтогов (SetTotalsUsing)
Синтаксис:
УстановитьИспользованиеИтогов(<Признак>)
Параметры:
<Признак> (обязательный)
Тип: Булево.
Признак использования итогов. Ложь - пересчет итогов не производится.
Описание:
Устанавливает признак использования итогов. Если использование итогов отключено, то при записи набора записей регистра не будет производиться пересчет итогов, но при этом будут не доступны виртуальные таблицы расчета остатков и оборотов.
Данный режим работы регистра позволяет повысить скорость записи набора записей регистра. Он может быть полезен при массовых загрузках данных.
При установке признака использования итогов производится пересчет только тех итогов, которые зависят от движений, сделанных в момент, когда итоги были выключены.
Доступность:
Сервер, толстый клиент, внешнее соединение.
Я обрабатываю один документ за раз. Т.е. один документ - 9-10 тысяч строк. Сегодня провелся другой Док на 10 тысяч за 3 часа... Параметры такие же как и в предыдущем.
Диск SSD.
Замер производительности показал, что 99% тратится на выполнение строки "НаборЗаписей.Записать()".
Диск SSD.
Замер производительности показал, что 99% тратится на выполнение строки "НаборЗаписей.Записать()".
Можно попробовать:
выгрузить набор записей в таблицу значений,
очистить набор записей,
записать набор записей (пустой, чтобы удалить все по данному отбору),
циклами записывать данные из таблицы значений по 100 записей с флагом "Замещать" = Ложь: НаборЗаписей.Записать(Ложь).
выгрузить набор записей в таблицу значений,
очистить набор записей,
записать набор записей (пустой, чтобы удалить все по данному отбору),
циклами записывать данные из таблицы значений по 100 записей с флагом "Замещать" = Ложь: НаборЗаписей.Записать(Ложь).
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот