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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 21.01.2020, 13:45   #421  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
592 / 278 (11) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Оптимизировал немного кастомный код в плане как производительности, так и удобочитаемости
X++:
public Boolean ppoContainerActive(InventDimGroupId _dimGroup)
{
    // > Modified by ---------- ----- (-------@----------------.com), 01-21-2020, zzz_CHG0033895_SFWrkCtrAssignToWasteCode
    InventDimSetup  inventDimSetup;

    select firstonly RecId from inventDimSetup
        where inventDimSetup.DimGroupId == _dimGroup
           && inventDimSetup.Active
           && inventDimSetup.DimFieldId == fieldnum(InventDim, AFCInventContainerId);

    return inventDimSetup.RecId != 0;
    // < Modified by ---------- ----- (-------@----------------.com), 01-21-2020, zzz_CHG0033895_SFWrkCtrAssignToWasteCode
    //InventDimGroup  inventDimGroup;
    //InventDimSetup  inventDimSetup;
    //Boolean         doContainer;
    //;
    //
    //inventDimGroup = InventDimGroup::find(_dimGroup);
    //while select inventDimSetup where inventDimSetup.dimGroupId == _dimGroup
    //{
    //    if (inventDimSetup.Active == NoYes::Yes)
    //    {
    //        if (inventDimSetup.DimFieldId == fieldnum(InventDim, afcInventContainerId))
    //        {
    //            doContainer = true;
    //        }
    //    }
    //}
    //
    //return doContainer;
    // < Modified by ---------- ----- (-------@----------------.com), 01-21-2020, zzz_CHG0033895_SFWrkCtrAssignToWasteCode
}
__________________
// no comments
За это сообщение автора поблагодарили: S.Kuskov (2).
Старый 13.03.2020, 10:15   #422  
axm2017 is offline
axm2017
Участник
 
547 / 201 (8) ++++++
Регистрация: 15.05.2017
strange russian code
X++:
            vendTrans       = this.transBuffer();
            vendTransOpen   = this.transOpenBuffer();

            while select sum(AmountMST) from vendTransOpen
                group by RefRecId
                where vendTransOpen.AccountNum  == this.AccountNum
                   && vendTransOpen.TransDate   >= _fromDate
                   && vendTransOpen.TransDate   <= _toDate
                join  vendTrans
                    where vendTrans.RecId       == vendTransOpen.RefRecId
                       && (vendTrans.Invoice    != ''
                       || (vendTrans.Invoice    == '' && vendTrans.AmountMST    < 0))
            {
                openBalanceMST += vendTransOpen.AmountMST;
            }
из openInvoiceBalanceMST в табличке VendTable.

Последний раз редактировалось axm2017; 13.03.2020 в 10:17.
Старый 13.03.2020, 10:28   #423  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,003 / 1103 (41) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Цитата:
Сообщение от axm2017 Посмотреть сообщение
strange russian code
...
из openInvoiceBalanceMST в табличке VendTable.
А почему russian? Такой код и в старых версиях есть и полностью на слое SYS. russian там методы, которые баланс по договору считают.
Старый 13.03.2020, 11:15   #424  
axm2017 is offline
axm2017
Участник
 
547 / 201 (8) ++++++
Регистрация: 15.05.2017
Цитата:
Сообщение от Raven Melancholic Посмотреть сообщение
А почему russian? Такой код и в старых версиях есть и полностью на слое SYS. russian там методы, которые баланс по договору считают.
Sorry, действительно не факт что русский, видимо американо-индийский , а по договорам там кстати подобный же косяк хотя там он имеет хоть какое то объяснение-обоснование.

