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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 04.12.2013, 14:57   #141  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,438 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от Zabr Посмотреть сообщение
Некомпилирующийся код не станет компилироваться от того, что его поставят под условие "if (0)".
Именно так. Но теоретически можно представить представить себе ситуацию когда не содержащий ошибок компиляции код таким образом скрывается от выполнения, но не скрывается от компиляции. Например, для того что бы работали перекрестные ссылки, или просто чтобы бы при очередной компиляции проверять не появились ли ошибки в этом коде, связанные с изменениями в других объектах.
За это сообщение автора поблагодарили: mazzy (2).
Старый 09.12.2013, 21:50   #142  
RVS is offline
RVS
Сенбернар
Аватар для RVS
Злыдни
 
696 / 130 (6) +++++
Регистрация: 27.02.2003
Адрес: Королев МО
Дивный код попался...

X++:
    TNow=TimeNow();
    super();
    switch(true)
    {

        case (23*3600 + 55*60 <tnow ):
            infolog.shutDown(true);
            return;
        break;
    }
... из рабочей Аксы.. она там вся почти такая. И ведь - все-таки работает ))
__________________
Best Regards,
Roman
Старый 29.01.2014, 19:08   #143  
online
Stitch_MS
Участник
Аватар для Stitch_MS
Соотечественники
 
397 / 478 (16) +++++++
Регистрация: 27.02.2006
Адрес: Дания
Коллега нашел: AX 2012 CU5, \Classes\RunBaseBatch\canGoBatch

X++:
/// <summary>
///    Returns false
/// </summary>
/// <returns>
///    false
/// </returns>
/// <remarks>
///    This method must be in this class because it is called from the dialogRunbase class.
/// </remarks>
/*MAN
The method must return false when the class is not batchable.
*/
public boolean canGoBatch()
{
    return true;
}
Старый 31.01.2014, 10:47   #144  
user_ax is offline
user_ax
Участник
Аватар для user_ax
 
599 / 39 (3) +++
Регистрация: 07.10.2012
Адрес: ZP
Цитата:
Сообщение от Stitch_MS Посмотреть сообщение
Коллега нашел: AX 2012 CU5, \Classes\RunBaseBatch\canGoBatch
Спасибо, кэп
Старый 01.02.2014, 13:25   #145  
lvan is offline
lvan
Участник
Аватар для lvan
Лучший по профессии 2014
 
858 / 82 (4) ++++
Регистрация: 15.04.2011
Записей в блоге: 1
небось индусам отдавали на аутсорс комменты писать
Старый 19.02.2014, 03:42   #146  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
В последнее время много приходится работать с шаблонами Sure Step. Русская версия с руководством для руководителя проекта вызывает восторг, просто по полу катался:
Цитата:
Работа, связанная с любым изменением, начинается только после согласования расчетной стоимости и воздействия изменения на график посредством подписания рукописной формы запроса на изменение назначенными менеджерами проекта обеих сторон.
... подписание желательно кровью.
Старый 19.02.2014, 06:09   #147  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
А мне стиль напомнил http://m.youtube.com/watch?v=e-qDHM0...%3De-qDHM0slB0
Старый 20.02.2014, 20:06   #148  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
X++:
 .....
        catch (Exception::DuplicateKeyException)
        {
            // Prevent an endless loop
            if (tryCount < 5)
            {
                retry;
            }
            else
            {
                throw Exception::DuplicateKeyExceptionNotRecovered;
            }
        }
Интересно, на что они надеются, вызывая здесь Retry?
Старый 20.02.2014, 22:23   #149  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Может быть, на то, что в это время в другой сессии кто-нить удалит запись с таким же набором значений полей, входящих в уникальные индексы
Старый 20.02.2014, 22:55   #150  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Интересно, на что они надеются, вызывая здесь Retry?
Варианты
  • Есть обработка дубликатов в catch секции
  • Код вырван из контекста (приведен не полностью)
  • Действительно ерунда

Так как SERIALIZABLE уровень изоляции не используется, даже при использовании конструкций вида

X++:
ttsbegin;

if (exists())
{
    doSomethingBeforeUpdate();
    update();
}
else
{    
    doSomethingBeforeInsert();
    insert();
}

