AXForum  
Go Back   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Forgotten Your Password?
Register Forum Rules FAQ Members List Today's Posts Search Mark Forums Read

 
 
Thread Tools Search this Thread Display Modes
Old 15.12.2005, 18:16   #1  
Hans is offline
Hans
Участник
Hans's Avatar
 
108 / 22 (1) +++
Join Date: 20.10.2005
Вопрос по поводу "Модификации были отменены". Что можно сделать?
Выдает сообщение при обработки заказа - накладная - "Модификации были отменены." и прекращает работу. Если это место закомментировать программа дальше тоже выдает ошибку, нужна складская аналитика, потом тоже выдает ошибку, так как не может разнести по проводкам.
А нельзя ли сделать так чтобы выдал сразу все ошибки, а то после throw ничего больше не делает. Спасибо!
Old 15.12.2005, 19:12   #2  
twilight is offline
twilight
MCTS
MCBMSS
 
890 / 241 (10) ++++++
Join Date: 17.10.2004
Location: Королёв
Quote:
Originally Posted by Hans
Выдает сообщение при обработки заказа - накладная - "Модификации были отменены." и прекращает работу. Если это место закомментировать программа дальше тоже выдает ошибку, нужна складская аналитика, потом тоже выдает ошибку, так как не может разнести по проводкам.
А нельзя ли сделать так чтобы выдал сразу все ошибки, а то после throw ничего больше не делает. Спасибо!
А не проще ввести заказ правильно?
Я как-то не понимаю в чем смысл комментировать ошибки
Old 16.12.2005, 09:40   #3  
Hans is offline
Hans
Участник
Hans's Avatar
 
108 / 22 (1) +++
Join Date: 20.10.2005
:) А что делает команда throw?
А тогда можно узнать что делает эта команда?
Old 16.12.2005, 10:11   #4  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Join Date: 27.03.2002
Location: Москва
В Руководстве Разработчика поищите по этому слову, там все подробненько написано.
__________________
Андрей.
Old 16.12.2005, 10:39   #5  
DreamCreator is offline
DreamCreator
Moderator
DreamCreator's Avatar
Axapta Retail User
 
