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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 02.09.2011, 10:20   #1  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от gl00mie Посмотреть сообщение
пару специализированных классов для проверки наиболее часто встречающихся условий и утверждений
В этом и беда универсальных методов - часто встречающиеся они обрабатывают... А вот с отсальными приходится мучаться.

Цитата:
Сообщение от gl00mie Посмотреть сообщение
С ним идея была в том, чтобы в сообщениях на запись практически любой таблицы можно было ссылаться с помощью одного placeholder'а (%1), но чтобы описание при этом получалось необходимым и достаточным для идентификации записи, о которой идет речь: если это SalesTable, то чтобы был указан SalesId, если CustTable/VendTable - чтобы там был AccountNum, если CustTrans/VendTrans - чтобы обязательно были Voucher и TransDate и т.п., ну и чтобы везде был RecId, как в отладчике.
мне кажется, что вместо такой хотелки стоит рассмотреть следующий стандартный подход.
  1. ВСЕГДА надо писать setprefix("информация о том, что обрабатываем в данный момент - информация об источнике")
  2. сообщения об ошибках должны содержать только информацию об ошибке, но не должны содержать информацию об источнике ошибки
  3. (опционально) вместо вывода recid всегда юзать SysInfoAction

при таком подходе информация об источнике возникновения выводится там, где она реально имеется. при таком подходе эту информацию не нужно спускать на нижние уровни.

если юзать SysInfoAction то пользователю не нужно будет перевбивать в поиск recId - достаточно просто нажать на кнопку в инфологе.

беда в том, что люди не юзают даже стандартные подходы. Даже в Майкрософте.

=================
краткий совет - если не хватает информации об источнике ошибки, то всего-лишь добавьте setprefix в циклы верхнего уровня.
__________________
полезное на axForum, github, vk, coub.
Старый 02.09.2011, 10:54   #2  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от mazzy Посмотреть сообщение
В этом и беда универсальных методов - часто встречающиеся они обрабатывают... А вот с отсальными приходится мучаться.
"No silver bullet". С другой стороны, если есть какой-то способ избавиться от 80% рутины в выводе сообщений об ошибках и при этом сделать код более наглядным и лаконичным, то я этим способом воспользуюсь.
Цитата:
Сообщение от mazzy Посмотреть сообщение
мне кажется, что вместо такой хотелки стоит рассмотреть следующий стандартный подход...
Возможно, я не вполне четко выразился на счет "описателя табличных записей": я лично использую его для тех случаев, когда нужно вывести сообщение о чем-то из ряда вон выходящем, когда нужно реализовать по-быстрому трассировку работы того или иного функционала и т.п. В этом случае мне
  1. нужна необходимая и достаточная информация для однозначной идентификации записи
  2. даром не сдались SysInfoAction'ы просто потому, что и нужной формы может не быть (ох, как классно, когда с надеждой щелкаешь по ссылке в сообщении, а ничего не открывается!), и информация может писаться куда-нить в текстовый лог
Т.е. это чисто программистский инструмент, подобно вспомогательному классу отображения свойств объектов в отладчике.
Цитата:
Сообщение от mazzy Посмотреть сообщение
если юзать SysInfoAction то пользователю не нужно будет перевбивать в поиск recId - достаточно просто нажать на кнопку в инфологе.
Я бы ни за что не стал грузить пользователя такими подробностями, как RecId записи, более того, за считанным исключением те пользователи, с которыми я работаю, никогда не станут куда-то там перевбивать RecId - они инфологи-то зачастую не читают, какой уж там искать по RecId записи...
На счет setprefix - целиком и полностью поддерживаю.
Старый 02.09.2011, 11:45   #3  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от gl00mie Посмотреть сообщение
Возможно, я не вполне четко выразился на счет "описателя табличных записей": я лично использую его для тех случаев, когда нужно вывести сообщение о чем-то из ряда вон выходящем, когда нужно реализовать по-быстрому трассировку работы того или иного функционала и т.п.
Попробуйте setpprefix - уверен, понравится.
__________________
полезное на axForum, github, vk, coub.
Старый 09.09.2011, 14:48   #4  
kia is offline
kia
Участник
 
96 / 19 (1) ++
Регистрация: 07.10.2008
Адрес: Харьков
Цитата:
Сообщение от mazzy Посмотреть сообщение
[*]ВСЕГДА надо писать setprefix("информация о том, что обрабатываем в данный момент - информация об источнике")
краткий совет - если не хватает информации об источнике ошибки, то всего-лишь добавьте setprefix в циклы верхнего уровня.
Иногда при больших циклах с воводом сообщений префикс перегружает лог.
И есть вопрос, может не совсем по SUBJ.
А как самому понизить уровень лога?
Например, в цикле выводятся сообщения не требующие уточнения, но если будет ошибка в table.validateWrite(), то хорошо бы вывести префикс с уточнением.
И, как выяснилось, оператор continue почему-то не сбрасывает уровень лога.
В результате может фигня получиться.
Теги
download, законченный пример, полезное

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как лучше оформлять несколько условий в select where? Повторная попытка mazzy DAX: Программирование 10 27.06.2011 13:54
Как лучше оформлять несколько условий в select where? mazzy DAX: Программирование 32 24.06.2011 20:40
Axapta 3.0 - можно ли править классы в USR слое AKIS DAX: Программирование 3 07.02.2004 01:19
Передача условий в отчет ArturK DAX: Программирование 4 18.08.2003 22:56
Системные классы Swetik DAX: Функционал 2 03.07.2003 12:11

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 11:09.