Последний раз редактировалось axm2017; 13.03.2020 в 11:18.
Старый 24.03.2020, 14:30   #425  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
592 / 278 (11) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Наткнулся в недрах класса JournalRunBaseBatch
X++:
public container  pack()
{
    throw error(Error::missingOverload(funcName()));
}
То же самое и для unpack().
Здесь как бы разница есть, перегружен метод, или переопределен.
Причем в Х++ сроду не было перегруженных методов.
Видимо, не сильно-то и важно. Заходим внутрь и видим:
X++:
//Do not use!
//Declare method as abstract instead or call Error::missingOverride();
#obsolete static LabelType missingOverload(str name)
{
    return Error::missingOverride(name);
}
Ладно, здесь возможно заглушку поставили на случай будущих апгрейдов в сторону нормальных языков.
Но что мешало сразу использовать missingOverride()?
Напомню, кто может не въехал.
Override - переопределение метода в рамках наследования.
Overload - перегрузка метода, т.е. в теле одного класса мы можем разместить дофига методов с одним и тем же именем, но разными параметрами. Что очень распространено в C#, Java и Delphi.
Такое чувство, что разработчики MS просто сами не сильно понимают в чем разница.
__________________
// no comments
Старый 15.06.2020, 17:15   #426  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,590 / 1757 (66) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Гендерно- и расово-нейтральный новояз прекрасен
Миниатюры
Нажмите на изображение для увеличения
Название: AllowList.GIF
Просмотров: 44
Размер:	33.2 Кб
ID:	12852  
__________________
-ТСЯ или -ТЬСЯ ?
Старый 23.12.2020, 18:44   #427  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
848 / 585 (21) +++++++
Регистрация: 14.10.2004
В этом месте у пользователя происходит раздвоение личности. Ошибки нет, но журнал не разносится.
Все-таки какая Аксапта прикольная, смеялся несколько минут над этим.

Нажмите на изображение для увеличения
Название: Скриншот 23-12-2020 184202.jpg
Просмотров: 98
Размер:	95.9 Кб
ID:	13014
__________________
Мои утилиты для Аксапты версий 3.0-2012: http://aceofdatabase.blogspot.com/
Старый 06.07.2021, 18:40   #428  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,548 / 1042 (38) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Вот не знаю, это ошибка или сознательно сделали

dax2012R3

Табличный метод PurchTable.initFromPurchAgreementHeader()


X++:
    select firstonly DeliveryPostalAddress, DeliveryName, Project, ContactPerson,
                     CashDiscountCode, MiscChargeGroup, DeliveryTerm, DeliveryMode,
                     PaymentSchedule, PaymentTerms
        from agreementHeaderDefault
        where agreementHeaderDefault.AgreementHeader == _purchAgreementHeader.RecId
        join firstonly    MethodOfPayment
                        , PaymentSpecification
                        , BuyerGroup
                        , VendorInvoiceAccount
                        , PurchasePool
            from purchAgreementHeaderDefault
            where purchAgreementHeaderDefault.PurchaseAgreementHeader == _purchAgreementHeader.RecId
        // <GEERU>
        outer join firstonly RecId,
                             InventProfileType,
                             InventProfileId,
                             VendPostingProfile,
                             vatOperationCode,
                             vatChargeSource
        from purchAgreementHeaderExt
        where purchAgreementHeaderExt.AgreementHeader == _purchAgreementHeader.RecId
        // </GEERU>
            ;
Тут проблема в том, что на таблицах AgreementHeaderDefault и PurchAgreementHeaderDefault стоит контроль на пустоту. Если все значимые поля пустые, то запись не создается или удаляется. Как следствие, если хотя бы по одной таблице записи не существует (т.е. не заполнены поля с данными), то не получим данные из остальных таблиц, даже если там что-то есть

В этом был какой-то глубокий смысл или "так получилось" ?
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
Старый 27.07.2021, 11:24   #429  
mayk is offline
mayk
Участник
Аватар для mayk
 
43 / 60 (3) ++++
Регистрация: 07.03.2008
Наткнулся на прелести обновления индексированных полей InMemory таблиц
Пример 3 разных попыток обновления

X++:
   TmpFontName tmp;    
    ;    
    //(update_recordset)
    delete_from tmp; tmp.insert();
    update_recordset tmp setting FontName = tmp.FontName + 'a';
    while select tmp {info (tmp.FontName);}
    
    //(select forupdate)
    delete_from tmp; tmp.insert();
    while select forupdate tmp{ tmp.FontName += 'a'; tmp.update(); }
    while select tmp {info (tmp.FontName);}

    //(select forupdate order)
    delete_from tmp; tmp.insert();
    while select forupdate tmp order recid{ tmp.FontName += 'a'; tmp.update(); }
    while select tmp {info (tmp.FontName);}
Что выведет джоб? Вот что:
Цитата:
Сообщение (16:16:38)
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
a
А с TempDb такой ерунды нет. Обновление выполняется лишь один раз.
За это сообщение автора поблагодарили: axm2017 (4).
Теги
axapta, cil, rasset, баг

 

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

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

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 12:44.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.