Показать сообщение отдельно
Старый 04.03.2014, 15:03   #3  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,895 / 5650 (194) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
В поздних сервис-паках к 2009ой приделали параллельный рассчет спецификаций. То есть - если запускаешь на пакетном сервере полный рассчет всех спецификаций в одноуровневом режиме, то у тебя система рожает n-хелперов (где помнится - по 4 хелпера на каждый сервер, обслуживающий пакетную группу). Хелперы внутри каждого уровня вложенности BOM работают в параллель. После того как просчитаны цены уровня n+1, начинается расчет цен уровня n.
Из всего этого можно сделать параллельный пересчет цены для конкретной спецификации. Надо просто сделать свой клон этого класса, который в табличку заданий для рассчета (BOMCalcItemTask/BOMCalcItemInventoryDimensionTask) пишет только те номенклатуры и аналитики, которые входят в данную спецификацию. (Ну то есть - классическое развертывание спецификации).
Кроме того, надо будет дописывать какой-то механизм автоматической активации цены, чтобы цены, рассчитанные на уровне n+1 немедленно активировались, чтобы рассчет на уровне n прочитал уже их, а не предыдущие значения. (Хотя в режиме стандартной себестоимости, автоматическая активация весьма чревата). На моем проекте это было сделано до меня, но дописка там не очень сложная. У нас на контрольных примерах время рассчета сложной спеки упала с 10-12 часов до 20-30 минут... Это конечно сильно зависит от размера ваших спек и режима их обсчета (может у вас там фантомов много, например), но в целом на 2-3 раза увеличения производительности можно надеятся даже в тяжелых случаях.
P.S. Есть альтернативный подход: Вместо автоматической активации свежепосчитанной цены, можно просто подломать сам рассчет, чтобы при включении определенной галочки, он бы сначала искал цену в pending prices (InventItemPriceSim) и только если там ничего нету - искал бы в обычных местах.

Последний раз редактировалось fed; 04.03.2014 в 15:07.
За это сообщение автора поблагодарили: gl00mie (3), raniel (1).