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