Задача 180.6546

Задача :180.6546

Краткое описание :
Нужно оптимизировать пересчет цен в расходных ордерах
Описание :
Пересчет цен в расходных ордерах
Что измененно :

Нужно оптимизировать пересчет цен в расходных ордерах.
Кол-во записей в sporder 1 000 000
примерно 120 000 в месяц.
В результате изменения стандартного функционала за январь реализация, закачанная с другого программного
обеспечения и проведенная в момент закачки собственной разработкой оказалась без цен в расходных ордерах.
МЦ по которым нужно было произвести перерасчет немного - 1500 из 13000.
До 31 дошло за 2 часа, но на 31 застряло на 8 - задачу пришлось снять ибо наступило утро, народу нужно работать.
Расcледование показало следующее.
В этот момент шла модификация spsopr из акта на списание(204 vidsopr) от 31.01. В этом акте списывались все остатки по одному
из подразделений - всего 2400 позиций(с учетом партий). Если посмотреть на журнал по одной строке эого акта
то она модицировалась несколько раз в секунду все эти 8 часов, при этом менялось только поле atl_lasttime.
В это же время иногда менялся и sporder(пришлось прокрутить кучу записей) - заполнялось поле csaldofnd и все.
Вопрос - а зачем?
1. В этом подразделении с ценой все нормально 100%. Средние цены хранятся по разрезу склад - мол - партия, и оно не пострадало
Зачем вообще перерасчитывать?
2. Меня интересовали только расходные - зачем перерасчитывать цену в акте? и еще таким болезненным способом?

Предлагаю следующее
1. Внести флаг в параметры операции о необходимости пересчета цен в накладных(расшифровать в каких именно типах будет производится по F1).
2. В процессе перерасчета менять только spsopr (и только если необходимо!!! - зачем мне это миллион записей?),
пересчет суммы по накладной не делать, а накапливать во временную таблицу с ведением протокола в текстовый файл(! - не нужно держать его открытым)
3. После окончания пересчета цен в ордерах по накопленным данным произвести пересчет сумм в накладных(один раз по каждому документу).
4. В случае сбоя предоставить режим, по которому из сформированного текстового файла можно было бы произвести перерасчет цен в накладных.
5. Было бы полезно иметь возможность перерасчета цен по заданным подразделениям.

В таком виде как сейчас функционалом можно пользоваться только на праздниках, ну может быть иногда по одной МЦ.
Для массового пересчета он не пригоден.
Как измененно :

Реализовано следующим образом:
в окно параметров отчета добавлен параметр:
"пересчитывать цены в накладных/актах"
Если указанный параметр установлен, то после изменения цены в ордере, если ордер создан по Накладной или акту, то по связанному документу произойдет модификации цены в позиции SpSopr по расходному ордеру и корректировка суммы по KatSopr на дельту изменения цены по позиции, т.к. хранить все изменения цен по всем накладным и затем запускать пересчет трудоемко.

Название продукта Название компонента Тип Последняя версия Дата выхода
L_SKLADL_SKLADRES9.1.011.0
L_SKLADL_SKLADRES9.1.11.0