553 / 45 (3) +++
Join Date: 04.11.2004
Location: Казань
Quote:
Originally Posted by Hans
А тогда можно узнать что делает эта команда?
Пример использования:
PHP Code:
static void testThrow(Args _args)
{
    ;
    try
    {
        throw(
'Генерация исключительной ситуации');
    }
    catch(
Exception::Info)
    {
        
checkFailed('Возникла исключительная ситуация:');
        Global::
callStack2infolog();
    }

Old 16.12.2005, 10:39   #6  
Hidden is offline
Hidden
Участник
 
199 / 15 (1) ++
Join Date: 25.03.2004
Location: Moscow
Задам свой первый вопрос с картинкой.
Вопрос: Как сделать так чтобы при разноске накладной выдавались сразу все ошибки по строкам, а не по одной? Это создает затруднения для пользователя, потому что ему приходится делать много раз разноску накладной для исправления всех ошибок по строкам заказа. Можно ли все таки так сделать?
Attached Images
 
Old 16.12.2005, 11:39   #7  
MironovI is offline
MironovI
Участник
 
724 / 77 (4) ++++
Join Date: 30.05.2005
В складских журналах есть механзм проверки, для заказов писать придется по-моему..
Old 16.12.2005, 11:48   #8  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Join Date: 27.03.2002
Location: Москва
2Hidden:
Судя по вашему сообщению, Hidden и Hans - это одно лицо. Пункт 4.10 правил еще никто не отменял. Разберитесь с вашими никами, пожалуйста, не вводите людей в заблуждение.
__________________
Андрей.
Old 16.12.2005, 11:53   #9  
DreamCreator is offline
DreamCreator
Moderator
DreamCreator's Avatar
Axapta Retail User
 
553 / 45 (3) +++
Join Date: 04.11.2004
Location: Казань
Quote:
Originally Posted by Hidden
Вопрос: Как сделать так чтобы при разноске накладной выдавались сразу все ошибки по строкам, а не по одной?
Один из классов участвующих в проверке, можно поставить точку останова и смотреть стек вызовов, во всяком случае с него можно начать

\Classes\LedgerVoucherTransObject\check
Old 16.12.2005, 12:43   #10  
Hidden is offline
Hidden
Участник
 
199 / 15 (1) ++
Join Date: 25.03.2004
Location: Moscow
Quote:
Originally Posted by Dron AKA andy
2Hidden:
Судя по вашему сообщению, Hidden и Hans - это одно лицо. Пункт 4.10 правил еще никто не отменял. Разберитесь с вашими никами, пожалуйста, не вводите людей в заблуждение.
Это Программист у нас в отделе не мог картинку со своего компьютера вставить в сообщение(что то с настройками Эксплорера), я ему с моего компьютера предложил отправить сообщение, только Ник он не сменил поэтому получилось как будто я отправил сообщение. Извиняюсь.
Old 16.12.2005, 12:48   #11  
Hans is offline
Hans
Участник
Hans's Avatar
 
108 / 22 (1) +++
Join Date: 20.10.2005
По поводу ника, совершенно справедливо, есть проблемы в отправлении сообщенний на моем компьютере. Сейчас проверю \Classes\LedgerVoucherTransObject\check.
Old 16.12.2005, 12:57   #12  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Join Date: 27.03.2002
Location: Москва
2Hidden&Hans:

ОК, спасибо.
__________________
Андрей.
Old 16.12.2005, 13:15   #13  
Hans is offline
Hans
Участник
Hans's Avatar
 
108 / 22 (1) +++
Join Date: 20.10.2005
Quote:
Originally Posted by DreamCreator
Один из классов участвующих в проверке, можно поставить точку останова и смотреть стек вызовов, во всяком случае с него можно начать

\Classes\LedgerVoucherTransObject\check
У мне туда дебагер даже не попал, точка останова приводит к \Classes\InventOnhand\CheckItemDraw -
return checkFailed(strFmt("@SYS2176", _inventQty,this.availPhysical()));
\Classes\InventUpdate_Physical\updatePhysicalIssue - throw error("@SYS18447").
Old 16.12.2005, 13:27   #14  
DreamCreator is offline
DreamCreator
Moderator
DreamCreator's Avatar
Axapta Retail User
 
553 / 45 (3) +++
Join Date: 04.11.2004
Location: Казань
Возникло две мысли

1. Причина того что мы видим одну ошибку -- после генерации исключительной ситуации оператором throw за ним ничего выполняется. Можно заменить все участвующие в обработке накладной операторы throw на что-нибудь менее жесткое. Чревато непредсказуемыми последствиями и трудоемко.

2. Чтобы логика алгоритма продолжалось после throw, однажды я использовал вложенные try..catch -- помогло.
Old 16.12.2005, 14:01   #15  
Hans is offline
Hans
Участник
Hans's Avatar
 
108 / 22 (1) +++
Join Date: 20.10.2005
:)
Quote:
Originally Posted by DreamCreator
Возникло две мысли

1. Причина того что мы видим одну ошибку -- после генерации исключительной ситуации оператором throw за ним ничего выполняется. Можно заменить все участвующие в обработке накладной операторы throw на что-нибудь менее жесткое. Чревато непредсказуемыми последствиями и трудоемко.

2. Чтобы логика алгоритма продолжалось после throw, однажды я использовал вложенные try..catch -- помогло.
первый метод работает, если заменить throw на что-нить вроде checkFailed(), можно ли поступать таким образом. Пострадает ли от этого функционал?
Old 16.12.2005, 14:09   #16  
DreamCreator is offline
DreamCreator
Moderator
DreamCreator's Avatar
Axapta Retail User
 
