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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 21.11.2014, 16:14   #1  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,882 / 3148 (112) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от Ruff Посмотреть сообщение
AX2009, AX2012, sys слой:
X++:
final class TaxSalesInvoice extends Tax
{
    SalesCalcTax    salesFormLetter;
    ...
}
SalesCalcTax к иерархии FormLetter - никаким боком.
Аналогичные объявления в классах TaxSales, TaxPurch, TaxPurchInvoice, может еще где-то...
Наверно я чего-то не догоняю, но эта невинная "шутка" стоила битого часа впустую потерянного времени
да лана, чо вы придираетесь.

Вон в самом \Classes\ClassFactory\queryRunClass
написали :
X++:
public QueryRun queryRunClass(Args _args)
{
    SysQueryRun ret;

    ret = new SysQueryRun(_args);

    return ret;
}
в параметрах объявлен тип args а приходит Query !
Версия - любая.
За это сообщение автора поблагодарили: macklakov (1), AraraT® (4), Товарищ ♂uatr (1).
Старый 15.12.2014, 10:38   #2  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
\Forms\EmplAdvLineCreate_RU\Data Sources\EmplTrans\Methods\init

X++:
qbdsTransCredit.addRange(fieldNum(EmplTrans_RU, AmountCur)).value("@GLS111254");
прелесть какая..
__________________
-ТСЯ или -ТЬСЯ ?
Старый 03.04.2015, 14:45   #3  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,895 / 5650 (194) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
DAX2012 (проверялось для DAX2012R3CU8, но было и раньше). Из непонятных соображений, разработчики запретили маркировку складских проводок по номенклатуре со стандартной себестоимостью. (Новым вариантом стандартной, а не fixed receipt price). В методе tmpInventTransMark:: packTmpMark(), который собственно и строит временную таблицу кандидатов на маркировку, есть следующий замечательный код:
X++:
         includeAll = inventTable.modelGroup().inventModelType().isSettled();

        InventDimGroupSetup::newInventTable(inventTable).inventDimParmActiveFinancialInventory(inventDimParmFinancial);

        while select forceplaceholders inventTrans
            where inventTrans.ValueOpen                     == InventTransOpen::Yes
               && inventTrans.TransChildType                == InventTransChildType::None
               && inventTrans.PackingSlipReturned           == NoYes::No
               && (inventTrans.MarkingRefInventTransOrigin  || includeAll)
               && (!inventTrans.MarkingRefInventTransOrigin
                 || inventTrans.MarkingRefInventTransOrigin == _inventTransOrigin.RecId     // marked with reference
                 || inventTrans.InventTransOrigin           == _inventTransOrigin.RecId)    // is reference itself
            join inventTransOrigin
            where inventTransOrigin.ItemId                  == _inventTransOrigin.ItemId
               && inventTransOrigin.RecId                   == inventTrans.InventTransOrigin
            #inventDimExistsJoin(inventTrans.inventDimId, inventDim, _inventDimCriteria, inventDimParmFinancial)
Если номенклатура использует стандартную себестоимость, то includeAll==false. В этом случае показываются только записи уже примаркированные к текущей складской проводке. Таким образом, можно снять уже существующую маркировку (получившуюся, например, в результате утверждения спланированных заказов), но невозможно примаркировать чего-нибудь к отмаркированной складской проводке. Если первую строчку закомментировать, и поставить вместо нее includeAll=true, то проблема решается.

Во первых, похоже что авторы кода забыли что маркировка используется не только для себестоимости, но и для резервирования в заказанных и манипуляций со сводным планом. (Собственно мы и налетели на эту проблему, после того как я консам посоветовал менять маркировку чтобы повлиять на покрытие в сводном плане).
Во вторых - даже для рассчета себестоимости по модели стандартной себестоимости, маркировка безвредна. В момент вычисления мгновенной себестоимости списания, маркировка игнорируется; Закрытие и пересчет аналогично игнорируют номенклатуру со стандартной себестоимости.

Ну и вообще - уже очень и очень давно напрашивается разделение маркировки для себестоимости и маркировки для сводного/планирования.
Старый 03.04.2015, 14:53   #4  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2155 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Последнее надо бы на Connect и всем миром за это проголосовать.
__________________
Ivanhoe as is..
Старый 22.04.2015, 03:36   #5  
macklakov is offline
macklakov
NavAx
Аватар для macklakov
 
2,129 / 916 (35) +++++++
Регистрация: 03.04.2002
DAX2012R3CU8, \Classes\SubledgerJournalizer\validateSubledgerJournalAccountEntry

