AXForum  
Вернуться   AXForum > Прочие обсуждения > Курилка
DAX
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 14.10.2008, 10:06   #81  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,564 / 1416 (53) ++++++++
Регистрация: 28.11.2005
Записей в блоге: 1
Действительно непорядок. Во-первых, константы вместо макросов, во-вторых, можно было switch...case использовать, ну а в-третьих, вдруг война? А в военное время и таблица умножения поменяться может. А значит надо делать таблицу параметров.

PS. А в Вене действительно замечательно. Только недавно оттуда вернулся.
Старый 14.10.2008, 10:25   #82  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Хм. Какие кейсы?
Там все в одну строчку кода можно свести.
X++:
numofpage = (factorForSpoiling ? (factorForSpoiling - 1) : factorForSpoiling) div 18 + 1;
а 18 - перенести куда-либо в параметры
__________________
Axapta v.3.0 sp5 kr2
Старый 14.10.2008, 10:27   #83  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,564 / 1416 (53) ++++++++
Регистрация: 28.11.2005
Записей в блоге: 1
А ЧЮ где?
Старый 14.10.2008, 10:35   #84  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Ну, я в конце смайл, вроде бы, вставил
__________________
Axapta v.3.0 sp5 kr2
Старый 09.02.2009, 15:05   #85  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Интересный код обнаружился в Ax*-классах при доступе к полям-массивам: к примеру, в AxSalesTable, в методе dimensionElement() (для 3-ки) или же setDimensionElement() (для 4-ки и выше) вместо вроде бы очевидной конструкции
X++:
fieldId2Ext(fieldnum(SalesTable, Dimension), _array)
используется
X++:
new SysDictField(tablenum(SalesTable), fieldnum(SalesTable, Dimension), _array).id()
Кто виноват в использовании такого "оптимального" кода в 3-ке, выяснить не удалось, а в 4-ке виной тому автор класса AxGenerateAxBCClass, а именно его метода setDimensionElement() (метод setArrayElement() не лучше), где по каким-то причинам зашит такой шаблон для методов доступа к элементам полей-массивов.
Старый 08.01.2010, 13:59   #86  
TasmanianDevil is offline
TasmanianDevil
Мрачный тип
Аватар для TasmanianDevil
Злыдни
 