553 / 45 (3) +++
Join Date: 04.11.2004
Location: Казань
Quote:
Originally Posted by Hans
первый метод работает, если заменить throw на что-нить вроде checkFailed(), можно ли поступать таким образом. Пострадает ли от этого функционал?
Да, пострадает. Потому как checkFailed это аналог info (поправьте если не так), отличие только в иконке, таким образом несмотря на ошибку алгоритм не прервется как задумывалось ранее, а продолжится. И нет никакой гарантии что продолжится верно (ошибка ведь была -- допустим что-то не инициализировалось). Поэтому и трудоемко будет все переделывать.
Old 16.12.2005, 14:14   #17  
DreamCreator is offline
DreamCreator
Moderator
DreamCreator's Avatar
Axapta Retail User
 
553 / 45 (3) +++
Join Date: 04.11.2004
Location: Казань
Можно написать свой отдельный класс в котором будут реалзованы все проверки с корректным сообщением. Вызывать до основной проверки. Но выйдет что проверка будет дважды -- это плата за нетронутый основной функционал.
Old 16.12.2005, 14:16   #18  
Hans is offline
Hans
Участник
Hans's Avatar
 
108 / 22 (1) +++
Join Date: 20.10.2005
Quote:
Originally Posted by DreamCreator
Да, пострадает. Потому как checkFailed это аналог info (поправьте если не так), отличие только в иконке, таким образом несмотря на ошибку алгоритм не прервется как задумывалось ранее, а продолжится. И нет никакой гарантии что продолжится верно (ошибка ведь была -- допустим что-то не инициализировалось). Поэтому и трудоемко будет все переделывать.
Вот это меня и интересует, мы не можем заменить throw, так как не знаем какая ошибка будет последней, я дошел до 6 ошибок в разных методах таблиц и классов, и когда необходимо будет делать прерывание чтобы накладная не оприходовалась. Дальше я вряд ли смогу что-нибудь придумать (уровень не позволяет), наверное лучше оставить стандартный функционал. Спасибо!
Old 20.12.2005, 12:58   #19  
Migel_84 is offline
Migel_84
Участник
 
45 / 12 (1) ++
Join Date: 07.10.2005
Location: Череповец
Quote:
Originally Posted by DreamCreator
Потому как checkFailed это аналог info (поправьте если не так)
Не так. info просто выводит сообщение, а checkfailed можно возвращать вместо супер, например
if (условие)
ret = checkfailed(какая-то ошибка);
else
ret = super();
return ret;

поправьте если не так
Old 20.12.2005, 13:01   #20  
Migel_84 is offline
Migel_84
Участник
 
45 / 12 (1) ++
Join Date: 07.10.2005
Location: Череповец
Quote:
Originally Posted by Hans
Вот это меня и интересует, мы не можем заменить throw, так как не знаем какая ошибка будет последней, я дошел до 6 ошибок в разных методах таблиц и классов, и когда необходимо будет делать прерывание чтобы накладная не оприходовалась. Дальше я вряд ли смогу что-нибудь придумать (уровень не позволяет), наверное лучше оставить стандартный функционал. Спасибо!
А как насчёт использовать логическую переменную? Убрать throw и, если хоть одна ошибка будет присвоить переменной true, а при оприходовании проверять, если переменная равна true, то не оприходовать
 

Similar Threads
Thread Thread Starter Forum Replies Last Post
Слетают SecurityKey. Что можно сделать? chanchala DAX: Программирование 9 16.02.2009 17:14
ALEG: Можно ли из "клиентского" решения сделать "тиражное" Blog bot DAX Blogs 0 16.11.2006 23:40
Можно ли в Аксапте делать "горячие клавиши"? Garic DAX: Программирование 12 25.01.2006 19:51
Можно ли такое сделать в Axapta ML DAX: Программирование 11 12.05.2005 11:46
Еще по поводу QueryBuildRange() RVS DAX: Программирование 4 10.07.2003 12:57
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Рейтинг@Mail.ru
All times are GMT +3. The time now is 02:53.
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Contacts E-mail, Advertising.