ttscommit;
в Create / Update сценарии в принципе не исключен вариант создания дубликата другим процесом во время doSomethingBeforeInsert(), так что в следуюший retry блок пойдет по "правильной" (update) ветке. Ну а если количество таких "промахов" превышает пороговое значение (в этом случае - 5) - наверное есть какие-то проблемы с логикой и пора признаться - "не шмогла". Как-то так
__________________
-ТСЯ или -ТЬСЯ ?
За это сообщение автора поблагодарили: gl00mie (2).
Старый 21.02.2014, 20:36   #151  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от Vadik Посмотреть сообщение
Варианты
  • Есть обработка дубликатов в catch секции
  • Код вырван из контекста (приведен не полностью)
  • Действительно ерунда

Так как SERIALIZABLE уровень изоляции не используется, даже при использовании конструкций вида

X++:
ttsbegin;

if (exists())
{
    doSomethingBeforeUpdate();
    update();
}
else
{    
    doSomethingBeforeInsert();
    insert();
}

ttscommit;
в Create / Update сценарии в принципе не исключен вариант создания дубликата другим процесом во время doSomethingBeforeInsert(), так что в следуюший retry блок пойдет по "правильной" (update) ветке. Ну а если количество таких "промахов" превышает пороговое значение (в этом случае - 5) - наверное есть какие-то проблемы с логикой и пора признаться - "не шмогла". Как-то так
Кстати там именно такого плана код был, насколько мне сказали сегодня. (код не мой, я просто разместил объяву )
Старый 28.02.2014, 10:26   #152  
demoded is offline
demoded
Участник
 
