Показать сообщение отдельно
Старый 05.11.2019, 13:48   #7  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,158 / 1286 (47) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Цитата:
Сообщение от SuperStar88 Посмотреть сообщение
Вот это bom.ItemId != bomTable.ItemId_X должно предотвращать зацикливание, то есть спецификация не может входить сама в себя
Только в самом простом случае - когда вхождение непосредственное. Но оно может быть и на других уровнях в многоуровневой спецификации (то есть, на глубине гораздо большей, чем непосредственное вхождение).
Кроме того, просто ItemId проверять не совсем корректно - вполне может быть ситуация, когда номенклатура одна, а конфигурации разные (из одной номенклатуры изготавливаем её подобие, но немного отличающееся) тогда это не зацикливание.
Если учесть конфигурационные группы, периоды действия строки спецификации, тип строки спецификации (например, фантомная может разворачиваться) и другие тонкости, то напрямую по таблице пробегать может быть не очень хорошей идеей. В стандартной Аксе есть классы BomSearch* и BOMHierarchy* там можно подсмотреть примеры.
За это сообщение автора поблагодарили: mazzy (5).