![]() |
#15 |
Участник
|
Проверенный алгоритм добавления складской аналитики в Microsoft Dynamics AX 4.0.
1. Создать расширенный тип данных для новой аналитики –DUN_PurchMachineId
2. Создать функциональный ключ для настройки использования аналитики в приложении – DUN_PurchMachineId. В качестве ParentFeatureKey для него задать функциональные ключи LogisticsDefault и Invent 3. В расширенном типе данных DUN_PurchMachineId задать функциональный ключ DUN_PurchMachineId 4. Создать таблицу DUN_PurchNumberMachine с String - полями: NumberMachineId (DUN_PurchMachineId) ItemId (ItemId) ConfigId (ConfigId) 5. В расширенном типе данных добавить Relation: NumberMachineId == DUN_PurchNumberMachine. NumberMachineId. 6. Создать форму DUN_PurchNumberMachine с источником DUN_PurchNumberMachine 7. В таблице InventDim: 7.1 Создать поле DUN _PurchMachineId. В качестве расширенного типа данных для него задать DUN_PurchMachineId 7.2 Добавить поле DUN _PurchMachineId в группы полей Autoreport и InventoryDimensions 7.3 Создать индекс DUN__Mach_Idx по полю DUN_PurchMachineId 7.4 Добавляем поле DUN_PurchMachineId в индекс DimIdx 7.5 Изменяем методы, в которых встречается макрос InventDimDevelop, добавляя строки аналогичные уже присутствующим в них. dim2dimParm() + case (fieldnum(InventDim,DUN_PurchMachineId)) : return fieldnum(InventDimParm, DUN _PurchMachineIdFlag); dimParm2dim() + case (fieldnum(InventDimParm, DUN_PurchMachineIdFlag)) : return fieldnum(InventDim, DUN_PurchMachineId); findDim() + inventDim. DUN_PurchMachineId == _inventDim. DUN_PurchMachineId findOrCreate() + inventDim. DUN_PurchMachineId = _inventDim. DUN_PurchMachineId; formQueryAddDynalink() + case tablenum(DUN_PurchNumberMachine): inventDim_DS.query().dataSourceTable(tablenum(InventDim)).addDynalink( fieldnum(InventDim, DUN_PurchMachineId), args.record(), fieldname2id(args.dataset(), fieldstr(DUN_PurchNumberMachine, NumberMachineId))); inventDim_DS.query().dataSourceTable(tablenum(InventDim)).addSortField(fieldnum(InventDim, DUN_PurchMachineId)); isFieldIdItemDim() + case (fieldnum(InventDim, DUN_PurchMachineId)) : 8. Изменяем таблицу InventDimParm Создаем поле DUN_PurchMachineIdFlag. В качестве расширенного типа данных для него задаем NoYesId Добавляем поле DUN_PurchMachineIdFlag в группы полей Autoreport, View и FixedView 9. Изменяем метод в таблице WMSOrderTrans: initInventDimPick() + if (!_inventDimParmShow. DUN_PurchMachineIdFlag && !_inventDimParmFixed. DUN_PurchMachineIdFlag) _inventDim. DUN_PurchMachineId = ''; 10. В таблице InventSumDeltaDim (Проверки запасов в наличии) добавить поля: String DUN_PurchMachineId DUN_PurchMachineId; Enum DUN_MachineIdFlag_RU NoYesId. 11. В таблице InventSumDeltaDim изменяем методы: initFromInventDim() + this. DUN_PurchMachineId = _inventDim. DUN_PurchMachineId; initFromInventDimParm() + this. DUN_MachineIdFlag_RU = _inventDimParm. DUN_PurchMachineIdFlag; initInventDim() + _inventDim. DUN_PurchMachineId = this. DUN_PurchMachineId; initInventDimParm() + _inventDimParm. DUN_PurchMachineIdFlag = this. DUN_MachineIdFlag_RU; 12. Изменяем методы класса InventDimFixedClass, в которых встречается макрос InventDimDevelop, добавляя строки аналогичные уже присутствующим в них: classDeclaration + #DEFINE. DUN_Mach_IDX(17) initFromInventDimFixed() + inventDimParm. DUN_PurchMachineIdFlag = InventDimFixedClass::dimFixed(inventDimFixed, # DUN_Mach_IDX); inventDimFixed() + if (inventDimParm. DUN_PurchMachineIdFlag) inventDimFixed = InventDimFixedClass::setField(inventDimFixed, # DUN_Mach_IDX); fieldId2Idx() + case fieldnum(InventDim, DUN_PurchMachineId) : return # DUN_Mach_IDX; 13. Изменяем метод класса InventDimCtrl_Frm_QuickQuote: buildQuery() + if (dimParmVisibleGrid. DUN_PurchMachineIdFlag) { queryBuildDsDim.addSortField(fieldnum(InventDim, DUN_PurchMachineId)); sortfield = true; } 14. Изменяем метод класса InventDimTracking: initFromArgs() + case tablenum(DUN_PurchNumberMachine): numberMachine = args.record(); queryBuildRangeItemId.value(queryValue(numberMachine.ItemId)); queryBuildDataSourceDim.addRange(fieldnum(InventDim, DUN_PurchMachineId)).value(queryValue(numberMachine.NumberMachineId)); break; 15. Добавляем методы класса AxInternalBase: public DUN_PurchMachineId parmPurchMachineId(DUN_PurchMachineId _purchMachineId = "") { if (! prmisdefault(_purchMachineId)) { this.setField(fieldnum(InventDim, DUN_PurchMachineId), _purchMachineId); } } public void setInventPurchMachineId() { if (this.isFieldSet(fieldnum(InventDim, DUN_PurchMachineId))) { return; } } return inventDim. DUN__PurchMachineId; 16. Изменяем метод класса InventUpdateOnhand: checkOnhand() + (inventSumDeltaDim. DUN_PurchMachineId == inventDim. DUN_PurchMachineId || inventSumDeltaDim. DUN_MachineIdFlag_RU == NoYes::No) 17. Изменяем макросы: InventDimJoin + (%2. DUN_PurchMachineId == %3. DUN_PurchMachineId || ! %4. DUN_PurchMachineIdFlag) InventDimSelect + (%1. DUN_PurchMachineId == %2. DUN_PurchMachineId || ! %3. DUN_PurchMachineIdFlag) InventDimExistsJoin + (%2. DUN_PurchMachineId == %3. DUN_PurchMachineId || ! %4. DUN_PurchMachineIdFlag) 18. На Grid в формах, где отображаются стандартные складские аналитики требуется добавить поле, связанное с новой аналитикой. 19. Выполнить глобальную компиляцию приложения. Удачи! |
|
|
За это сообщение автора поблагодарили: George Nordic (15), Ace of Database (2), aidsua (1), alex55 (1), shogel (1), player (1), niksen (1). |