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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 18.07.2014, 19:38   #161  
skuull is offline
skuull
Участник
Most Valuable Professional
Лучший по профессии 2014
 
700 / 752 (27) +++++++
Регистрация: 08.03.2013
Адрес: ХЗ
X++:
//First of all, I'd like to appologise to whoever is going to maintain this code.
    //It was originally created for the Loan management system (and is works perfectly for that), but
    //because of time constraints this class will also be used for investment register
    //- which has never been properly spec'ed.
    //So allot of things are being thrown to the AxnLRCreateJournals class to that class's main method
    //to make it work for investment register.
    //Again, I am sorry - CL
Вот такое вот решение продают люди
За это сообщение автора поблагодарили: Logger (1).
Старый 28.07.2014, 17:21   #162  
skuull is offline
skuull
Участник
Most Valuable Professional
Лучший по профессии 2014
 
700 / 752 (27) +++++++
Регистрация: 08.03.2013
Адрес: ХЗ
X++:
// Calculate the number of years and the number
for (monthCounter = month; monthCounter > 12; monthCounter -= 12)
{
    yr += 1;
}
За это сообщение автора поблагодарили: mazzy (2).
Старый 29.07.2014, 14:47   #163  
user_ax is offline
user_ax
Участник
Аватар для user_ax
 
599 / 39 (3) +++
Регистрация: 07.10.2012
Адрес: ZP
skuull, эта пять!
Старый 29.07.2014, 17:36   #164  
skuull is offline
skuull
Участник
Most Valuable Professional
Лучший по профессии 2014
 
700 / 752 (27) +++++++
Регистрация: 08.03.2013
Адрес: ХЗ
Цитата:
Сообщение от user_ax Посмотреть сообщение
skuull, эта пять!
Вам смешно, а я каждый день нахожу что-то такое и плачу

И вот немного от русских интерграторов

X++:
   return "pld"; // грязный хак
Старый 30.07.2014, 05:53   #165  
macklakov is offline
macklakov
NavAx
Аватар для macklakov
 
2,232 / 975 (37) +++++++
Регистрация: 03.04.2002
Цитата:
Сообщение от skuull Посмотреть сообщение
Вам смешно, а я каждый день нахожу что-то такое и плачу

И вот немного от русских интерграторов

X++:
   return "pld"; // грязный хак
Так ты посмотри, что этот код делает. Судя по аббревиатуре, это заглушка для польской локализации. Насколько помню, там так грязно было, что по другому никак.
__________________
Isn't it nice when things just work?
Старый 30.07.2014, 08:09   #166  
skuull is offline
skuull
Участник
Most Valuable Professional
Лучший по профессии 2014
 
700 / 752 (27) +++++++
Регистрация: 08.03.2013
Адрес: ХЗ
Это имя компании
За это сообщение автора поблагодарили: macklakov (1).
Старый 28.10.2014, 18:46   #167  
online
Stitch_MS
Участник
Аватар для Stitch_MS
Соотечественники
 
397 / 478 (16) +++++++
Регистрация: 27.02.2006
Адрес: Дания
Цитата:
hi there

Thanks for reading my message. I have no IT backgroung and only CAN use email and web surfing.

I want to become ms dynamics ax consultant ( not programmer). So anyone kind enough to tell me the study route from scratch to become ms dynamics ax consultant. Also how long it can be take without any IT background. THANKS.
http://community.dynamics.com/ax/f/33/t/143365.aspx
Старый 21.11.2014, 15:55   #168  
Ruff is offline
Ruff
Дмитрий Ерин
Аватар для Ruff
1C
 
475 / 396 (14) ++++++
Регистрация: 18.09.2003
Адрес: Тула
AX2009, AX2012, sys слой:
X++:
final class TaxSalesInvoice extends Tax
{
    SalesCalcTax    salesFormLetter;
    ...
}
SalesCalcTax к иерархии FormLetter - никаким боком.
Аналогичные объявления в классах TaxSales, TaxPurch, TaxPurchInvoice, может еще где-то...
Наверно я чего-то не догоняю, но эта невинная "шутка" стоила битого часа впустую потерянного времени
__________________
За это сообщение автора поблагодарили: macklakov (1), Logger (2), ivas (3).
Старый 21.11.2014, 16:14   #169  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,940 / 3229 (115) ++++++++++
Регистрация: 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   #170  
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");
прелесть какая..
__________________
-ТСЯ или -ТЬСЯ ?
Старый 23.02.2015, 21:12   #171  
b_nosoff is offline
b_nosoff
Читатель
Аватар для b_nosoff
MCP
MCBMSS
 
