Показать сообщение отдельно
Старый 10.09.2004, 15:06   #10  
SevA is offline
SevA
Участник
Аватар для SevA
 
22 / 10 (1) +
Регистрация: 08.09.2004
Причина такого поведения отчета выявлена. Метод BOMHierarchyReport\scanDownVersion() делает проверку на цикличность.

PHP код:
if (presLevel == ||!circularBOMMap)
            
circularBOMMap = new Map(Types::IntegerTypes::Enum); // RecId, more than once?

        
if (circularBOMMap.exists(BOM.RecId))
        {
            if (
circularBOMMap.lookup(BOM.RecId) == NoYes::Yes)
                return 
false;
            else
                
circularBOMMap.insert(BOM.RecIdNoYes::Yes);
        }
        else
            
circularBOMMap.insert(BOM.RecIdNoYes::No);
        
reportRun.send(BOM); 
В моем случае спецификация имеет вид:
PHP код:
-Сп1 (искусственная)
         -
Сп21
                  
-Сп31
                            
-Сп41
                            
-Номенклатура1
                            
-Номенклатура2
         
-Сп22
                  
-Сп32
                           
-Сп41
                           
-Номенклатура3
                           
-Номенклатура2
         
-Сп22
                  
-Сп32
                           
-Сп41
                           
-Номенклатура1
                           
-Номенклатура3
и т
.д
Вполне реальная производственная спецификация.
Так вот, в соответствии с приведенным выше кодом, Когда третий раз выводиться Сп41, этот метод вылетает. Вылетает из-за того, что при возврате на уровень 1 circularBOMMap не очищается.
Пытаемся понять логику такой работы кода, пока ни чего разумного на ум не приходит. Видимо, все же глюк.