![]() |
#10 |
Участник
|
![]()
Реанимирую немного давно забытую тему.
Цитата:
Сообщение от Peter Savintsev
![]() Кстати, удаляются записи из InventJournalReportParms_RU очень просто. Достаточно в форме название складских журналов нажать кнопочку "Обновить". По идее это надо делать один единственный раз при настройки системы. Но уже в ходе эксплуатации можно нечаянно нажать на эту кнопку и все - никаких отчетов (требований-накладных, актов на списание и т.д.) по складским журналам.
То что при этом удаляются ранее выбранные отчеты для наименований журналов - пожалуй что можно отнести к багам (недоработке) этого куска функционала. Не совсем понятно почему ситуация не меняется от версии к версии: аналогичное поведение наблюдается и в AX 4.0 SP2, на днях посмотрел локализованный код AX2009 - при беглом просмотре метод InventJournalReportTypes_RU::initTable() не изменился (визуально). Цитата:
X++: public void updateControls() { ... while select ReportType, Description from reportTypesTable where reportTypesTable.JournalType == inventJournalName.JournalType { select firstonly RecId from inventReportParms where inventReportParms.ReportType == reportTypesTable.ReportType && inventReportParms.InventJournalNameId == inventJournalName.JournalNameId; if (inventReportParms.RecId) { //BP deviation documented selectedItemsCtrl.addItem(new FormListItem(reportTypesTable.Description, 0, inventReportParms.ReportType)); } else { //BP deviation documented availableItemsCtrl.addItem(new FormListItem(reportTypesTable.Description, 0, reportTypesTable.ReportType)); } } ... } Понятно что описанная ситуация имеет несколько искусственный характер, но все же. Для целостности картины в методе InventJournalReportTypes_RU::initTable() необходимо все-таки удалять записи из таблицы InventJournalReportParms_RU, но не столь 'сурово' как в штатном функционале: X++: delete_from reportsTable; X++: public server static void initTable() { DictEnum journalTypeEnum = new DictEnum(enumnum(InventJournalType)); DictEnum reportTypeEnum = new DictEnum(enumnum(InventJournalReportType_RU)); int idx, jdx; InventJournalType journalType; InventJournalReportType_RU reportType; InventJournalReport_RU report; InventJournalReportTypes_RU reportTypesTable; InventJournalReportParms_RU reportsTable; // --> in.dc InventJournalName inventJournalName ; // <-- in.dc ; delete_from reportTypesTable; // --> in.dc // delete_from reportsTable; // <-- in.dc for(idx = 0; idx < reportTypeEnum.values(); idx++) { reportType = reportTypeEnum.index2Value(idx); report = InventJournalReport_RU::construct(reportType); for(jdx = 0; jdx < journalTypeEnum.values(); jdx++) { journalType = journalTypeEnum.index2Value(jdx); if (report.isJournalTypeSupported(journalType)) { reportTypesTable.clear(); reportTypesTable.JournalType = journalType; reportTypesTable.ReportType = reportType; reportTypesTable.Description = report.description(); reportTypesTable.insert(); } } } // --> in.dc delete_from reportsTable notexists join reportTypesTable where reportTypesTable.ReportType == reportsTable.ReportType join inventJournalName where inventJournalName.JournalNameId == reportsTable.InventJournalNameId && inventJournalName.JournalType == reportTypesTable.journalType ; // <-- in.dc }
__________________
Dynamics AX 4.0 SP2 |
|
|
За это сообщение автора поблагодарили: Kabardian (3). |