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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 17.04.2011, 00:37   #1  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,318 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
AX 2012: Правила именования объектов
Всем привет! Хотелось бы затронуть больную тему... В АХ 2012 были переписаны (в частности) финансы, в результате чего LedgerTrans "раскололась" на следующие таблички:
  • GeneralJournalEntry
  • GeneralJournalAccountEntry
  • LedgerEntryJournal
  • LedgerEntry
  • SubledgerVoucherGeneralJournalEntry
  • LedgerEntryJournalizing
С ходу возникает резонный вопрос - а каких правил придерживались разработчики объектов в АОТ в ходе их именования?
Раньше принцип существовал и был такой:
Сначала указывается префикс модуля
Затем указывается тип таблицы / иного объекта (может не указываться или могут быть иные варианты)
В конце указывается суффикс названия.

Например,
LedgerJournalTable:
Здесь:
Ledger - префикс модуля (варианты: Invent, Prod, Cust, Vend, smm и т.д.)
Journal - тип таблицы, указывающий на то, что это журнал
Table - суффикс таблицы, означающий, что эта таблица является либо шапкой журнала, либо справочником.

Т.о. выучив общий принцип именования таблиц - можно было не зная нюансы предположить, что в таблице CustTrans будут сидеть проводки по клиентам, LedgerTrans - проводки по ГК, а в InventTable - записи по номенклатурам (справочник).
Для классов - был суффикс Engine или Form, который тоже наталкивал на определенные мысли о его предназначении разработчика.

Понятно, что этот принцип было тяжело соблюдать и многие таблицы / классы этому правилу не соответствовали. Но база была. Более того - начало названия объекта все-таки так или иначе старалось соблюдаться - т.о. все объекты, относящиеся к одному модулю (Ledger, Invent) были сгруппированы в одном месте.

Теперь получается так, что объекты будут "размазаны" равномерно по АОТ - т.к. фиг догадаешься искать куски LedgerTrans среди объектов на литеру G (GeneralJournalEntry) или S (SubledgerVoucherGeneralJournalEntry). Также непонятно предназначение слова Entry. Оно как-то тоже бессистемно находится в середине или конце названия таблицы. Более того - как-то не вяжется слово Entry (ввод) с транзакционными таблицами (т.е. в которые не вводятся данные пользователем напрямую).

Вопрос к тем, кто может быть в курсе изменения политики именования объектов. Какие теперь существуют правила именования объектов и по какому принципу можно догадываться о предназначении того или иного объекта?
__________________
Возможно сделать все. Вопрос времени

Последний раз редактировалось sukhanchik; 17.04.2011 в 09:32. Причина: орфография
За это сообщение автора поблагодарили: mazzy (2), BOAL (2), gl00mie (2).
Старый 17.04.2011, 01:04   #2  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,564 / 1416 (53) ++++++++
Регистрация: 28.11.2005
Записей в блоге: 1
Тоже обратил на это внимание... Не понравилось. Но по-крайней мере официально пока все осталось как было. Хотя и "this content is preliminary and subject to change". Видимо, пока все это просто копия BP из AX2009, а нового еще нет.

Цитата:
Best Practices for Table Properties [AX 2012]

Name:

Prefix with the module name. For example, Cust, Vend, or Invent.
Infix with a logical description of the contents. For example, CustCollectionLetterTrans, where CollectionLetter is the infix. For temporary tables, infix with Tmp. For example, CustTmpLedger.
Postfix with the type of contents. For example, Trans, Jour, Line, Table, Group, Parameters, or Setup.
The primary tables for the major business areas are postfixed with Table. For example, CustTable, InventTable, and VendTable.
http://msdn.microsoft.com/en-us/libr...(v=AX.60).aspx
За это сообщение автора поблагодарили: sukhanchik (3).
Старый 17.04.2011, 07:46   #3  
Alex_KD is offline
Alex_KD
Участник
AxAssist
MCBMSS
Соотечественники
 
