01.02.2014, 18:55 | #1 |
Administrator
|
AX2012: Новый формат заказа на покупку
Пытаюсь добавить ещё один формат отчёта для подтверждения заказа на покупку. Делаю всё так, как написано здесь http://blogs.msdn.com/b/axsupport/ar...firmation.aspx
Всё работает нормально, новый формат выбирается при разноске. Но когда я перепечатываю оригинал или копию уже разнесённого подтверждения через Закупки и источники/Запросы/Журналы/Подтверждения заказов на покупку, всё равно выбирается системный формат. Настройка в управлении печатью, в которой мой новый формат выбран в качестве формата по умолчанию, при этом игнорируется. Нашёл, что выбор формата отчёта происходит в FormLetterReport.loadPrintSettings(). Если в форме Подтверждения заказов на покупку выбрать Просмотр копии или Просмотр оригинала, то загружаются системные настройки print management (что логично) и в их числе название формата (что уже не так логично). Если же печатать отчёт через Использование управления печатью, то формат отчёта выбирается правильно из настроек управления печатью, но при этом могут выбраться и другие настройки - например, назначения отчёта или колонтитул - которые не всегда нужны. Вопросы теперь у меня такие. Правильно ли, что при печати копии или оригинала всегда выбирается системный формат? Если у меня есть два формата заказа на покупку - один для закупок внутри страны, а другой для импорта - как мне быть в таком случае? Запрещать пользователям нажимать на кнопки Просмотр копии и Просмотр оригинала?
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
|
За это сообщение автора поблагодарили: mazzy (2). |
12.03.2014, 16:40 | #2 |
Administrator
|
Жаль, что никто не ответил. Хотелось получить альтернативный взгляд на проблему
Пока решил так: в методе FormLetterReport.loadPrintSettings() исправил строчку во вложенном методе setSettingDetail(): X++: void setSettingDetail(PrintMgmtDocInstanceType _type, SRSPrintDestinationSettings _defaultSettings) { ...... if (SysCountryRegionCode::isLegalEntityInCountryRegion([#isoRU])) { ...... } else { // </GEERU> /* printSettingDetail.parmReportFormatName(PrintMgmtReportFormat::findSystem(this.getPrintMgmtDocumentType()).Name); */ printSettingDetail.parmReportFormatName(getReportFormatName(_type)); // <GEERU> } ...... } X++: PrintMgmtReportFormatName getReportFormatName(PrintMgmtDocInstanceType _type) { PrintMgmtPrintContext printContext = new PrintMgmtPrintContext(); container printSettingPacked; PrintMgmtPrintSetting printSetting; int detailPosition; printContext.parmDefaultOriginalPrintJobSettings(printMgmtReportRun.parmDefaultOriginalPrintJobSettings()); printContext.parmDefaultCopyPrintJobSettings(printMgmtReportRun.parmDefaultCopyPrintJobSettings()); printContext.parmLanguageId(_languageId); printContext.parmQueryTableBuffer(_jourTable); printContext.parmForcePrintJobSettings(printMgmtReportRun.parmForcePrintJobSettings()); printContext.setHierarchyContext(printMgmtReportRun.parmHierarchyType(), printMgmtReportRun.parmNodeType(), printMgmtReportRun.parmDocType(), _transTable); // if code running on client, then make a server call to reduce RPC if(isRunningOnServer()) { printSetting = PrintMgmt::getSettings(printContext); } else { printSettingPacked = PrintMgmt::getSettings_Server(printContext.pack()); printSetting = new PrintMgmtPrintSetting(); printSetting.unpack(printSettingPacked); } for (detailPosition = 1; detailPosition <= printSetting.numDetails(); detailPosition++) { if (printSetting.getDetailByPos(detailPosition).parmType() == _type) { return printSetting.getDetailByPos(detailPosition).parmReportFormatName(); } } return PrintMgmtReportFormat::findSystem(this.getPrintMgmtDocumentType()).Name; }
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
|
За это сообщение автора поблагодарили: Avalon (1). |
Теги |
ax2012 |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|