03.03.2011, 16:49 | #1 |
Участник
|
Вопрос [к fed] по InventCostClosing
Возможно, мой вопрос неправильный, но спрошу всё же.Закрытие склада, класс InventCostClosing, метод createInventCostList() (версия Ax4.0), там 4 похожих куска кода:
X++: while select forceplaceholders ItemId from inventTable index hint TypeIdx where inventTable.ItemType == ItemType::Item exists join inventTrans index hint OpenItemIdx where inventTrans.ValueOpen == InventTransOpen::Yes && inventTrans.ItemId == inventTable.ItemId { this.createInventCostListItem(inventTable.ItemId,recordInsertList); } |
|
03.03.2011, 17:22 | #2 |
Moderator
|
Цитата:
Сообщение от Zabr
Возможно, мой вопрос неправильный, но спрошу всё же.Закрытие склада, класс InventCostClosing, метод createInventCostList() (версия Ax4.0), там 4 похожих куска кода:
X++: while select forceplaceholders ItemId from inventTable index hint TypeIdx where inventTable.ItemType == ItemType::Item exists join inventTrans index hint OpenItemIdx where inventTrans.ValueOpen == InventTransOpen::Yes && inventTrans.ItemId == inventTable.ItemId { this.createInventCostListItem(inventTable.ItemId,recordInsertList); } Во вторых - я не думаю что вы что-то сильно ускорите. В текущей реализации вы просто создаете запись в inventCostList, потом система загружает только приходные проводки (поскольку если расходные проводки в открытом периоде есть, то ваше предложение точно не сработало бы и мы можем этот вариант в рассмотрение не брать), а потом не найдя расходных проводок просто тихо забывает про данную номенклатуру. То есть - сэконоите вы от силы процентов 10-15 времени и только на НУЛЕВОЙ итерации закрытия. Которая сама по себе обычно занимает процентов 15 времени закрытия. Соответственно, сэкономите вы 2-3 процента общего времени закрытия, а всяких рисков дополнительных получите по полной программе. Вообще мне кажется что проблемы производительности правильнее решать просто увеличивая число хелперов. Задача неплохо масштабируется в ширь и решать ее нужно именно таким образом. Последний раз редактировалось fed; 03.03.2011 в 17:31. |
|
03.03.2011, 17:25 | #3 |
Участник
|
Закрытие склада может брать проводки от начала времен, если эта партия пошла в дело только сейчас, сотв, ее отсекать нельзя по дате. Тогда уж только расходные фильтровать. Но и по ним может что-то измениться, если в прошлое кто-то добрый наразносил что-то.
Код по закрытию я не помню уже, это так, мысли в тему. Если учет поставлен четко на процедурах блокировки закрытых периодов, то можно сделать настроечки на отсечения не нужного, но только по расходной части все равно, чтоб приходы брались все (но это тоже от модели складской зависит и аналитик). |
|
03.03.2011, 17:27 | #4 |
NavAx
|
Может я не понял вопрос, но как насчет закрытия проводок проведенных датой больше закрытия?
Странно было бы делать закрытие по проводкам, которых как бы еще не было на дату закрытия. |
|