522 / 362 (14) ++++++
Регистрация: 06.07.2006
Адрес: Melbourne, Down Under
Подозреваю, что это только вершина айсберга.....и внутри еще много такого
__________________
AxAssist 2012 - Productivity Tool for Dynamics AX 2012/2009/4.0/3.0
Старый 17.04.2011, 12:23   #4  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Цитата:
Сообщение от sukhanchik Посмотреть сообщение
Также непонятно предназначение слова Entry. Оно как-то тоже бессистемно находится в середине или конце названия таблицы. Более того - как-то не вяжется слово Entry (ввод) с транзакционными таблицами (т.е. в которые не вводятся данные пользователем напрямую).
В данном контексте Entry, скорее, "запись", или "элемент, компонент".
__________________
Ivanhoe as is..
За это сообщение автора поблагодарили: sukhanchik (2).
Старый 17.04.2011, 12:35   #5  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,318 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от Ivanhoe Посмотреть сообщение
В данном контексте Entry, скорее, "запись", или "элемент, компонент".
Эммм... тоже как-то привыкаешь к некоторой терминологии. Я тоже с помощью http://translate.google.ru могу перевести "Поставщик" как "cateter" . Но как-то все привыкли к "vendor"
__________________
Возможно сделать все. Вопрос времени
Старый 17.04.2011, 13:26   #6  
lvan is offline
lvan
Участник
Аватар для lvan
Лучший по профессии 2014
 
858 / 82 (4) ++++
Регистрация: 15.04.2011
Записей в блоге: 1
Мне кажется, что если в вышеуказанных таблицах добавить префикс Ledger, то их имена станут черезчур длинными.
Вот и всё объяснение.
Старый 17.04.2011, 13:45   #7  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,318 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от lvan Посмотреть сообщение
Мне кажется, что если в вышеуказанных таблицах добавить префикс Ledger, то их имена станут черезчур длинными.
Вот и всё объяснение.
Цитата:
Сообщение от sukhanchik Посмотреть сообщение
  • GeneralJournalEntry
  • GeneralJournalAccountEntry
  • LedgerEntryJournal
  • LedgerEntry
  • SubledgerVoucherGeneralJournalEntry
  • LedgerEntryJournalizing
Не... это не объяснение для разработчиков.
Во-первых есть табличка Subledger..., в которой фраза Ledger уже присутствует. И ничто не мешало поставить фразу в начало.
Во-вторых также ничто не мешало называть табличку, уже отталкиваясь от того, что начинается она с фразы Ledger. И уже ограничивать максимально допустимое название таблицы исходя из того, что часть букв уже зарезервирована под фразу Ledger.
В-третьих, хоть это и менее критично - но хаотичное расположение фразы Entry в названиях таблиц мне тоже не нравится.
В-четвертых из названия таблиц не совсем прослеживается их предназначение. К примеру - таблицы LedgerEntryJournal и LedgerEntryJournalizing по моим понятиям называются одинаково - т.к. у них основы фраз одинаковы и разница в именах не смысловая (аналогично, если были бы 2 таблицы: CustTable и CustomerTable). Плюс табличка GeneralJournalEntry тоже "просится" в плане названия к этим двум.
__________________
Возможно сделать все. Вопрос времени
Старый 17.04.2011, 13:51   #8  
lvan is offline
lvan
Участник
Аватар для lvan
Лучший по профессии 2014
 
858 / 82 (4) ++++
Регистрация: 15.04.2011
Записей в блоге: 1
LedgerSub чтоли?
вообще по названиям гадать о предназначении не нужно
сделали ведь DeveloperDocumentation property
Старый 17.04.2011, 13:54   #9  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,318 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от lvan Посмотреть сообщение
LedgerSub чтоли?
Ну а почему бы и нет? Никто же не претендует на "некорявость" названия. А вот группировка в АОТе "рядом стоящих" объектов не помешала бы.
На худой конец "LedgerSubLedger...", а остальную часть названия - как-то сократить / преобразовать.
__________________
Возможно сделать все. Вопрос времени
Старый 17.04.2011, 13:57   #10  
Михаил Андреев is offline
Михаил Андреев
Участник
Компания АМАНД
Лучший по профессии 2009
 
1,296 / 239 (10) ++++++
Регистрация: 09.11.2001
Адрес: Химки, Московская область
Цитата:
Сообщение от Ivanhoe Посмотреть сообщение
В данном контексте Entry, скорее, "запись", или "элемент, компонент".
Термин "entry" (точнее, фраза "journal entry") обычно обозначает запись журнала в учёте. Это касается как бухгалтерских проводок, так и всех остальных, например, складских.

ИМХО, Entry заменило слово Trans для журналов. По первым примерам похоже...
Но почему пишут то JournalEntry, то EntryJournal, вот это непонятно.

Оттуда же, похоже, "ноги растут" и для префикса SubLedger. Это, видимо, модульный журнал. Но название SubledgerVoucherGeneralJournalEntry меня вогнало в ступор Если отвлечься от AX, получается по кускам фраза типа "запись журнала ГК по ваучеру модульного журнала" или что-то в этом роде.

