Вот вышел Hotifx Rollup 5 - и принес еще кучу геморроя с пересечением id-шников объектов приложения. Теперь уже не только поля таблиц стандартного приложения "заезжают" в диапазон usr-слоя, но и расширенные типы с енумами. Ну неужели сложно элементарную проверку сделать перед выпуском? А то так вот подложишь новые слои - а в стандартных полях, которые ты даже не думал трогать, окажутся расширенные типы с USR-слоя, потом синхронизируешься - и пипец... Приведенный выше скрипт был немного допилен, теперь он обрабатывает больше типов объектов приложения и выводит информацию о возможных пересечениях с usr-слоем.
X++:
UtilIdElements utilElementUsr;
UtilIdElements utilElements;
identifiername parentName;
identifiername parentNameUsr;
str usrCounterpart;
str getParentName(UtilIdElements _utilElements)
{
str ret;
;
switch (utilElements.recordType)
{
case UtilElementType::Class :
case UtilElementType::Table :
case UtilElementType::Enum :
case UtilElementType::ExtendedType :
ret = '';
break;
case UtilElementType::TableField :
case UtilElementType::TableIndex :
ret = tableid2name( utilElements.parentId );
break;
default :
throw error( Error::wrongUseOfFunction( funcname() ) );
}
return ret;
}
;
while select id, parentId, name, utilLevel
from utilElements
order by recordType, parentId, id
where utilElements.utilLevel < UtilEntryLevel::usr
&& utilElements.Id >= 50000
&& ( utilElements.recordType == UtilElementType::TableField
|| utilElements.recordType == UtilElementType::TableIndex
|| utilElements.recordType == UtilElementType::ExtendedType
|| utilElements.recordType == UtilElementType::Enum
|| utilElements.recordType == UtilElementType::Table
|| utilElements.recordType == UtilElementType::Class
)
{
select firstonly utilElementUsr
where utilElementUsr.utilLevel == UtilEntryLevel::usr
&& utilElementUsr.recordType == utilElements.recordType
&& utilElementUsr.id == utilElements.id
&& utilElementUsr.parentId == utilElements.parentId
&& utilElementUsr.name != utilElements.name
;
if (utilElementUsr)
{
parentNameUsr = getParentName( utilElementUsr );
usrCounterpart = strfmt( ' - %1%2%3', parentNameUsr, parentNameUsr ? '.' : '', utilElementUsr.name );
}
else
{
usrCounterpart = '';
}
parentName = getParentName( utilElements );
info( strfmt( '%1 %2%3%4 (%5) %6%7', utilElements.recordType, parentName, parentName ? '.' : '',
utilElements.name, utilElements.utilLevel, utilElements.Id, usrCounterpart
));
}
Вот какой - переработанный и дополненный - список получился после запуска скрипта на приложении AX 2009 SP1 EE RU5 + SL2 ("СНГ Зарплата" и "СНГ Кадровый учет"):
Код:
Enum MonthQuarter_HU (glp) 50134
ExtendedType EUSalesListIsSettlement_W (glp) 50122
ExtendedType EUSalesListIsCanceled_W (glp) 50123
ExtendedType BuildNum_HU (glp) 50124
ExtendedType StariwayNum_HU (glp) 50125
ExtendedType FloorNum_HU (glp) 50126
ExtendedType DoorNum_HU (glp) 50127
ExtendedType Phone_HU (glp) 50128
ExtendedType EUSalesListTransferTypePurch_W (glp) 50129
ExtendedType EUSalesListTransferType_W (glp) 50130
TableField CustParameters.CreditCardPostingAccountType (sys) 50004
TableField CustParameters.CreditCardPostingAccount (sys) 50005
TableField CustParameters.CreditCardPostingBankTransactionType (sys) 50006
TableField CustSettlement.EUSalesList_W (glp) 50001
TableField CustOpenInvoices.InvoiceCompany (sys) 50002
TableField CustOpenInvoices.PartyId (sys) 50003
TableField VendSettlement.EUSalesList_W (glp) 50001
TableField EUSalesList.IsSettlement_W (glp) 50001
TableField EUSalesList.IsCanceled_W (glp) 50003
TableField IntrastatParameters.EUSalesListTransferPurchases_W (glp) 50001
TableField IntrastatParameters.CompanyBuildNum_HU (glp) 50002
TableField IntrastatParameters.CompanyStariwayNum_HU (glp) 50003
TableField IntrastatParameters.CompanyFloorNum_HU (glp) 50004
TableField IntrastatParameters.CompanyDoorNum_HU (glp) 50005
TableField IntrastatParameters.FilledByPhone_HU (glp) 50006
TableField TmpTaxReport_ITSummary.TaxBookSectionId (sys) 50001
TableField TmpTaxReport_ITSummary.TaxBookSectionName (sys) 50002
TableField AssetTransMerge.ReasonRefRecId (sys) 50001
TableField CustVendCommunicationTmp.TaxBaseTotal (sys) 50001
TableField CustVendCommunicationTmp.TaxTotal (sys) 50002
TableField CustVendCommunicationTmp.NoTaxTotal (sys) 50003
TableField CustVendCommunicationTmp.ExemptTotal (sys) 50004
TableField CustVendCommunicationTmp.CreditNoteTotal (sys) 50005
TableField CustVendCommunicationTmp.CreditNoteTaxTotal (sys) 50006
TableField CustVendCommunicationTmp.CreditNoteExemptTotal (sys) 50007
TableField CustVendCommunicationTmp.CreditNoteNoTaxTotal (sys) 50008
TableField CustVendCommunicationTmp.FiscalCode (sys) 50009
TableField CustVendCommunicationTmp.VatNum (sys) 50010
TableField CustVendCommunicationTmp.Account (sys) 50011
TableField CustVendCommunicationTmp.TaxDirection (sys) 50012
TableField CustVendCommunicationTmp.Voucher (sys) 50013
TableField CustVendCommunicationTmp.RecordType (sys) 50014
TableField CustVendCommunicationTmp.PurchTotalInclTax (sys) 50016
TableField CustVendCommunicationTmp.CreditTotalInclTax (sys) 50017
TableField CustVendCommunicationTmp.Name (sys) 50018
TableField CustVendCommunicationTmp.TaxRefId (sys) 50019
TableField CustVendListReportSetup.TaxGroup (sys) 50001
TableField CustVendListReportSetup.TaxCode (sys) 50002
TableField CustVendListReportSetup.NoTaxType (sys) 50003
TableField CustVendListReportSetup.Exclude (sys) 50004
TableField CustVendListReportSetup.IsZeroTax (sys) 50005
TableField CreditCardProcessors.PaymentJournal_Visa (sys) 50001
TableField CreditCardProcessors.PaymentJournal_MasterCard (sys) 50002
TableField CreditCardProcessors.PaymentJournal_AmericanExpress (sys) 50003
TableField CreditCardProcessors.PaymentJournal_Discover (sys) 50004
TableField VendInvoiceInfoLine_Asset.CreateFixedAsset (sys) 50001
TableField VendInvoiceInfoLine_Asset.AssetGroup (sys) 50002
TableField VendInvoiceInfoLine_Asset.AssetId (sys) 50003
TableField VendInvoiceInfoLine_Asset.AssetTransTypePurch (sys) 50004
TableField VendInvoiceInfoLine_Asset.AssetBookId (sys) 50005
TableField VendInvoiceInfoLine_Asset.AssetAcquired (sys) 50006
TableField VendInvoiceInfoLine_Asset.VendInvoiceInfoLineRecId (sys) 50007
TableField EmplAdvExpendTable_RU.Taxed (sl2) 50003
TableIndex ReturnTmpStatRanking.ElementIdx (sys) 50001
TableIndex CustVendCommunicationTmp.SortOrderIdx (sys) 50001
TableIndex CustVendListReportSetup.TaxGroupTaxCodeIdx (sys) 50001