X++:
mainAccount = null; // consider adding a cache

if (mainAccount == null)
{          
...
}
__________________
Isn't it nice when things just work?
Старый 22.04.2015, 10:46   #6  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
870 / 637 (23) +++++++
Регистрация: 14.10.2004
AX3.0 SP4
Данный код при компиляции вызывает ошибку "Переполнение во внутреннем стеке компилятора". Помогает разбиение на несколько маленьких контейнеров, которые надо сложить между собой, чтобы получить большой контейнер. До 48 элементов компилятор проглатывает, на 49-м спотыкается.
X++:
//какие поля копировать из плательщика в филиалы
static container fieldsToCopy()
{
    ;
    return
    [
        fieldNum(CustTable, INN_RU),
        fieldNum(CustTable, CodeOKDP_RU),
        fieldNum(CustTable, CodeOKPO_RU),
        fieldNum(CustTable, OKATO_RU),
        fieldNum(CustTable, KPP_RU),
        fieldNum(CustTable, GM_OKONH),
        fieldNum(CustTable, GM_SortIncorporatedId),
        fieldNum(CustTable, GM_Partner_Vend),
        fieldNum(CustTable, GM_Partner_Producer),
        fieldNum(CustTable, GM_Partner_Carrier),
        fieldNum(CustTable, GM_Partner_Cust),
        fieldNum(CustTable, GM_IsInventLocation),
        fieldNum(CustTable, CustItemGroupId),
        fieldNum(CustTable, GM_UnionPartnerPriceId),
        fieldNum(CustTable, GM_UnionStatusGroupId),
        fieldNum(CustTable, Address),
        fieldNum(CustTable, GM_ManagerCustomerId),
        fieldNum(CustTable, zBankAccountId),
        fieldNum(CustTable, zPrintAccount),
        fieldNum(CustTable, PaymTermId),
        fieldNum(CustTable, PaymDayId),
        fieldNum(CustTable, BankAccount),
        fieldNum(CustTable, TaxItemGroupPrepayment),
        fieldNum(CustTable, TaxGroupPrepayment),
        fieldNum(CustTable, PostingProfilePrepayment),
        fieldNum(CustTable, GM_VolumePurchId),
        fieldNum(CustTable, GM_PriorityCustomerId),
        fieldNum(CustTable, GM_CalcInventLocation),
        fieldNum(CustTable, GM_DeliveryType),
        fieldNum(CustTable, GM_IsVat),
        fieldNum(CustTable, GM_AddMarking),
        fieldNum(CustTable, GM_PrintCertificate),
        fieldNum(CustTable, zCFOId),
        fieldNum(CustTable, GM_FactureNotMake),
        fieldNum(CustTable, zPartnerStatus),
        fieldNum(CustTable, GM_VendNumNet),
        fieldNum(CustTable, zSalesPart),
        fieldNum(CustTable, zFactureCorrection),
        fieldNum(CustTable, zFactureAutoPrintChanged),
        fieldNum(CustTable, zFactureNotAutoPrintReturnChanged),
        fieldNum(CustTable, zFactureKeepVersions),
        fieldNum(CustTable, zInventPalletTypeCust),
        fieldNum(CustTable, zCPPCheckEnable),
        fieldNum(CustTable, zOGRN),
        fieldNum(CustTable, zRegistrationDate),
        fieldNum(CustTable, zRegistrationPlace),
        fieldNum(CustTable, zPrintReturnForClient),
        fieldNum(CustTable, Blocked),
        fieldNum(CustTable, zJunkByDeliveryPrice)
    ];
}

Последний раз редактировалось Ace of Database; 22.04.2015 в 10:50.
Старый 22.04.2015, 11:30   #7  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,429 / 1772 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Ограничено ли количество элементов в контейнере?
За это сообщение автора поблагодарили: mazzy (2), Ace of Database (1).
Старый 14.05.2015, 14:23   #8  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5788 (200) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
AX 2012 R2 CU7, \Classes\LedgerUtils_RU\createLedgerTransStorno_RU
X++:
/// Creates storno ledger transactions based on _transDate, _voucher parameters.
public static void createLedgerTransStorno_RU(
    LedgerVoucherObject                _voucherObject,
    TransDate                          _transDate,
    Voucher                            _voucher,
    TaxTransGeneralJournalAccountEntry _taxLinks          = null,
    LedgerPostingType                  _ledgerPostingType = LedgerPostingType::None)
