26.03.2011, 07:43 | #1 |
Участник
|
В чем преимущество ax-классов перед непосредственной работой с таблицами?
Вопрос скорее на понимание.
В последних версиях есть ax-классы, которые являются обертками вокруг соответствующих таблиц. (axSalesTable, axSalesLine, axCustTable, axLedgerJournalTrans и т.п.) Я как-то привык по старинке работать непосредственно с таблицами. X++: SalesTable.clear(); SalesTable.initValue(); SalesTable.initFromCustTable(ct); ... SalesTable.insert(); ================== Вопрос: а в чем преимущество ax-классов? в чем была задумка авторов, которые придумали эти соглашения по ax-классам? |
|
26.03.2011, 10:04 | #2 |
Участник
|
Попробуй сделать заказ типа "Заказ" при работе с классами AxSalesTable и AxSalesLine, и напрямую, через таблицы. В первом случае, все складские проводки классы сами сделают, а во втором случае....
|
|
26.03.2011, 10:06 | #3 |
Участник
|
Цитата:
см. метод SalesLine.insert() |
|
|
За это сообщение автора поблагодарили: Михаил Андреев (4). |
26.03.2011, 10:10 | #4 |
MCP
|
Подобные классы использовал всего несколько раз.
При написании кода в C# вызывать один класс через bc.net проще чем объявлять все необходимые объекты, а потом обрабатывать их. Если приложение стандартное - этими классами удобно создавать заказы/закупки и т.п. На мой взгляд - классы нужны для внешних приложений, создаваемых в C# и работающих через .Net Business Connector. |
|
26.03.2011, 10:15 | #5 |
Moderator
|
У меня такое ощущение, что эти классы разрабатывал какой-то выходец из .net-программирования и он пытался сэммулировать привычное наследование для таблиц. Потом в рамках какой-то группы (кажется - EP), использование этих классов вместо таблиц стало стандартом разработки. Но рефакторить остальной код никто не стал, да и другие группы этими классами не пользуются. Так что, на мой взгляд, большого смысла в использовании этой функциональности - нету...
Кстати - интересно как в 2012 с использованием этих классов... |
|
26.03.2011, 10:18 | #6 |
Участник
|
"Этой" - какой именно? ax-классов или работой напрямую с таблицами?
Конкретизирую вопрос: В чем преимущество ax-классов перед непосредственной работой с таблицами ВНУТРИ самой аксапты? |
|
26.03.2011, 10:24 | #7 |
MCP
|
Цитата:
2. Удобнее управлять местом выполнения кода: клиент или сервер. 3. Возможность написания более "объектно-ориентированного" кода. |
|
26.03.2011, 10:27 | #8 |
Moderator
|
Цитата:
Мне кажется - никакого преимущества нету. В принципе - можно для своих новых таблиц наделать аналогичных классов, и некоторую функциональность выкинуть в базовый класс axInternalBase. Но класс этот и так уже достаточно помоечный, и мне кажется что правильнее использовать паттерн с методом type() таблицы, который возвращает соответствующий класс. Можно даже табличное наследование ограниченное реализовать, если у тебя в базовой таблице есть поле типа и метод type() ищет соответствущую таблицу с данными подтипа и в ней вызывает метод type(). В общем - IMHO - за исключением узкой задачи сериализации документов, эти классы не функциональны. |
|
|
За это сообщение автора поблагодарили: mazzy (2). |
26.03.2011, 10:28 | #9 |
Участник
|
Цитата:
Зачем? таблицы живут только на сервере. э-э-э? это точно не маркетинговый булшит? |
|
26.03.2011, 10:35 | #10 |
MCP
|
1. Ага, только в будущем
2. Имел ввиду ситуации, как, например, вызов табличного метода из формы. Если в методе написана какая-то логика - она будет выполняться на клиенте. А если вызывать класс - можно выполнить то же на сервере. 3. По идее, если вызывать отовсюду axSalesTable.insert() вместо salesTable.insert() - получается что вставкой записи уже управляет класс. Его удобно дорабатывать, в отличии от модификации табличных методов, которые обычно сильно раздуваются. P.S.: Согласен с fed, лучше использовать Type классы (SalesLineType и т.п.). Если начать активно использовать ax классы изнутри - это как минимум будет резать глаз и сразу вызывать вопросы Последний раз редактировалось kornix; 26.03.2011 в 10:37. |
|
26.03.2011, 10:35 | #11 |
Moderator
|
|
|
|
За это сообщение автора поблагодарили: mifi (-1), kornix (1). |
26.03.2011, 10:42 | #12 |
Участник
|
Цитата:
в ax2009 все таблицы живут на сервере. |
|
26.03.2011, 10:49 | #13 |
Microsoft Dynamics
|
Первый insert - это правило относится только к временным таблицам. Второе предложение никак не связано с первым, на самом деле Интересно также понять, как на клиенте отрабатывает нестатический метод insert(), куда именно он вставляет данные, если таблица постоянная
|
|
26.03.2011, 10:50 | #14 |
Moderator
|
Кстати - если уж очень хочется поместить сложную логику в табличный insert(), то надо в нем вызывать this.type().insert() (не вызывая super()), а в методе insert() соответствующего класса, тупо вызывать table.doinsert(). Так, помниться, вставка в строки заказов и закупок отрабатывает...
|
|
26.03.2011, 10:56 | #15 |
Moderator
|
Цитата:
Ну вставит он конечно в таблицу БД. Но мне казалось что в этом случае, если логика метода insert() переопределена, то она будет на клиенте отрабатывать ? |
|
26.03.2011, 11:05 | #16 |
Гость
|
Цитата:
Сообщение от mazzy
Вопрос скорее на понимание.
В последних версиях есть ax-классы, которые являются обертками вокруг соответствующих таблиц. (axSalesTable, axSalesLine, axCustTable, axLedgerJournalTrans и т.п.) Я как-то привык по старинке работать непосредственно с таблицами. X++: SalesTable.clear(); SalesTable.initValue(); SalesTable.initFromCustTable(ct); ... SalesTable.insert(); ================== Вопрос: а в чем преимущество ax-классов? в чем была задумка авторов, которые придумали эти соглашения по ax-классам? они в AIF вроде еще используются. |
|
26.03.2011, 11:08 | #17 |
Microsoft Dynamics
|
|
|
26.03.2011, 11:11 | #18 |
Участник
|
Цитата:
всю жизнь пользовался проверкой bufcmp(record,record.orig()) для определения, что запись изменена. или record.field == record.orig().field для определени измененности поля. зачем нужен этот toched? |
|
26.03.2011, 11:13 | #19 |
Участник
|
и вообще... этот toched, как мне кажется, придумал человек, абсолютно не знающий аксапту. но может быть я ошибаюсь?
|
|
26.03.2011, 11:14 | #20 |
Microsoft Dynamics
|
Mazzy - ну написали люди классы ВНУТРИ AX, теперь пользуются ими внутри AX, что здесь такого? Оба способа приемлимы, так что это дело вкуса и привычки.
|
|
Теги |
ax-классы, axbc, как правильно |
|
|