29.04.2008, 12:19
|
#1
|
Участник
Регистрация: 28.11.2005
Адрес: Москва
|
Версии спецификации и метод InventTable.insertBOMTable()
Сразу скажу, что спецификации знаю весьма поверхностно - поэтому и есть некоторые сомнения относительно того, что удалось найти.
В ходе сравнения приложений разных версий обнаружилось «незначительная» разница в методах InventTable.insertBOMTable() для версии приложения 3.0 SP3 и 3.0 SP5, а также последующих версий. Разница заключается в интерпретации состояния конфигурационного ключа BOMVersion - если в SP3 код выглядит (с некоторыми купюрами) так:X++: server void insertBOMTable()
{
BOMTable BOMTable;
BOMVersion BOMVersion;
if (! this.inventItemType().canHaveBOM())
return;
if (!isConfigurationKeyEnabled(configurationkeynum(BOMVersion)))
return;
BOMTable.initFromInventTable(this);
// ...
BOMTable.insert();
BOMVersion.initFromInventTable(this);
BOMVersion.initFromBOMTable(BOMTable);
// ...
BOMVersion.insert();
} то в 3.0 SP5 он - опять же с купюрами - выглядит уже так:X++: server void insertBOMTable()
{
BOMTable BOMTable;
BOMVersion BOMVersion;
if (! this.inventItemType().canHaveBOM())
return;
if (isConfigurationKeyEnabled(configurationkeynum(BOMVersion)))
return;
BOMTable.initFromInventTable(this);
// ...
BOMTable.insert();
BOMVersion.initFromInventTable(this);
BOMVersion.initFromBOMTable(BOMTable);
// ...
BOMVersion.insert();
} Иными словами, если в SP3 создание записей в таблицах BOMTable и BOMVersion производилось при включенном конфигурационном ключе BOMVersion (что кажется вполне логичным), то с SP5 оно производится лишь при выключенном конфигурационном ключе BOMVersion. Что самое странное, такая интерпретация этого конфигурационного ключа в методе insertBOMTable() перекочевала и во все последующие версии приложения, которые я проверил: 4.0 SP1, 4.0 SP2, 5.0 CTP3.
Объясните кто-нить, где именно была ошибка: в коде приложения до 3.0 SP3 включительно или же в коде, начиная с 3.0 SP5? Какой из вариантов правильный?.. 
Последний раз редактировалось gl00mie; 29.04.2008 в 12:22.
|
|