197 / 143 (5) +++++
Регистрация: 01.12.2004
Адрес: Msk
Записей в блоге: 13
Thumbs up Тестировали норм
\Data Dictionary\Maps\CustVendTrans\exchRateCurToMst

X++:
public ExchRate exchRateCurToMst()
{
    ExchRate combinedRate;
    CustTrans custTrans;
    VendTrans vendTrans;

    switch (this.TableId)
    {
        case tableNum(CustTrans):
            combinedRate = custTrans.exchRateCurToMst();
            break;
        case tableNum(VendTrans):
            combinedRate = vendTrans.exchRateCurToMst();
            break;
        default:
            Debug::assert(false);
    }

    return combinedRate;
}
Хорошо, хоть, вроде, нигде не использовали.
__________________
Axapta non erubescit

Последний раз редактировалось b_nosoff; 23.02.2015 в 21:16.
Старый 10.03.2015, 17:30   #172  
pedrozzz is offline
pedrozzz
Молодой, подающий надежды
Аватар для pedrozzz
MCBMSS
Лучший по профессии 2015
 
164 / 218 (8) ++++++
Регистрация: 18.02.2010
Адрес: Краснодар
2012 R3 (думаю в прошлых версиях аналогично)
Если делать лукап по временной таблице на основе постоянной и при этом не вставить никаких записей во времянку, что-то типа
X++:
    InventTable                     inventTableTmp;
    SysTableLookup                  sysTableLookup  = SysTableLookup::newParameters(tableNum(InventTable), _ctrl);

    inventTableTmp.setTmp()
/*
заполняем времянку по какому-то алгоритму, но записей не нашли и ничего не вставили
*/
    sysTableLookup.addLookupfield(fieldNum(InventTable, ItemId));
    sysTableLookup.parmTmpBuffer(inventTableTmp);
    sysTableLookup.performFormLookup();
то вместо ожидаемого пустого лукапа увидим в гриде все записи постоянной таблицы
Берем напильник, чиним класс SysTableLookupBase. Заводим глобальную переменную boolean useTmpBuffer
X++:
Common parmTmpBuffer(Common _buffer = tmpBuffer)
{
    tmpBuffer = _buffer;

    //-->
    if (! prmisDefault(_buffer))
    {
        useTmpBuffer = true;
    }
    //<--

    return tmpBuffer;
}
protected FormRun formRun()
{
    //...строка 55
    //-->
    //if(useLookupValue && !tmpBuffer)
    if(useLookupValue && ! tmpBuffer && ! useTmpBuffer)
    //<--
    {
    }
    //...строка 117
    //-->
    //if (tmpBuffer)
    if (tmpBuffer || useTmpBuffer)
    //<--
}
__________________
Кононов Пётр
За это сообщение автора поблагодарили: gl00mie (5), Kabardian (4).
Старый 10.03.2015, 20:28   #173  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,438 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
было уже Проблема с временной таблице в lookup
За это сообщение автора поблагодарили: pedrozzz (4).
Старый 03.04.2015, 14:45   #174  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,907 / 5717 (196) ++++++++++
Регистрация: 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   #175  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Последнее надо бы на Connect и всем миром за это проголосовать.
__________________
Ivanhoe as is..
Старый 22.04.2015, 03:36   #176  
macklakov is offline
macklakov
NavAx
Аватар для macklakov
 
2,232 / 975 (37) +++++++
Регистрация: 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   #177  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
873 / 649 (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   #178  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,438 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Ограничено ли количество элементов в контейнере?
За это сообщение автора поблагодарили: mazzy (2), Ace of Database (1).
Старый 14.05.2015, 14:23   #179  
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, \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   #180  
skuull is offline
skuull
Участник
Most Valuable Professional
Лучший по профессии 2014
 
700 / 752 (27) +++++++
Регистрация: 08.03.2013
Адрес: ХЗ
Форма SysRecordInfo метод buildForm:

X++:
...
showAllFieldsForm = new Form();
showAllFieldsForm.name('_ShowAllRecords_'+dictTable.name());
...
Если имя таблици + _ShowAllRecords_ превышает 40 символов ловим ексепшен.
Правда на R3 уже починили.
За это сообщение автора поблагодарили: S.Kuskov (2).
Теги
axapta, cil, d365fo, guid, rasset, uuid, uuidv7, баг

 


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

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

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