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