886 / 389 (14) ++++++
Регистрация: 24.01.2005
Адрес: Томск
Атавизьмы
Класс RAssetDisposalValue.
Безобразная передача параметров при инициализации экземпляров RAssetSumCalc дожила c 3-ки до DAX2009
X++:
public server static RAssetAmount postValue(RAssetId         _assetId,
                                             RAssetPostValue  _postValue,
                                             RAssetAmount     _assetAmount    = 0,
                                             RAssetStandardId _assetStandardId,
                                             RAssetTransDate  _assetTransDate = systemdateget())
{
    RAssetSumCalc       rAssetSumTransThisYear,
                        rAssetSumTransPriorYear,
                        rAssetSumTransDate;
    RAssetTransDate     prior_Years,
                        this_Year;
    RAssetAmount        assetAmount;
    ;

    this_Year    = dateEndYr(systemdateget());
    prior_Years  = dateEndYr(prevyr(systemdateget()));


    rAssetSumTransThisYear  = RAssetSumCalc_Trans::newAssetPeriod(RAssetTable::find(_assetId).AccountNum,
                                                                  _assetStandardId,
                                                                  this_Year,
                                                                  prior_Years);
__________________
Мы летаем, кружимся, нагоняем ужасы ...
Старый 08.01.2010, 14:19   #87  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
В 6ке им это придется пофиксить, так как компилироваться такое уже не будет
Старый 11.11.2010, 17:29   #88  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
CustClassificationGroup
Если хочется от души посмеяться, рекомендую простенькую таблицу CustClassificationGroup из AX2009, особенно ее [нигде не используемые] методы find(), exist(). Из серии "как сделать в слове еще четыре ошибки"; так и представляется индус из Мумбая, которому дали тестовое задание - создать таблицу.
Старый 11.11.2010, 18:32   #89  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Нуу, работать то будет. Чуть странно с concurrencyModel, первый раз такое видел в коде. А так - ну, подумаешь, indentation плохой.
Старый 11.11.2010, 19:05   #90  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Нуу, работать то будет. Чуть странно с concurrencyModel, первый раз такое видел в коде. А так - ну, подумаешь, indentation плохой.
Там все чуть более запущено чем просто проблемы с отступами - обрати внимание на первичный ключ на табличке
Изображения
 
__________________
-ТСЯ или -ТЬСЯ ?
Старый 12.11.2010, 01:53   #91  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от Vadik Посмотреть сообщение
Там все чуть более запущено чем просто проблемы с отступами - обрати внимание на первичный ключ на табличке
RecId. Но и поиск тоже по RecId. То есть с точки зрения моделирования данных - все ОК.
Другое дело, что в этой табличке надо бы еще другой уникальный индекс создать. Но видимо табличка так часто используется, что пока не понадобилось
Старый 12.11.2010, 02:15   #92  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Сообщение от kashperuk Посмотреть сообщение
RecId. Но и поиск тоже по RecId. То есть с точки зрения моделирования данных - все ОК
Да как сказать.. И рядом с ОК не стояло, если честно - см. на EDT, связь с другими таблицами не по RecId, а по Code строится. Представь на секунду, что ты в запросе связываешь клиентов и группы классификации - что получится?

Цитата:
Другое дело, что в этой табличке надо бы еще другой уникальный индекс создать. Но видимо табличка так часто используется, что пока не понадобилось
Это не другой уникальный индекс, это первичный ключ. Его обычно сразу (при проектировании) создают, а не "когда понадобится"

Я в принципе догадываюсь, зачем эти неиспользуемые find() и exist() методы создавались - чтобы тупо пройти формальную проверку на их наличие. Вопрос в том, как такое сумели в SYS слой закоммитить и на кой ляд вводили разрекламированные юнит-тесты
Изображения
  
__________________
-ТСЯ или -ТЬСЯ ?
Старый 23.11.2010, 20:28   #93  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
AX 2009 SP1 RU5, \Macros\SQLFormatting - вот и пользуйся после этого стандартными макросами
X++:
#define.SQLfrom('FROM')
#define.SQLOr('FROM')
#define.SQLAnd('AND')
#define.SQLNot('NOT')
#define.SQLOrder('ORDER')
#define.SQLBY('GROUP')
За это сообщение автора поблагодарили: EVGL (1), Maximin (1), lev (1).
Старый 23.11.2010, 22:29   #94  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,243 / 896 (36) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
Цитата:
Сообщение от EVGL Посмотреть сообщение
X++:
actorForSpoiling = prodTableRun.QtySched / InventTableRun.qtyPerLayer / prodTableRun.MEM_NumOfLanes;
 numofpage = 1;
 if (factorForSpoiling > 198)
  numofpage = 12;
 else if (factorForSpoiling > 180)
  numofpage = 11;
 else if (factorForSpoiling > 162)
  numofpage = 10;
 else if (factorForSpoiling > 144)
  numofpage = 9;
 else if (factorForSpoiling > 126)
  numofpage = 8;
 else if (factorForSpoiling > 108)
  numofpage = 7;
 else if (factorForSpoiling > 90)
  numofpage = 6;
 else if (factorForSpoiling > 72)
  numofpage = 5;
 else if (factorForSpoiling > 54)
  numofpage = 4;
 else if (factorForSpoiling > 36)
  numofpage = 3;
 else if (factorForSpoiling > 18)
  numofpage = 2;
Цитата:
Сообщение от AndyD Посмотреть сообщение
X++:
numofpage = (factorForSpoiling ? (factorForSpoiling - 1) : factorForSpoiling) div 18 + 1;
У меня нет знаний по аксапте и X++, но (по моему мнению) результаты работы при factorForSpoiling большем чем 215 будут разниться для приведённых участков кода...
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit

Последний раз редактировалось a33ik; 23.11.2010 в 22:46.
Старый 23.11.2010, 23:01   #95  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Цитата:
Сообщение от a33ik Посмотреть сообщение
У меня нет знаний по аксапте и X++, но (по моему мнению) результаты работы при factorForSpoiling большем чем 215 будут разниться для приведённых участков кода...
Автор исходного кода не предполагал factorForSpoiling > 215. Речь идет, насколько я понимаю, о продольной резке полотна. По моим ощущениям больше 100 ножей не ставят.
Старый 23.11.2010, 23:03   #96  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Предположил, что расписывать на 13 и больше страниц коллега (или не коллега) EVGL уже не осилил
Но вы правы. Для полноты соответствия, надо еще проверку на больше 12 вставить. Можно и одной строкой

PS Хотя, как выяснилось, речь шла вообще о другом
__________________
Axapta v.3.0 sp5 kr2
Старый 14.01.2011, 10:01   #97  
TasmanianDevil is offline
TasmanianDevil
Мрачный тип
Аватар для TasmanianDevil
Злыдни
 
886 / 389 (14) ++++++
Регистрация: 24.01.2005
Адрес: Томск
DAX2009, формы строк журналов ГК, переопределенные validate'ы и modified'ы - часто используются в анализе содержимого полей подобные конструкции :
X++:
if (ledgerJournalTrans_ds.object(fieldnum(LedgerJournalTrans, AccountNum)).getValue()!="")
вместо нормального и привычного
X++:
if (ledgerJournalTrans.AccountNum)
Это какое-то новое мощное колдунство по новым технологиям DAX2009, индусский стиль или просто MBS перевел своих кодеров на посимвольную оплату труда ?
__________________
Мы летаем, кружимся, нагоняем ужасы ...

Последний раз редактировалось TasmanianDevil; 14.01.2011 в 10:04.
Старый 14.01.2011, 11:45   #98  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Однозначно индусский стиль
Старый 14.01.2011, 13:11   #99  
TasmanianDevil is offline
TasmanianDevil
Мрачный тип
Аватар для TasmanianDevil
Злыдни
 
886 / 389 (14) ++++++
Регистрация: 24.01.2005
Адрес: Томск
Там же, в LedgerJournalTransDaily на источнике данных LedgerJournalTrans ...
Метод active() постоянно вызывает метод setFurtherPostingProtection(), который меняет возможность редактирования 7 полей (тип счета и счет, тип корр.счета и коррсчет, суммы дебет/кредит и валюту) по факту заполненности полей FurtherPostingType и FurtherPostingRecId. Вот как это делает наш неизвестный герой:
X++:
void setFurtherPostingProtection()
{
    int i;
    DictTable       dictTable = new DictTable(ledgerJournalTrans.TableId);
    FormDataObject  objectLedgerJournalTrans;
    boolean         preventEdit;
    ;

    preventEdit = ledgerJournalTrans.FurtherPostingType && ledgerJournalTrans.FurtherPostingRecId;

    for (i = 1; i <= dictTable.fieldCnt(); i++)
    {
        objectLedgerJournalTrans = ledgerJournalTrans_ds.object(dictTable.fieldCnt2Id(i));
        if (objectLedgerJournalTrans)
        {
            if (preventEdit)
            {
                switch (dictTable.fieldCnt2Id(i))
                {
                    case fieldnum(LedgerJournalTrans, AccountType),
                         fieldnum(LedgerJournalTrans, AccountNum),
                         fieldnum(LedgerJournalTrans, OffsetAccountType),
                         fieldnum(LedgerJournalTrans, OffsetAccount),
                         fieldnum(LedgerJournalTrans, AmountCurDebit),
                         fieldnum(LedgerJournalTrans, AmountCurCredit),
                         fieldnum(LedgerJournalTrans, CurrencyCode)  :
                        objectLedgerJournalTrans.allowEdit(false);
                        break;
                    default :
                        objectLedgerJournalTrans.allowEdit(true);
                }
            }
            else
            {
                objectLedgerJournalTrans.allowEdit(true);
            }
        }
    }
}
Это SYS-слой...
Есть мнение, что за такое в таком месте - надо бить ...
Наверное даже ногами и наверное даже по голове ...
__________________
Мы летаем, кружимся, нагоняем ужасы ...

Последний раз редактировалось TasmanianDevil; 14.01.2011 в 13:17.
За это сообщение автора поблагодарили: fed (3), Vadik (5).
Старый 14.01.2011, 13:26   #100  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Однозначно индусский стиль
И кто ж, как и на что их (вне привязки к национальности - скажем, "этих людей") в таком случае тестирует при найме (помню ты рассказывал как валят кандидатов не умеющих генерировать качественный (с) код). И через скольких (в среднем) людей проходит код перед тем как попадет в релиз? Если конечно это не секрет
P.S. Я не ерничаю, просто наблюдаю какой-то непонятный процесс (вернее, два - набор персонала и процесс проверки кода при переносе в релиз) и хочется разобраться
__________________
-ТСЯ или -ТЬСЯ ?
Теги
axapta, cil, d365fo, guid, rasset, uuid, uuidv7, баг

 


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

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

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