Короче, надо документацию искать. Наверняка, это описано где-то.
__________________
Михаил Андреев
https://www.amand.ru
За это сообщение автора поблагодарили: sukhanchik (2).
Старый 17.04.2011, 14:04   #11  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от sukhanchik Посмотреть сообщение
Вопрос к тем, кто может быть в курсе изменения политики именования объектов. Какие теперь существуют правила именования объектов и по какому принципу можно догадываться о предназначении того или иного объекта?
мне кажется, что все проще.
несоблюдение политики именования я видел много раз на проектах клиентов, когда клиентский функционал был создан людьми, которые плохо знают аксапту.

могу ошибаться, но мне кажется, что сейчас аксапту пишут те, кто плохо знает функционал старых версий и имеющиеся политики.
__________________
полезное на axForum, github, vk, coub.
Старый 17.04.2011, 14:08   #12  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Да, в конце концов, ничто не помешало, например, на ряду с InventItemPurchSetup и InventItemSalesSetup сделать InventItemInventSetup.
Старый 17.04.2011, 14:33   #13  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,318 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от Михаил Андреев Посмотреть сообщение
Термин "entry" (точнее, фраза "journal entry") обычно обозначает запись журнала в учёте. Это касается как бухгалтерских проводок, так и всех остальных, например, складских.
ИМХО, Entry заменило слово Trans для журналов.
Ок, я не против смены терминов - лишь бы они были заменены везде .
Цитата:
Сообщение от Михаил Андреев Посмотреть сообщение
Короче, надо документацию искать. Наверняка, это описано где-то.
А вот тут я категорически возражаю . Ну не было в природе такой документации по 3.0 (не считая конечно красивых файликов по локализации, которые рисовал EVGL). И это не мешало разбираться в системе. А теперь получается - что без документации - мешает.

Цитата:
Сообщение от mazzy Посмотреть сообщение
мне кажется, что все проще.
несоблюдение политики именования я видел много раз на проектах клиентов, когда клиентский функционал был создан людьми, которые плохо знают аксапту.

могу ошибаться, но мне кажется, что сейчас аксапту пишут те, кто плохо знает функционал старых версий и имеющиеся политики.
А вот это увы четко прослеживается . Я просто думал (в душе надеялся), что люди, которые плохо знают функционал предыдущих версий все-таки будут стараться изобрести некую свою систему именования. Пусть заменят Trans на Entry. Пусть еще что-нибудь заменят. Но оставят (или придумают свой) принцип именования объектов. Важно! Который бы был и которому бы придерживались. Ведь смогли разработчики еще тогда аксапты (в далеком 19хх году) внедрить такой принцип при построении системы - чем разработчики в МС хуже?
__________________
Возможно сделать все. Вопрос времени

Последний раз редактировалось sukhanchik; 17.04.2011 в 14:39.
Старый 17.04.2011, 14:36   #14  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1293 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Интересно, в данном ключе насколько могут измениться доводы приверженцев того или иного подхода из темы:
Префиксы-суффиксы. Как лучше? Стоит ли избавляться от них?
За это сообщение автора поблагодарили: driller (2).
Старый 17.04.2011, 15:14   #15  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Цитата:
Сообщение от sukhanchik Посмотреть сообщение
Эммм... тоже как-то привыкаешь к некоторой терминологии. Я тоже с помощью http://translate.google.ru могу перевести "Поставщик" как "cateter" . Но как-то все привыкли к "vendor"
Для меня слово "entry" вполне органично в данном контексте и без словаря (язык изучался углубленно с первого класса).

Цитата:
Сообщение от Михаил Андреев Посмотреть сообщение
Термин "entry" (точнее, фраза "journal entry") обычно обозначает запись журнала в учёте. Это касается как бухгалтерских проводок, так и всех остальных, например, складских.

ИМХО, Entry заменило слово Trans для журналов. По первым примерам похоже...
Но почему пишут то JournalEntry, то EntryJournal, вот это непонятно.
Согласен, скорее это замена "trans", который, в общем-то, в итоге перерос просто "проводку" / "транзакцию".

