AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

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

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

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

ОК, спасибо.
__________________
Андрей.
Старый 16.12.2005, 13:15   #13  
Hans is offline
Hans
Участник
Аватар для Hans
 
108 / 22 (1) +++
Регистрация: 20.10.2005
Цитата:
Сообщение от DreamCreator
Один из классов участвующих в проверке, можно поставить точку останова и смотреть стек вызовов, во всяком случае с него можно начать

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

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

2. Чтобы логика алгоритма продолжалось после throw, однажды я использовал вложенные try..catch -- помогло.
Старый 16.12.2005, 14:01   #15  
Hans is offline
Hans
Участник
Аватар для Hans
 
108 / 22 (1) +++
Регистрация: 20.10.2005
:)
Цитата:
Сообщение от DreamCreator
Возникло две мысли

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

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

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

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Слетают 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

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 00:21.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.