15.12.2005, 18:16 | #1 |
Участник
|
Вопрос по поводу "Модификации были отменены". Что можно сделать?
Выдает сообщение при обработки заказа - накладная - "Модификации были отменены." и прекращает работу. Если это место закомментировать программа дальше тоже выдает ошибку, нужна складская аналитика, потом тоже выдает ошибку, так как не может разнести по проводкам.
А нельзя ли сделать так чтобы выдал сразу все ошибки, а то после throw ничего больше не делает. Спасибо! |
|
15.12.2005, 19:12 | #2 |
MCTS
|
Цитата:
Сообщение от Hans
Выдает сообщение при обработки заказа - накладная - "Модификации были отменены." и прекращает работу. Если это место закомментировать программа дальше тоже выдает ошибку, нужна складская аналитика, потом тоже выдает ошибку, так как не может разнести по проводкам.
А нельзя ли сделать так чтобы выдал сразу все ошибки, а то после throw ничего больше не делает. Спасибо! Я как-то не понимаю в чем смысл комментировать ошибки |
|
16.12.2005, 09:40 | #3 |
Участник
|
А что делает команда throw?
А тогда можно узнать что делает эта команда?
|
|
16.12.2005, 10:11 | #4 |
Moderator
|
В Руководстве Разработчика поищите по этому слову, там все подробненько написано.
__________________
Андрей. |
|
16.12.2005, 10:39 | #5 |
Moderator
|
Цитата:
Сообщение от Hans
А тогда можно узнать что делает эта команда?
PHP код:
|
|
16.12.2005, 10:39 | #6 |
Участник
|
Задам свой первый вопрос с картинкой.
Вопрос: Как сделать так чтобы при разноске накладной выдавались сразу все ошибки по строкам, а не по одной? Это создает затруднения для пользователя, потому что ему приходится делать много раз разноску накладной для исправления всех ошибок по строкам заказа. Можно ли все таки так сделать? |
|
16.12.2005, 11:39 | #7 |
Участник
|
В складских журналах есть механзм проверки, для заказов писать придется по-моему..
|
|
16.12.2005, 11:48 | #8 |
Moderator
|
2Hidden:
Судя по вашему сообщению, Hidden и Hans - это одно лицо. Пункт 4.10 правил еще никто не отменял. Разберитесь с вашими никами, пожалуйста, не вводите людей в заблуждение.
__________________
Андрей. |
|
16.12.2005, 11:53 | #9 |
Moderator
|
Цитата:
Сообщение от Hidden
Вопрос: Как сделать так чтобы при разноске накладной выдавались сразу все ошибки по строкам, а не по одной?
\Classes\LedgerVoucherTransObject\check |
|
16.12.2005, 12:43 | #10 |
Участник
|
Цитата:
Сообщение от Dron AKA andy
2Hidden:
Судя по вашему сообщению, Hidden и Hans - это одно лицо. Пункт 4.10 правил еще никто не отменял. Разберитесь с вашими никами, пожалуйста, не вводите людей в заблуждение. |
|
16.12.2005, 12:48 | #11 |
Участник
|
По поводу ника, совершенно справедливо, есть проблемы в отправлении сообщенний на моем компьютере. Сейчас проверю \Classes\LedgerVoucherTransObject\check.
|
|
16.12.2005, 12:57 | #12 |
Moderator
|
2Hidden&Hans:
ОК, спасибо.
__________________
Андрей. |
|
16.12.2005, 13:15 | #13 |
Участник
|
Цитата:
Сообщение от DreamCreator
Один из классов участвующих в проверке, можно поставить точку останова и смотреть стек вызовов, во всяком случае с него можно начать
\Classes\LedgerVoucherTransObject\check return checkFailed(strFmt("@SYS2176", _inventQty,this.availPhysical())); \Classes\InventUpdate_Physical\updatePhysicalIssue - throw error("@SYS18447"). |
|
16.12.2005, 13:27 | #14 |
Moderator
|
Возникло две мысли
1. Причина того что мы видим одну ошибку -- после генерации исключительной ситуации оператором throw за ним ничего выполняется. Можно заменить все участвующие в обработке накладной операторы throw на что-нибудь менее жесткое. Чревато непредсказуемыми последствиями и трудоемко. 2. Чтобы логика алгоритма продолжалось после throw, однажды я использовал вложенные try..catch -- помогло. |
|
16.12.2005, 14:01 | #15 |
Участник
|
Цитата:
Сообщение от DreamCreator
Возникло две мысли
1. Причина того что мы видим одну ошибку -- после генерации исключительной ситуации оператором throw за ним ничего выполняется. Можно заменить все участвующие в обработке накладной операторы throw на что-нибудь менее жесткое. Чревато непредсказуемыми последствиями и трудоемко. 2. Чтобы логика алгоритма продолжалось после throw, однажды я использовал вложенные try..catch -- помогло. |
|
16.12.2005, 14:09 | #16 |
Moderator
|
Цитата:
Сообщение от Hans
первый метод работает, если заменить throw на что-нить вроде checkFailed(), можно ли поступать таким образом. Пострадает ли от этого функционал?
|
|
16.12.2005, 14:14 | #17 |
Moderator
|
Можно написать свой отдельный класс в котором будут реалзованы все проверки с корректным сообщением. Вызывать до основной проверки. Но выйдет что проверка будет дважды -- это плата за нетронутый основной функционал.
|
|
16.12.2005, 14:16 | #18 |
Участник
|
Цитата:
Сообщение от DreamCreator
Да, пострадает. Потому как checkFailed это аналог info (поправьте если не так), отличие только в иконке, таким образом несмотря на ошибку алгоритм не прервется как задумывалось ранее, а продолжится. И нет никакой гарантии что продолжится верно (ошибка ведь была -- допустим что-то не инициализировалось). Поэтому и трудоемко будет все переделывать.
|
|
20.12.2005, 12:58 | #19 |
Участник
|
Цитата:
Сообщение от DreamCreator
Потому как checkFailed это аналог info (поправьте если не так)
if (условие) ret = checkfailed(какая-то ошибка); else ret = super(); return ret; поправьте если не так |
|
20.12.2005, 13:01 | #20 |
Участник
|
Цитата:
Сообщение от Hans
Вот это меня и интересует, мы не можем заменить throw, так как не знаем какая ошибка будет последней, я дошел до 6 ошибок в разных методах таблиц и классов, и когда необходимо будет делать прерывание чтобы накладная не оприходовалась. Дальше я вряд ли смогу что-нибудь придумать (уровень не позволяет), наверное лучше оставить стандартный функционал. Спасибо!
|
|