Долго записывается НаборЗаписей

1. request4t 30.11.16 01:46 Сейчас в теме
Имеется НаборЗаписей Регистра бухгалтерии Хозрасчетный на 9 тысяч строк. Записывается 6 часов. База на Постгре. Что-нибудь можно сделать для ускорения записи? ТиС не помогло...

НаборЗаписей = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(Док); //Док - ЗакрытиеМесяца
НаборЗаписей.Прочитать();  
//тут изменяем субконто записей по условию
НаборЗаписей.Записать();  
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. TODD22 18 30.11.16 06:36 Сейчас в теме
(1) Выгрузить в файловую и попробовать?

Сделать замер производительности?
Выложить весь код?
onetone; alex-l19041; +2 Ответить
7. request4t 30.11.16 10:35 Сейчас в теме
(3) в файловой 1С вылетает с сообщением о нехватке памяти. Процесс съедает ее всю (4 Гб примерно). Замер сделаю. Код обработки я выложил, срабатывает он быстро. Тормоза именно в момент выполнения строки НаборЗаписей.Записать(). Код документа "Закрытие месяца" стандатрный и не изменялся.
5. onetone 30.11.16 09:56 Сейчас в теме
(1) Согласен с (3) Тут не обойтись без замера производительности, может у Вас все время уходить на какие нибудь условия или подписки.
2. alex_ua85 30.11.16 03:27 Сейчас в теме
Запись за 6 часов это точно не здраво. Ускорить можно если записывать частями (например, по 100 штук). Самый быстрый способ - записывать данные напрямую в БД SQL. Но это не так уж много записей чтоб так тормозила система...
6. request4t 30.11.16 10:28 Сейчас в теме
(2) Как реализовать запись частями, подскажите, плз.
9. NatalyaVP 30.11.16 13:32 Сейчас в теме
(6) Можно разбить по времени: по месяцам, по годам.
Я разбивала по годам, просто при отборе документов в запросе (у меня запрос был) поставить условие: ДатаДокумента между дата(01,01,2015) и дата(31,12,2015).
Потом в условии поставить следующий год.
4. ImHunter 316 30.11.16 06:46 Сейчас в теме
Может еще какие-то подписки отрабатывают
8. TODD22 18 30.11.16 10:42 Сейчас в теме

Как реализовать запись частями, подскажите, плз.

Разбейте на несколько документов. В каждом по 500 записей например.
10. ditp 92 30.11.16 13:47 Сейчас в теме
РегистрБухгалтерииМенеджер.<Имя регистра бухгалтерии> (AccountingRegisterManager.<Имя регистра бухгалтерии>)
УстановитьИспользованиеИтогов (SetTotalsUsing)

Синтаксис:

УстановитьИспользованиеИтогов(<Признак>)
Параметры:

<Признак> (обязательный)

Тип: Булево.
Признак использования итогов. Ложь - пересчет итогов не производится.
Описание:

Устанавливает признак использования итогов. Если использование итогов отключено, то при записи набора записей регистра не будет производиться пересчет итогов, но при этом будут не доступны виртуальные таблицы расчета остатков и оборотов.
Данный режим работы регистра позволяет повысить скорость записи набора записей регистра. Он может быть полезен при массовых загрузках данных.
При установке признака использования итогов производится пересчет только тех итогов, которые зависят от движений, сделанных в момент, когда итоги были выключены.

Доступность:

Сервер, толстый клиент, внешнее соединение.
Показать
memb3r; корум; +2 Ответить
13. request4t 30.11.16 17:09 Сейчас в теме
15. request4t 30.11.16 22:30 Сейчас в теме
похоже, сработал метод (10). буду проверять результаты...

A X (ditp), огромнейшее СПАСИБИЩЕ!!!!
11. JohnGalt 58 30.11.16 14:29 Сейчас в теме
Скорость ввода/вывода дисковой подсистемы тоже играет важную роль.
12. request4t 30.11.16 17:07 Сейчас в теме
Я обрабатываю один документ за раз. Т.е. один документ - 9-10 тысяч строк. Сегодня провелся другой Док на 10 тысяч за 3 часа... Параметры такие же как и в предыдущем.

Диск SSD.

Замер производительности показал, что 99% тратится на выполнение строки "НаборЗаписей.Записать()".
14. ipoloskov 164 30.11.16 17:12 Сейчас в теме
Можно попробовать:
выгрузить набор записей в таблицу значений,
очистить набор записей,
записать набор записей (пустой, чтобы удалить все по данному отбору),
циклами записывать данные из таблицы значений по 100 записей с флагом "Замещать" = Ложь: НаборЗаписей.Записать(Ложь).
16. ImHunter 316 01.12.16 07:56 Сейчас в теме
qwert
Кстати, а разделение итогов по регистру - вкл или выкл?
17. request4t 01.12.16 20:31 Сейчас в теме
(16) включено.

Проблема решена! Спасибо всем за помощь! Мир не без добрых людей)
18. ImHunter 316 02.12.16 06:27 Сейчас в теме
(17)
Так обозначь для истории и добрых людей - что же стало решением в итоге
19. корум 288 02.12.16 10:32 Сейчас в теме
(18)
что же стало решением в итоге

судя по контексту, ответ в посте (10).
Оставьте свое сообщение

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