// ... 
while select RecId from localSubledgerVoucherGeneralJournalEntry
where localSubledgerVoucherGeneralJournalEntry.Voucher              == _voucher   &&
      localSubledgerVoucherGeneralJournalEntry.VoucherDataAreaId    == curext()   &&
      localSubledgerVoucherGeneralJournalEntry.AccountingDate       == _transDate
join RecId, PostingLayer, JournalCategory from localGeneralJournalEntry
// ...
_voucherObject.parmPostingLayer(localGeneralJournalEntry.PostingLayer);
_voucherObject.parmJournalCategory(localGeneralJournalEntry.JournalCategory);
_voucherObject.addTrans(ledgerVoucherTransObject);
Вся прелесть в предпоследних двух строчках: сколько бы ни было различных типов проводок и слоев разноски для исходного ваучера, код "сторнирования" будет использовать только последнюю комбинацию. В частности, очень "веселый" результат получается, если включен двухвалютный склад: все подряд сторнирующие проводки оказываются либо на текущем слое разноски, либо на слое "Вал.склад", задваивая обороты по счетам.
За это сообщение автора поблагодарили: Logger (3).
Старый 05.06.2015, 05:41   #9  
skuull is offline
skuull
Участник
Most Valuable Professional
Лучший по профессии 2014
 
699 / 752 (27) +++++++
Регистрация: 08.03.2013
Адрес: ХЗ
Форма SysRecordInfo метод buildForm:

X++:
...
showAllFieldsForm = new Form();
showAllFieldsForm.name('_ShowAllRecords_'+dictTable.name());
...
Если имя таблици + _ShowAllRecords_ превышает 40 символов ловим ексепшен.
Правда на R3 уже починили.
За это сообщение автора поблагодарили: S.Kuskov (2).
Старый 23.06.2015, 00:52   #10  
skuull is offline
skuull
Участник
Most Valuable Professional
Лучший по профессии 2014
 
699 / 752 (27) +++++++
Регистрация: 08.03.2013
Адрес: ХЗ
Форма SystemDate метод init()
X++:
...
//Handle security explicit as the form can be started from the status bar
    switch (sysDictMenu.rights())
    {
        case AccessType::NoAccess:
            throw error("@SYS57330");

        case AccessType::View:
            element.form().design().control(identifierstr(newdate)).allowEdit(false);
            break;
    }
...
Все бы хорошо но контрола newdate на форме нет
За это сообщение автора поблагодарили: Bergman (1).
Старый 09.09.2015, 14:23   #11  
pedrozzz is offline
pedrozzz
Молодой, подающий надежды
Аватар для pedrozzz
MCBMSS
Лучший по профессии 2015
 
