26.06.2017, 17:41 | #181 |
Banned
|
Цитата:
Сообщение от Raven Melancholic
Проблема даже не в том, что поставщик/клиент это разные справочники с разными таблицами отслеживания взаиморасчетов, потом объединенные в какие-то общие иерархии, мапы. Меня больше смущает подход, когда обработку платежей/начислений именно клиентов/поставщиков так объединили, а для остальных сделали отдельную обработку. Чем такая обработка для клиентов/поставщиков отличается от тех же действий с сотрудниками, с подотчетными лицами, с акционерами, с инвесторами и заемщиками, государством и т.п.?
Однако, задачи модулей РсП и РсК отличаются: в одном случае есть задача платить как можно позднее (все это казначейство, бюджеты и тп) а в другом - получить деньги как можно быстрее (инкассо, collections, cash flow). Поэтому смотреть на это как на одну сущность - это упрощение. |
|
26.06.2017, 18:19 | #182 |
Модератор
|
Угу, тем более что контрагент может быть одновременно и поставщиком, и покупателем.
С Уважением, Георгий |
|
26.06.2017, 23:22 | #183 |
Участник
|
Цитата:
Инфологическая модель не обязана отражаться в физическую один в один |
|
27.06.2017, 02:18 | #184 |
NavAx
|
Цитата:
Сообщение от belugin
Насколько я знаю, это зависит от свойств данных и типичных запросов http://www.agiledata.org/essays/mapp...ingInheritance
Цитата:
Цитата:
С другой стороны, очень простой, жизненный, пример. Сотрудник покупает у родной конторы товар в счет будущей зарплаты... Цитата:
Вот party это как раз яркий признак того, что люди не очень понимали что и зачем они делают. С одной стороны, это как раз логичная попытка создать единый справочник экономических субъектов. В другой стороны, мотивация его создания была чисто техническая, без привязки к бизнесу. Наворотили иерархию, а балланса-то и нет. Даже регистрационные данные туда не перенесли, они так и остались на Cust и Vend. Т.е. лучше чем ничего, но попотеть приходится. Цитата:
Сообщение от gl00mie
А как же проводки в Управлении запасами, которые жили, не тужили в одном InventTrans'е, "обсчитываясь" двумя ортогональными иерархиями классов, реализующими всевозможные комбинации правил обновления статусов запасов с источниками этих обновлений? Там сколько разных таблиц надо было сделать, может, по одной на каждый источник (покупка, продажа, перенос, инвентаризация, списание в производство и т.п.)?
__________________
Isn't it nice when things just work? Последний раз редактировалось macklakov; 27.06.2017 в 04:09. |
|
27.06.2017, 04:32 | #185 |
NavAx
|
это, кстати, как раз рождение в муках велосипеда под названием "контрагент". Просто люди никогда велосипеда не видели и не знают зачем нужны велосипеды. Поэтому инженерный процесс непростыми путями следует.
__________________
Isn't it nice when things just work? |
|
27.06.2017, 07:06 | #186 |
Участник
|
Почитайте что там внутри объектовые свойства не используются те же рассуждения применимы при проектировании физической модели где нет наследования по логической где есть.
|
|
27.06.2017, 07:43 | #187 |
Участник
|
Не так все просто ) Для ERP ещё важно, чтобы одновременно сотни/тысячи пользователей могли вставлять/обновлять быстро и без блокировок множество записей. И для этого как раз лучше подходит более нормализованная модель. То, что в Аксапте кубы настраивались прямо на рабочую базу - это исключение из правила ) Обычно для dwh делают отдельную, более денормализованную базу.
|
|
27.06.2017, 08:06 | #188 |
NavAx
|
Ну и по какой форме у нас нынче DirParty нормализована?
__________________
Isn't it nice when things just work? |
|
27.06.2017, 19:32 | #189 |
Banned
|
У меня сейчас одна из задач в AX2012 обеспечить установку primary vendor на уровне site в разрезе customer/customer group.
ООП вроде бы крутое везде и всюду с наследованием контрактов и прочим, а мне надо искать и заменять все вхождения inventTable.PrimaryVendor на что-то типа salesLine.getPrimaryVendor(). ООП надо чтобы salesLineType.getPrimaryVendor() то есть расширение конкретной функциональности, а не затем чтобы переставлять технический код местами чтобы расчлененка была более кровавой. При этом если бы не было в системе ООП вообще а было что-то типа процедурно getPrimaryVendor_SalesLine(salesLine) то я бы не плакал. И клиент не рыдал То есть пользы от ООП в АX я не вижу, только вред. Последний раз редактировалось ax_mct; 27.06.2017 в 19:35. |
|
27.06.2017, 19:43 | #190 |
Участник
|
|
|
27.06.2017, 19:46 | #191 |
Banned
|
Цитата:
Сообщение от macklakov
Вот party это как раз яркий признак того, что люди не очень понимали что и зачем они делают. С одной стороны, это как раз логичная попытка создать единый справочник экономических субъектов. В другой стороны, мотивация его создания была чисто техническая, без привязки к бизнесу. Наворотили иерархию, а балланса-то и нет. Даже регистрационные данные туда не перенесли, они так и остались на Cust и Vend. Т.е. лучше чем ничего, но попотеть приходится.
|
|
|
За это сообщение автора поблагодарили: gl00mie (2). |
28.06.2017, 02:08 | #192 |
NavAx
|
Не понял, протестуешь против возможности посмотреть общий баланс по контрагенту?
__________________
Isn't it nice when things just work? Последний раз редактировалось sukhanchik; 28.06.2017 в 08:02. |
|
28.06.2017, 11:09 | #193 |
Banned
|
|
|
28.06.2017, 12:57 | #194 |
Участник
|
|
|
28.06.2017, 13:10 | #195 |
NavAx
|
Значит я неправильно донес мысль. Что DirParty выделили это хорошо и правильно. Но то как ее реализовали, вызывает сомнения в том, что присутствовало отчетливое понимание.
__________________
Isn't it nice when things just work? |
|
29.06.2017, 08:35 | #196 |
Участник
|
Если подумать, то и наследование таблиц - также over-engineering. При нормализации таблиц уже до 3-й формы наследование излишне. У меня когда-то лет 7 назад была идея, а что если у таблиц сделать наследование полей, как в ООП... начал ковырять и пришел к нормализации таблицы :-)
__________________
// no comments |
|
|
За это сообщение автора поблагодарили: Ace of Database (2). |
29.06.2017, 09:02 | #197 |
Участник
|
Цитата:
X++: vendor = salesLine.getPrimaryVendor(); X++: vendor = SalesLine::getPrimaryVendor(salesLine); сам метод интерпретируется как X++: public VendTable getPrimaryVendor(SalesLine _salesLine)
{
;
this = _salesLine;
...
} ООП предназначено для другого: наследование, инкапсуляция и полиморфизм. Не будь наследования, мы бы погрязли в дублировании кода. Полиморфизм позволяет работать с базовым классом, и не держать руку на пульсе, каждый раз спрашивая себя, а с функцией какой сущности (то бишь класса) я работаю? Вот инкапсуляция - это да, она конкретно не доработана. Очень не хватает свойств, хотя методы доступа get/set/parm есть, но с ними не так удобно.
__________________
// no comments |
|
29.06.2017, 09:15 | #198 |
Модератор
|
мне кажется, это была попытка сначала нормализовать структуру данных "правильно, по тру-программистски", а когда стало очевидно что любое обращение к ней требует соединения дюжины-двух таблиц - материализовать эту структуру. Правильно это или нет - сказать сложно. В AOT смотришь - вроде удобно и логично, в DirPartyTable в БД - кровавое месиво какое-то. Но в целом - работает
__________________
-ТСЯ или -ТЬСЯ ? |
|
29.06.2017, 09:43 | #199 |
Участник
|
Цитата:
Сообщение от Vadik
мне кажется, это была попытка сначала нормализовать структуру данных "правильно, по тру-программистски", а когда стало очевидно что любое обращение к ней требует соединения дюжины-двух таблиц - материализовать эту структуру. Правильно это или нет - сказать сложно. В AOT смотришь - вроде удобно и логично, в DirPartyTable в БД - кровавое месиво какое-то. Но в целом - работает
__________________
// no comments |
|
|
За это сообщение автора поблагодарили: ta_and (4). |
29.06.2017, 09:50 | #200 |
Moderator
|
По моему, главная проблема с наследованием таблиц в Ax - это решение о том что родитель содержит в себе все поля всех наследников. Из за этого им пришлось в ранних версиях автоматически делать outer join родителя ко всем наследникам, а в поздних версиях - просто складывать все поля наследников в одну большую таблицу-родителя.
В классической системе мэппинга объектных отношений в реляционную БД, обращение к таблице наследнику, неявно делает inner join с таблицей родителем. В обращение к родителю ни к каким автоматическим join не приводит. Из за того что MS решил пойти своим путем, использование наследования привело к большому оверхиду - либо из за джойнов, либо из за тучи неиспользуемых полей в таблице. |
|
|
За это сообщение автора поблагодарили: Vadik (1). |
Теги |
sysoperation framework |
|
|