|
07.06.2008, 13:18 | #1 |
Участник
|
Добавление новой складской аналитики, axapta 4.
Каким образом делаете добавление/создание новой складской аналитики в версии axapta 4? (так чтоб наравне с Серийный номер, ГТД и др. везде появлялаяь эта новая складская аналитика)
|
|
07.06.2008, 14:17 | #2 |
Аманд
|
Скажите, а зачем вам новая аналитика?
Какая у вас идея и для чего вы будете её использовать? |
|
07.06.2008, 17:07 | #3 |
Участник
|
|
|
07.06.2008, 15:58 | #4 |
Участник
|
Так же как и в 3.0. Поищите соответствующие темки.
Ищите в коде куски с макросом #inventDimDevelop Или для надежности можно взять аналитику по аналогии с которой хотите делать свою (не все аналитики одинаковы) и поискать объекты, в которых она используется (в 3.0 #inventDimDevelop кое где был не прописан) Сразу приготовьтесь, что будет очень много рутинной работы |
|
07.06.2008, 17:07 | #5 |
Member
|
Цитата:
Сообщение от malex
...очень много рутинной работы...
__________________
С уважением, glibs® |
|
07.06.2008, 17:11 | #6 |
Участник
|
Цитата:
Сообщение от malex
Так же как и в 3.0. Поищите соответствующие темки.
Ищите в коде куски с макросом #inventDimDevelop Или для надежности можно взять аналитику по аналогии с которой хотите делать свою (не все аналитики одинаковы) и поискать объекты, в которых она используется (в 3.0 #inventDimDevelop кое где был не прописан) Сразу приготовьтесь, что будет очень много рутинной работы В общем, что-то удалось слелать, проводки с новой аналитикой проводятся. Но, к сожалению, не все формы позволяют отражать новую аналитику... и рутина уже в процессе. |
|
07.06.2008, 17:27 | #7 |
Программатор
|
Новая складская аналитика
Поиск рулит |
|
07.06.2008, 21:04 | #8 |
Аманд
|
Цитата:
Ммм... а зачем нужны аналитики?
Цитата:
Тем более что УУ не я придумываю
|
|
07.06.2008, 23:49 | #9 |
Administrator
|
Цитата:
Вот про добавление номенклатурных аналитик - еще имеет смысл спрашивать - т.к. при детальном обсуждении - необходимость добавления номенклатурной аналитики может свестись к необходимости добавления аналитики хранения. Да и спрашивать этот вопрос нужно у человека, который принял решение добавить аналитику, а им не всегда является конечный разработчик. Далеко не каждый разработчик (это зависит не только от него - а еще и от многих других людей) знает (может знать) зачем это надо. А если и знает - то может и не знать - откуда растут ноги - и почему нельзя обойтись альтернативным способом. Конечно - если человек знает - он ответит. А добавляют аналитики - по различным причинам. Например, на складе временного (ответственного) хранения (СВХ/СОХ) могут учитывать товар по машинам (или по клиентам). Соответственно - номер машины (или код клиента) может быть аналитикой хранения. В другом случае - товар могут учитывать по упаковкам. Т.е. интересно получить информацию - сколько упаковок по 24шт, сколько упаковок по 20 шт. и т.д. каждого товара. Не знаю - мне кажется - уж что-то что - а аналитики - такая вещь - которую в первую очередь нужно добавлять, если есть необходимость (безусловно, зная меру и понимая, что увеличение кол-ва аналитик - по определению просаживает производительность). Можно в чем-то другом себе отказать...
__________________
Возможно сделать все. Вопрос времени Последний раз редактировалось sukhanchik; 07.06.2008 в 23:51. |
|
|
За это сообщение автора поблагодарили: aidsua (1). |
08.06.2008, 12:44 | #10 |
Аманд
|
Цитата:
Соответственно - номер машины (или код клиента) может быть аналитикой хранения.
Код клиента - интересная штука получается: ввели клиента в справочник клиентов (или в деловые отношения), а затем ещё и в аналитику - это двойной ввод? Исходя из текущих настроек аналитики, вам придётся сделать её вторичной, а то ещё пропуски по расходам/приходам добавить. Что тогда получится? Может код клиента попробуем как-то иначе проследить? Цитата:
Не знаю - мне кажется - уж что-то что - а аналитики - такая вещь - которую в первую очередь нужно добавлять, если есть необходимость
Цитата:
Да и спрашивать этот вопрос нужно у человека, который принял решение добавить аналитику, а им не всегда является конечный разработчик. Далеко не каждый разработчик (это зависит не только от него - а еще и от многих других людей) знает (может знать) зачем это надо
1. Для чего делается такая доработка? 2. Есть ли альтернативные варианты 3. Предложить самому альтернативный вариант. (в письменной форме) Но ведь часто так сложно взять на себя ответственность, правда? Проще сказать - аналитики придумали. Я прошу не принимать это на личный счёт. Это общая, часто встречающаяся ситуация. Кстати, по конкретному случаю: если разработчик не знает, в каких целях и почему добавляется аналитика, значит это не прописано в ТЗ. Если не прописано, то не рассмотрены настройки этой аналитики, её использование в системе. А значит и реализация БП, и модификация "сырая". В данном случае я выразил своё мнение. Одни с ним не согласятся и будут правы, другие вынесут полезное для себя, и тоже будут правы Последний раз редактировалось Vals; 08.06.2008 в 13:27. Причина: Буквы поправил :) очепятка |
|
|
За это сообщение автора поблагодарили: mazzy (2), glibs (2). |
08.06.2008, 13:16 | #11 |
Участник
|
Цитата:
Сообщение от Vals
Это общая, часто встречающаяся ситуация.
Кстати, по конкретному случаю: если разработчик не знает, в каких целях и почему добавляется аналитика, значит это не прописано в ТЗ. Если не прописано, то не рассмотрены анастройки этой налитики, её использование в системе. А значит и реализация БП, и модификация "сырая". |
|
08.06.2008, 13:25 | #12 |
Member
|
Цитата:
Сообщение от Vals
...
Именно - необходимость, осознанная необходимость, большими буквами. Со знанием того, где это может вылезти, со всеми взаимосвязями, с тестированием, с поиском альтернативных решений. Кстати, альтернатива в большинстве случаев есть. ...
__________________
С уважением, glibs® |
|
09.06.2008, 11:18 | #13 |
Участник
|
Цитата:
И скорее всего здесь имется ввиду не VIN, а определенная машина с товаром (поставка). Т.е. если приедет через месяц машина с тем же самым VIN, но с новым товаром, то можно предположить, что это будет уже новая "машина"... Цитата:
Сообщение от Vals
Код клиента - интересная штука получается: ввели клиента в справочник клиентов (или в деловые отношения), а затем ещё и в аналитику - это двойной ввод? Исходя из текущих настроек аналитики, вам придётся сделать её вторичной, а то ещё пропуски по расходам/приходам добавить. Что тогда получится? Может код клиента попробуем как-то иначе проследить?
Можно конечно предложить альтернативы в виде нескольких компаний в Axapta или нескольких складов в рамках одной компании, но решение с добавлением новой складской аналитики зачастую оказывается предпочтительнее. Двойной ввод обычно здесь не так критичен, но при желании можно реализовать автогенерацию значений этой складской аналитики при оформлении поступления товара... |
|
08.06.2008, 13:28 | #14 |
Аманд
|
Цитата:
Это точно.
Цитата:
Поддерживаю.
|
|
09.06.2008, 11:31 | #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). |
09.06.2008, 11:58 | #16 |
Аманд
|
А расскажите, как у вас организованы процессы:
1. Перегрузка с машины на машину (перенос?) 2. Расчёт загрузки машины 3. Что происходит с аналитокой во время приходования и отгрузки клиенту? 4. Резервирование в пути В общем, было бы неплохо, если бы вы в целях обмена опытом описали "жизнь" этой аналитики. Спасибо! |
|
21.08.2008, 17:16 | #17 |
Участник
|
А сколько по времени примерно займёт, добавление одной аналитики?
__________________
PS. Сложно приехать в Москву, но ещё сложнее уехать отсюда. |
|
21.08.2008, 17:21 | #18 |
Member
|
В седьмом посте ссылка. Там написано.
__________________
С уважением, glibs® |
|
21.08.2008, 18:10 | #19 |
Moderator
|
Я бы еще добавил 20ый пункт:
20. В случае использования Oracle, выполнить процедуру SQLOracleInitStoredProc::initOracleSPIMTS. Теоретически она же должна вызываться при глобальной синхронизации (когда не одна таблица, а весь словарь синхронизируется), но я бы не стал рисковать и вызвал бы ручками. |
|
|
За это сообщение автора поблагодарили: aidsua (1). |
12.01.2011, 13:44 | #20 |
Участник
|
Ссылка в дополнение к теме
http://sumitsaxfactor.wordpress.com/...nsion-storage/ |
|