164 / 218 (8) ++++++
Регистрация: 18.02.2010
Адрес: Краснодар
Ax2012 R3
Класс PriceDiscSmartRounding
X++:
boolean checkRoundingRuleOK()
{
    boolean ok = true;

    infolog.clear(0);
    ...
Попробуйте использовать стандартное психологическое округление в коде и, возможно, когда-нибудь обнаружите, что все накопленные в результате работы какой-нибудь ПО сообщения в инфолог вот так просто стираются и никто ничего не видит. Убивал бы за такое
__________________
Кононов Пётр
За это сообщение автора поблагодарили: gl00mie (3).
Старый 03.07.2015, 17:07   #12  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5788 (200) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
AX 2012 R2 CU7, \Classes\InventCostItemDimSecCur_RU\updateReceiptAdjustmentTrans
X++:
if (adjustment &&
    (abs(adjustment) < inventClosing.MinTransferValue ||
     (_receipt.CostAmountSecCurAdjustment_RU - _adjustmentLater == 0 &&
      Currency::amount(_receipt.CostAmountSettledSecCur_RU / _receipt.QtySettled) == Currency::amount(costAmount / _receipt.QtySettled))))
{
    if (! this.financialOpenQty(_receipt))
    {
        this.createErrorAdjustment(_receipt, -adjustment);
    }

    adjustment  = 0;
}
Код не проверяет _receipt.QtySettled, поэтому закрытие склада в валюте иногда валится с делением на ноль
Старый 03.07.2015, 21:46   #13  
Vasiliy Petrovich is offline
Vasiliy Petrovich
Участник
 
83 / 17 (1) ++
Регистрация: 26.06.2015
WHSWorkExecuteDisplay*
как можно было купить такой код? :facepalm:
За это сообщение автора поблагодарили: kashperuk (1).
Старый 03.08.2015, 23:39   #14  
demoded is offline
demoded
Участник
 
39 / 91 (4) ++++
Регистрация: 10.03.2010
интересно, зачем могла понадобиться такая магия?
X++:
    #define.7(7)
    #define.8(8)
    #define.15(15)
нарыл в SalesTotals.classDeclaration (AX2012R2CU7). далее потом нигде этим макросы не используются
За это сообщение автора поблагодарили: S.Kuskov (2).
Старый 03.08.2015, 23:49   #15  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от demoded Посмотреть сообщение
интересно, зачем могла понадобиться такая магия?
Я думаю, у кого-то потребовали по-быстрому исправить ошибки BestPractice, а времени было не много
Старый 02.09.2015, 17:23   #16  
Link is offline
Link
Британский учённый
Аватар для Link
Соотечественники
 
568 / 513 (19) +++++++
Регистрация: 25.11.2005
Адрес: UK
Записей в блоге: 9
LogisticsAddresssCity
__________________
Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще.
Старый 09.09.2015, 12:33   #17  
Stitch_MS is offline
Stitch_MS
Участник
Аватар для Stitch_MS
Соотечественники
 
396 / 478 (16) +++++++
Регистрация: 27.02.2006
Адрес: Дания
За это сообщение автора поблагодарили: Maxim Gorbunov (2).
Старый 09.09.2015, 12:42   #18  
Link is offline
Link
Британский учённый
Аватар для Link
Соотечественники
 
568 / 513 (19) +++++++
Регистрация: 25.11.2005
Адрес: UK
Записей в блоге: 9
Цитата:
Сообщение от Stitch_MS Посмотреть сообщение
Похоже, класс для взрослых
X++:
class SysVersionControlInfo
{
#define.xxx('xxx')
}
__________________
Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще.
Старый 17.09.2015, 07:16   #19  
skuull is offline
skuull
Участник
Most Valuable Professional
Лучший по профессии 2014
 
699 / 752 (27) +++++++
Регистрация: 08.03.2013
Адрес: ХЗ
Может было уже 2012 RTM

class PriceDiscAdmCheckPost method run

X++:
    warningsFound = this.checkJournal(_acceptWarnings);
    postJournal = (warningsFound && _acceptWarnings) ||
                  !infologLine();
а в checkJournal :

X++:
        priceDiscAdmTrans.validateWrite();

        if (oldValue != infolog.num())
        {
            while (oldValue < infolog.num())
            {
                oldValue++;
                priceDiscAdmTrans.Log = priceDiscAdmTrans.Log + infolog.text(oldValue)+'\n';
                errorsFound = true;
            }
        }
Старый 07.03.2016, 10:20   #20  
skuull is offline
skuull
Участник
Most Valuable Professional
Лучший по профессии 2014
 
699 / 752 (27) +++++++
Регистрация: 08.03.2013
Адрес: ХЗ
RunBaseBatch.prepareForRun

X++:
...
            // the following if statement tests if the control is an I/O type
            // control. It would be better if there was support of static methods
            // from the controls team to do this, but there isn't, so the test is inline
            if (
                control is FormBuildButtonControl ||
                control is FormBuildCheckBoxControl ||
                control is FormBuildComboBoxControl ||
                control is FormBuildCommandButtonControl ||
                control is FormBuildDateControl ||
                control is FormBuildDateTimeControl ||
                control is FormBuildDropDialogButtonControl ||
                control is FormBuildFilterPaneControl ||
                control is FormBuildFunctionButtonControl ||
                control is FormBuildGridControl ||
                control is FormBuildGuidControl ||
                control is FormBuildHTMLControl ||
                control is FormBuildIntControl ||
                control is FormBuildInt64Control ||
                control is FormBuildListBoxControl ||
                control is FormBuildListControl ||
                control is FormBuildManagedHostControl ||
                control is FormBuildMenuButtonControl ||
                control is FormBuildProgressControl ||
                control is FormBuildRadioControl ||
                control is FormBuildRealControl ||
                control is FormBuildReferenceGroupControl ||
                control is FormBuildRichTextControl ||
                control is FormBuildSegmentedEntryControl ||
                control is FormBuildStaticTextControl ||
                control is FormBuildStringControl ||
                control is FormBuildTableControl ||
                control is FormBuildTimeControl ||
                control is FormBuildTreeControl)
            {
                return;
            }
....
Теги
axapta, cil, d365fo, guid, rasset, uuid, uuidv7, баг

 


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

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

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