А порядок слов может быть важным. Если "entry" в конце - то скорее всего это таблица записей "того, что было до entry", а вот "хххEntryJournal" скорее означает журнал записей "ххх" Хотя AX2012 я еще в глаза не видел, возможно, не прав
__________________
Ivanhoe as is..
За это сообщение автора поблагодарили: sukhanchik (2).
Старый 17.04.2011, 15:25   #16  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,318 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от Ivanhoe Посмотреть сообщение
А порядок слов может быть важным. Если "entry" в конце - то скорее всего это таблица записей "того, что было до entry", а вот "хххEntryJournal" скорее означает журнал записей "ххх" Хотя AX2012 я еще в глаза не видел, возможно, не прав
Я тоже АХ2012 еще в глаза не видел - сужу пока только по докам .
Но мысль в отношении важности порядка слов - интересная. Посмотрим - что будет на выходе.
__________________
Возможно сделать все. Вопрос времени
Старый 18.04.2011, 09:50   #17  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
Цитата:
Сообщение от mazzy Посмотреть сообщение
мне кажется, что все проще.
несоблюдение политики именования я видел много раз на проектах клиентов, когда клиентский функционал был создан людьми, которые плохо знают аксапту.
могу ошибаться, но мне кажется, что сейчас аксапту пишут те, кто плохо знает функционал старых версий и имеющиеся политики.
Сергей. Разработчики могут называть объекты, как им заблагорассудится. На то и ставят ведущих, которые обучают новичков и контролируют качество кода и соблюдение BestPractises. А когда дело касается столь существенных изменений, то всем заправляет Архитектор Системы - именно он отвечает за правильную работу всей функциональности, корректность взаимосвязей и т.п. И я не верю, что на таком уровне может твориться подобный бардак. Или так было задуманно специально, и последуют изменения ВР в части именования объектов, или дело не в разработчиках, а в архитекторах. Но это было бы крайне печально....

С Уважением,
Георгий
Старый 18.04.2011, 10:30   #18  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от George Nordic Посмотреть сообщение
Разработчики могут называть объекты, как им заблагорассудится. ...
И я не верю, что на таком уровне может твориться подобный бардак.
Или так было задуманно специально, и последуют изменения ВР в части именования объектов, или дело не в разработчиках, а в архитекторах.
Могут.
А я - верю.
Если сделано специально, то какой смысл в ТАКОМ изменении?
__________________
полезное на axForum, github, vk, coub.
Старый 18.04.2011, 10:53   #19  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Покопавшись в коде оповещений, workflow, адресов и глобальной адресной книги в AX 2009, я тоже уже не верю в "Архитекторов Системы" )
__________________
Ivanhoe as is..
Старый 18.04.2011, 10:54   #20  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,564 / 1416 (53) ++++++++
Регистрация: 28.11.2005
Записей в блоге: 1
Пока есть только такие описания:

Цитата:
Сообщение от Ivanhoe Посмотреть сообщение
А порядок слов может быть важным. Если "entry" в конце - то скорее всего это таблица записей "того, что было до entry", а вот "хххEntryJournal" скорее означает журнал записей "ххх" Хотя AX2012 я еще в глаза не видел, возможно, не прав
Цитата:
The LedgerEntryJournal table contains the journal group information.
http://msdn.microsoft.com/en-us/libr...(v=AX.60).aspx
Цитата:
The GeneralJournalEntry table contains the general journal header information.
http://msdn.microsoft.com/en-us/libr...(v=AX.60).aspx

Цитата:
Сообщение от Михаил Андреев Посмотреть сообщение
Оттуда же, похоже, "ноги растут" и для префикса SubLedger. Это, видимо, модульный журнал. Но название SubledgerVoucherGeneralJournalEntry меня вогнало в ступор Если отвлечься от AX, получается по кускам фраза типа "запись журнала ГК по ваучеру модульного журнала" или что-то в этом роде.

Короче, надо документацию искать. Наверняка, это описано где-то.
Цитата:
The SubledgerVoucherGeneralJournalEntry table holds the relationship of a voucher to a general journal entry.
http://msdn.microsoft.com/en-us/libr...(v=AX.60).aspx
Теги
ax2012, как правильно

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
axinthefield: Dynamics AX Event IDs Blog bot DAX Blogs 0 01.03.2011 22:11
dynamics-ax: Microsoft Dynamics AX 2012 and the importance of PowerPivot Blog bot DAX Blogs 0 17.02.2011 21:11
daxdilip: Whats New in Dynamics AX 2012 (A brief extract from the recently held Tech Conf.) Blog bot DAX Blogs 7 31.01.2011 12:35
dynamics-ax: Modeling the world, with Microsoft Dynamics AX 2012 Blog bot DAX Blogs 0 25.01.2011 09:11
axStart: Microsoft Dynamics AX 2009 Hot Topics Web Seminar Series Blog bot DAX Blogs 0 06.08.2008 12:05

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

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

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