![]() |
#1 |
Участник
|
aEremenko: Пакетная обработка в AX 2009
Источник: http://blogs.msdn.com/aeremenk/archi...1/9566049.aspx
============== В отличие от предыдущих версий, пакетная обработка в AX 2009 базируется на сервере, и не требует запуска клиентского приложения AX. Между тем, для обратной совместимости оставлена возможность использовать клиентские пакетные обработчики, основанные на тех же принципах, что и в версиях 3.0 и 4.0. Из-за этого возникает путаница. Для того, чтобы настроить серверный пакетный обработчик, необходимо создать пакетную группу, и задать ее для запуска на сервере. Для самого сервера приложений опция ‘Сервер обработки пакетных заданий’ должна быть включена. ![]() Выбор серверного или клиентского метода запуска регулируется свойством ‘RunOn’ для класса, базирующегося на RunBaseBatch. Если свойство установлено в ‘Server’, используется серверный пакетный обработчик, автоматически запускающий задание для выбранной группы. Рекомендуется использовать этот путь. Если значение ‘RunOn’ установлено в ‘Client’, то для выполнения пакета необходимо запустить клиента AX и периодическую процедуру обработки, как и в предыдущих версиях. Самое интересное начинается при ‘RunOn’, установленном в ‘CalledFrom’. Задание ставится в очередь на обработку в любом случае: при выбранной опции ‘Пакетная обработка’ – как клиентское, в обратном случае – как серверное. В общем, оставлять для такого класса значение ‘CalledFrom’, - значит с большой вероятностью иметь проблемы в будущем. Данная статья подготовлена с помощью Windows Live Writer. Источник: http://blogs.msdn.com/aeremenk/archi...1/9566049.aspx
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору. |
|
|
За это сообщение автора поблагодарили: alex55 (1). |
![]() |
#2 |
Участник
|
![]()
Всем привет! Есть проблема, может кто сталкивался или что подскажет. Суть в следующем.
Настраиваем пакетную обработку на сервере в AX 2009. Руководствуемся сведениями, взятыми с http://blogs.msdn.com/aeremenk/archi...1/9566049.aspx (Пакетная обработка в AX 2009) В отличие от предыдущих версий, пакетная обработка в AX 2009 базируется на сервере, и не требует запуска клиентского приложения AX. Между тем, для обратной совместимости оставлена возможность использовать клиентские пакетные обработчики, основанные на тех же принципах, что и в версиях 3.0 и 4.0. Настраиваем серверный пакетный обработчик, создаем пакетную группу, и задаем ее для запуска на сервере. Для самого сервера приложений включаем опцию ‘Сервер обработки пакетных заданий’. Запускаем разноску журнала типа Проводка из Управление запасами -> Журналы -> Проводки по номенклатуре. В свойствах запускаемого класса InventJournalPost установлено свойство RunOn в CalledFrom. На пункте меню, запускающем этот класс также свойство RunOn установлено в CalledFrom. В параметрах в диалоге разноски журнала на вкладке ‘Пакет’ ставим галочку 'Пакетная обработка', выбираем группу пакетов, которую мы создали ранее для запуска на сервере, указываем время запуска задания в форме, вызываемой на кнопке “Повторение”. Задание отправляется в очередь журнала пакетной обработки, когда наступает время запуска задание начинает обрабатываться, затем обработка прекращается и появляется сообщение об ошибке: Код: Олицетворенный на сервере (RunAs) сеанс попытался вызвать метод, который доступен только на клиенте. (S)\Data Dictionary\Tables\SysDataBaseLog\Methods\createIdent - line 8 (S)\Data Dictionary\Tables\SysDataBaseLog\Methods\insert - line 22 (S)\Classes\Application\logUpdate - line 29 (S)\Classes\xRecord\update (S)\Classes\JournalCheckPost\updateJournalTablePosted - line 7 (S)\Classes\JournalCheckPost\runPostEnd - line 6 (S)\Classes\JournalCheckPostLedger\runPostEnd - line 7 (S)\Classes\JournalCheckPost\run - line 29 (S)\Classes\InventJournalCheckPost_Movement\run - line 9 (S)\Classes\BatchRun\runJobStatic - line 62 i = winAPI::getTickCount(); В описании метода getTickCount находим что этот метод клиентский: X++: client static int getTickCount() { int ticks; ; ticks = System.Environment::get_TickCount(); return ticks; } на которых настроено ведение журнала базы данных. Может есть какие-то мысли как решить эту проблему? Microsoft Dinamix AX 2009 SP1. Kernel version 5.0.1000.52. Последний раз редактировалось Mikky; 13.04.2010 в 17:01. |
|
![]() |
#3 |
Участник
|
Аксапта некастомизированная? Не могу найти вызов \Data Dictionary\Tables\SysDataBaseLog\Methods\createIdent
Вообще, есть \Classes\WinAPIServer\getTickCount |
|
![]() |
#4 |
Участник
|
Сенькс, проблема решена.
Код действительно был самописный. Думал штатный, упустил это. Поправил. Завтра попробую оттестить пакетчик. |
|
![]() |
#5 |
Участник
|
Цитата:
Пробуй с выключенным маркером - не выполняется. Из своих наблюдений: Только при включенном параметре "Сервер обработки пакетных заданий" у задания поменяется статус с "ожидания" на выполнение, обработав такое задание, периодическая процедура обработки "проставит" в поле "прогресс" значение 100 и дальше пакетный сервер поменяет статус задание на "выполнено". Последний раз редактировалось propeller; 28.09.2010 в 17:21. |
|
Теги |
ax2009, runbase, runbasebatch, пакетная обработка |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|