Показать сообщение отдельно
Старый 01.12.2006, 09:51   #4  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от DreamCreator Посмотреть сообщение
Вопрос такой -- можно ли из InventSum удалять записи с Closed == NoYes::Yes и ClosedQty == NoYes::Yes
Мы немножко не о том говорили.
Обрати внимание, что у InventSum есть методы
isAllFieldsZero
isAllQtyFieldsZero
isAllValueFieldsZero

Надо проверить записи для которых InventSum.isAllFieldsZero() == true
Такие записи могут появляться в двух случаях:
1. выполнен приход и расход. Итог обнулился, но его удалять нельзя
2. человек создал строчку в журнале/заказе/закупке с неправильной складской аналитикой. Но потом обнаружил свою ошибку и исправился до разноски. В этом случае в InventDim появится запись с комбинацией, которая нигде больше не используется. А в inventSum - запись с итогами на такой InventDim. Такие inventSum могут быть и закрытыми, и незакрытыми.

Поэтому правильный алгоритм такой:
1. Найти записи в InventSum для которых InventSum.isAllFieldsZero() == true
2. Найти количество InventTrans для таких записей
3. Если количество в InventTrans == 0, то InventSum удалять можно.

Дополнительное расширение алгоритма:
= сначала можно проверить "забытые" inventTrans - остались ли неразнесенные InventTrans, которые относятся к несуществующим (или аннулированным) журналам/заказам/закупкам/производству
= в конкретном вашем случае можно смягчить проверку и проверять InventSum.isAllQtyFieldsZero() == true (но будь предельно внимательным если у тебя появились записи в InventSum c нулевым количеством И ненулевой суммой И с отсутствующими проводками в InventTrans - это признак того, что в базу вмешивались грубой силой.)
__________________
полезное на axForum, github, vk, coub.