В стандарте DAX2012 (и в предыдущих версиях кажется тоже) есть функция Управление запасами и складами \ ПО \ Спецификации \ Изменения спецификации номенклатуры.
Функция позволяет массово менять в спецификациях одну номенклатуру на другую. У этой функции есть параметр «Удалить из выбора конфигурации». Активация этого параметра позволяет очистить данные из таблицы «Выбор конфигурации» (ConfigChoise), которые относятся к старой номенклатуре.
Метод выглядит следующим образом:
X++:
void deleteConfigChoice(BOM bom, ItemId itemId)
{
ConfigChoice configChoice;
BOMVersion bomVersion;
;
select firstonly bomVersion
where bomVersion.bomId == bom.bomId;
if (bomVersion)
{
delete_from configChoice
where configChoice.ItemId == bomVersion.ItemId &&
configChoice.ChosenItemId == itemId &&
configChoice.ChosenGroupId == bom.ConfigGroupId;
}
}
Если для текущей спецификации существует только одна версия, то код будет работать корректно. Но если у спецификации, есть несколько версия для различных номенклатур, то удаление будет выполнено только для первой из них (fistOnly). Очень похоже на багу.