39 / 91 (4) ++++
Регистрация: 10.03.2010
обновление приложения слоем...
За это сообщение автора поблагодарили: mazzy (2), belugin (-2), Logger (2), lev (2).
Старый 26.03.2014, 19:24   #153  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Приложение AX 2012 R2 CU7 (6.2.1000.4051), при активации ключа Retail на формах заказов на продажу и заказов на покупку появляется кнопка "Добавить продукты", открывающая форму создания и изменения строк заказа на основе продуктов с возможностью фильтрации последних по каталогу. Там используется времяночка TmpRetailProductsToAdd, по данным которой при закрытии формы собственно создаются и изменияются строки заказа. Разработчикам пришло в голову, что пользователи могут на этой форме поменять не только количество, но и аналитики хранения/отслеживания номенклатуры, поэтому они завели "фиктивный" FormDS на базе InventDim (разумеется, запретив сохранять что-либо через него), а на сохранение времяночки повесили такой чудо-код (\Forms\RetailAddItems\Data Sources\TmpInventTable\Methods\write):
X++:
public void write()
{
    InventDim   inventDimLocal;

    inventDimLocal.ConfigId         = inventDim.ConfigId;
    inventDimLocal.InventColorId    = inventDim.InventColorId;
    inventDimLocal.InventSizeId     = inventDim.InventSizeId;
    inventDimLocal.InventStyleId    = inventDim.InventStyleId;
    inventDimLocal.InventSiteId     = inventDim.InventSiteId;
    inventDimLocal.InventLocationId = inventDim.InventLocationId;
    inventDimLocal.InventBatchId    = inventDim.InventBatchId;
    inventDimLocal.wmsLocationId    = inventDim.wmsLocationId;
    inventDimLocal.wmsPalletId      = inventDim.wmsPalletId;
    inventDimLocal.inventSerialId   = InventDim.inventSerialId;
  
    tmpInventTable.InventDim = InventDim::findOrCreate(inventDimLocal).InventDimId;

    super();
}
Разумеется, им было невдомек, что локализаторы в других странах, да и просто внедренцы нет-нет да и добавляют новые аналитики в InventDim
За это сообщение автора поблагодарили: belugin (5), S.Kuskov (2).
Старый 14.05.2014, 20:43   #154  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Приложение AX 2012 R2 CU7 (6.2.1000.4051), интересно, при каком параде планет здесь должен будет отработать бразильский функционал?..
\Data Dictionary\Tables\InventTransferTable\Methods\Update
X++:
// <GEERU>
public void update()
{
    #ISOCountryRegionCodes
    if (SysCountryRegionCode::isLegalEntityInCountryRegion([#isoRU]))
    {
        ttsbegin;
        this.setInventProfileId_RU();
        this.setInventProfileIdTo_RU();
        this.updateLinesInventProfile_RU();
        super();
        // <GBR>
        if (BrazilParameters::isEnabled())
        {
            this.SysExtensionSerializerMap::postUpdate();
        }
        // </GBR>
        ttscommit;
    }
    else
    {
        super();
    }
}
// </GEERU>
\Data Dictionary\Tables\BrazilParameters\Methods\isEnabled
X++:
public static boolean isEnabled()
{
    #ISOCountryRegionCodes
    return SysCountryRegionCode::isLegalEntityInCountryRegion([#isoBR]);
}
За это сообщение автора поблагодарили: kashperuk (5).
Старый 15.05.2014, 16:38   #155  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Русская локализация R3
Нажмите на изображение для увеличения
Название: AAK.PNG
Просмотров: 242
Размер:	25.0 Кб
ID:	8863

Каждый раз, когда в русской компании натыкаешься на эти пункты меню, это вызывает неподдельное веселье аудитории. Нравится глубина проработки этой важной для страны темы: целый подмодуль "Alcohol*", включая журнал ежедневного потребления Alcohol Daily Journal, полная интеграция.

Последний раз редактировалось EVGL; 15.05.2014 в 16:54.
Старый 15.05.2014, 17:08   #156  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Угу, только участникам рынка и автоматизаторам (конечным) не смешно Есть слухи, что надо будет каждую продажу сразу регистрировать в единой гос. БД.
__________________
Ivanhoe as is..
Старый 16.05.2014, 18:01   #157  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от gl00mie Посмотреть сообщение
Приложение AX 2012 R2 CU7 (6.2.1000.4051), интересно, при каком параде планет здесь должен будет отработать бразильский функционал?..
\Data Dictionary\Tables\InventTransferTable\Methods\Update
X++:
// <GEERU>
public void update()
{
    #ISOCountryRegionCodes
    if (SysCountryRegionCode::isLegalEntityInCountryRegion([#isoRU]))
    {
        ttsbegin;
        this.setInventProfileId_RU();
        this.setInventProfileIdTo_RU();
        this.updateLinesInventProfile_RU();
        super();
        // <GBR>
        if (BrazilParameters::isEnabled())
        {
            this.SysExtensionSerializerMap::postUpdate();
        }
        // </GBR>
        ttscommit;
    }
    else
    {
        super();
    }
}
// </GEERU>
\Data Dictionary\Tables\BrazilParameters\Methods\isEnabled
X++:
public static boolean isEnabled()
{
    #ISOCountryRegionCodes
    return SysCountryRegionCode::isLegalEntityInCountryRegion([#isoBR]);
}

В Бразилию сообщил, и уже сегодня пофиксили.
Старый 10.06.2014, 00:29   #158  
Cardagant is offline
Cardagant
Участник
 
317 / 54 (2) ++++
Регистрация: 11.10.2011
Доброго времени суток!

Наткнулся на мелкий баг, решил выложить, кто хочет, исправьте

Заглянул в DAX 2009, Axapta 3.0, код аналогичен. В 2012й похоже уже всё красиво.

Форма ProdParameters, метод numberSeqPostInit()

X++:
NumberSeqReference      numberSeqReferenceProd;
NumberSeqReference      numberSeqReferenceRoute;
;
numberSeqReferenceProd  = ProdParameters::numberSeqReference();
numberSeqReferenceRoute = RouteParameters::numberSeqReference(); // инициализуется класс обработчик номерной серии для маршрутов

numberSequenceReference_ds.object(fieldnum(NumberSequenceReference, AllowSameAs)).visible(
    numberSeqReferenceProd.sameAsActive() || numberSeqReferenceProd.sameAsActive()); // но здесь почему-то используется только экзменпляр Prod'а, а Route в проверке не участвует
ctrlLabelSameAs.visible(numberSeqReferenceProd.sameAsActive() || numberSeqReferenceProd.sameAsActive()); // и здесь тоже

Последний раз редактировалось Cardagant; 10.06.2014 в 00:45.
За это сообщение автора поблагодарили: S.Kuskov (1).
Старый 10.06.2014, 20:51   #159  
pedrozzz is offline
pedrozzz
Молодой, подающий надежды
Аватар для pedrozzz
MCBMSS
Лучший по профессии 2015
 
164 / 218 (8) ++++++
Регистрация: 18.02.2010
Адрес: Краснодар
2012 R2 CU7
В классе RunBaseQuery_RU переменная queryrun объявлена, как SysQueryRun, но в методах самого класса она инициализируется, как QueryRun
X++:
protected final void initQueryRun()
{
    ...
    query       = this.initNewQuery();
    queryrun    = new QueryRun(query);
}
X++:
public boolean unpack(container packedClass)
{
    ...
            if (packedQuery)
            {
                queryrun = new QueryRun(packedQuery);
            }
    ...
}
Если создать наследника этого класса, то из Ах он будет работать прекрасно, но стоит поставить его в пакет, как тот (пакет) будет валиться с ошибкой неправильного присваивания типа переменной. Видимо, внутри CIL эта ситуация обрабатывается иначе.
Чтобы все заработало, переменную инициализировать, как
X++:
queryrun = new SysQueryRun(...)
__________________
Кононов Пётр
За это сообщение автора поблагодарили: Ivanhoe (5), gl00mie (2), S.Kuskov (1).
Старый 15.06.2014, 19:57   #160  
SRF is offline
SRF
Участник
MCBMSS
Axapta Retail User
 
375 / 562 (19) +++++++
Регистрация: 08.08.2007
Записей в блоге: 1
AX 2012 CU7, форма SalesCopying, метод CustInvoiceTrans\upDateRemainderCache, некорректный расчет ранее возвращенного кол-ва для заказов отгруженных через функционал отложенного перехода права собственности, также ошибка есть в случае использования функционала проектов.

X++:
void upDateRemainderCache(CustInvoiceTrans _custInvoiceTrans)
{
    SalesQty qty;
    PdsCWInventQty cwQty;
    SalesLine       localSalesLine;
    // <GEERU>
    GoodsInRouteInventTransIdDelivery_RU inventTransIdDelivery_RU;
    // </GEERU>

    if (!creditNoteReturnRemainder.exists(_custInvoiceTrans.RecId))
    {
        localSalesLine = SalesLine::find(_custInvoiceTrans.InventTransId);
        [qty, cwQty] = SalesLine::pdsRemainReturnLotQtyAllCreditNote(_custInvoiceTrans.InventTransId, localSalesLine.ProjId);
        // <GEERU>
        if (SysCountryRegionCode::isLegalEntityInCountryRegion([#isoRU]))
        {
            inventTransIdDelivery_RU = _custInvoiceTrans.custInvoiceTrans_RU().InventTransIdDelivery_RU;
        }
        if (inventTransIdDelivery_RU)
        {
            qty = UnitOfMeasureConverter::convert(-SalesLine::qtyDeliveryToCreditNote_RU(inventTransIdDelivery_RU),
                                                  UnitOfMeasure::unitOfMeasureIdBySymbol(_custInvoiceTrans.inventTable().inventUnitId()),
                                                  UnitOfMeasure::unitOfMeasureIdBySymbol(_custInvoiceTrans.SalesUnit),
                                                  NoYes::Yes,
                                                  InventTable::itemProduct(_custInvoiceTrans.ItemId));

            qty = localSalesLine.type().invoicedInTotal() - qty;
        }
        // </GEERU>
        creditNoteReturnRemainder.insert(_custInvoiceTrans.RecId, qty);
        cwCreditNoteReturnRemainder.insert(_custInvoiceTrans.RecId, cwQty);
    }
}
Вместо строки
X++:
 localSalesLine = SalesLine::find(_custInvoiceTrans.InventTransId);
нужно вставить
X++:
 localSalesLine = SalesLine::findInventTransId(_custInvoiceTrans.InventTransId);
Если провалится в метод SalesLine :: pdsRemainReturnLotQtyAllCreditNote, то там тоже можно увидеть аналогичную ошибку
X++:
public server static container pdsRemainReturnLotQtyAllCreditNote(
    InventTransId   _inventTransId,
    ProjId _projId = SalesLine::find(_inventTransId).ProjId)
__________________
Sergey Nefedov
За это сообщение автора поблагодарили: gl00mie (3), S.Kuskov (1).
Теги
axapta, cil, d365fo, guid, rasset, uuid, uuidv7, баг

 

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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