|
![]() |
#1 |
Участник
|
Пересчет данных по периодам
Здравствуйте уважаемые.
Ax30 SP1 (клиент и сервер SP3) С недавних пор перестала работать процедура - Пересчет данных по периодам. При этом после часа работы система закрывается и пишет, что сервер закрыл соединение с вашим компьютером. При этом процедура не отрабатывается. Может быть кто-нибудь сталкивался с данной проблемой? Что посоветуете? Заранее благодарен.
__________________
Александр |
|
![]() |
#2 |
NavAx
|
Записей в LedgerTrans много?
Работают ли при этом пользователи с системой (пока идет пересчет)? Мониторили ли память ОЗУ на AOS? |
|
![]() |
#3 |
Участник
|
Цитата:
из них по переносу начальных сальдо - больше 3 млн. Люди при пересчете не работают. В двухзвенке вылетает из-за плохой памяти. По трехзвенке работает. Память жрет, но ее на серевере много. До предела не доходила. И что делать?
__________________
Александр |
|
![]() |
#4 |
Участник
|
Как вариант, с помощью незначительных доработок добавить в пересчет условия по дате и/или бух. счету
|
|
![]() |
#5 |
Участник
|
Цитата:
Думаю, что "условия по дате и/или бух. счету" не тот вариант, который бы хотелось получить.
__________________
Александр |
|
![]() |
#6 |
Участник
|
Посмотрите лог АОСа, если трехзвенка (иначе просто, лог клиента
![]() |
|
![]() |
#7 |
Участник
|
Дело возможно в большом объеме LedgerBalancesDimTrans. При персчете содержимое этой таблицы формируется целиком в памяти в одной транзакции
|
|
![]() |
#8 |
Участник
|
Цитата:
Подскажите пожалуйста. Не думаю, что только у нас так много записей.
__________________
Александр |
|
![]() |
#9 |
Участник
|
Для меня самый простой выход - оптимизировать сам механизм пересчета, например пересчитывать только проводки в открытых периодах, или вручную задавать интервал дат при пересчете, т.е каким либо образом уменьшить порцию вычислений в одной транзакции.
|
|
![]() |
#10 |
Участник
|
Понятно. Спасибо.
__________________
Александр |
|
![]() |
#11 |
Lean Six Sigma
|
Цитата:
Для меня самый простой выход - оптимизировать сам механизм пересчета, например пересчитывать только проводки в открытых периодах, или вручную задавать интервал дат при пересчете, т.е каким либо образом уменьшить порцию вычислений в одной транзакции.
Мне ещё кажется неоптимальным механизм пересчёта, т.е. само вычисление значений внутри транзакции. Я бы предложил его переписать целиком - сначала подсчитывать суммарные значения, потом их класть в RecordInsertList и только потом уже открывать транзакцию, внутри которой чистить таблицы сумм и вставлять в них значения из RecordInsertList'ов. |
|
![]() |
#12 |
Участник
|
Цитата:
Сообщение от Ned
![]() Мне ещё кажется неоптимальным механизм пересчёта, т.е. само вычисление значений внутри транзакции. Я бы предложил его переписать целиком - сначала подсчитывать суммарные значения, потом их класть в RecordInsertList и только потом уже открывать транзакцию, внутри которой чистить таблицы сумм и вставлять в них значения из RecordInsertList'ов.
Пока подсчитываешь, кто-то может добавить новую проводку. В результате итоги не будут соответствовать проводкам. |
|
![]() |
#13 |
Lean Six Sigma
|
Логично, согласен. Просто скорость работы стандартного механизма убивает.
|
|
![]() |
#14 |
Участник
|
это не ежедневно использующийся механизм.
это механизм "лечения" остатков. |
|