|
23.08.2016, 23:12 | #1 |
Участник
|
Можно я не про код? Спасибо.
Меня просто порадовал скриншот в технете: https://technet.microsoft.com/ru-ru/.../hh209188.aspx |
|
|
За это сообщение автора поблагодарили: Ivanhoe (3). |
24.08.2016, 10:02 | #2 |
Moderator
|
Цитата:
Сообщение от mnt_dx
Можно я не про код? Спасибо.
Меня просто порадовал скриншот в технете: https://technet.microsoft.com/ru-ru/.../hh209188.aspx |
|
24.08.2016, 11:07 | #3 |
Участник
|
Да ладно вам, просто людям было лень делать 49 скриншотов с разными языками интерфейса
|
|
25.08.2016, 11:11 | #4 |
Участник
|
Столкнулся с ошибкой выполнения запросов в базу при выполнении в CIL.
При выполнении в X++ тот же код работает корректно. Ошибка возникает при попытке выполнения запроса со связью курсором условиями типа X++: while select <table> ... exists join <table2> where <table>.<Real> == <table2>.<Real> ... В результате, запрос со связью таблиц exists join пришлось разворачивать в каскад While select и сравнивать поля в отдельной строке вне запроса.
__________________
Ален ноби, ностра алис. Что означает - если один человек построил, другой завсегда разобрать может. Последний раз редактировалось AlGol; 25.08.2016 в 11:14. |
|
06.09.2016, 21:12 | #5 |
Участник
|
Перейдите на закладку "Предложение" или "Предложение"
|
|
07.09.2016, 03:43 | #6 |
Участник
|
AX7.update1 файл webconfig
X++: <!-- ISSUE-2012-02-09-RAMESH: What's the purpose of this? -->
<machineKey decryption="AES" decryptionKey="F7FA540B4DFD82E5BB196B95D15FF81FBA5D8619B270E58E2C90FAA683C5AA02"
validation="SHA1" validationKey="BA5D8619B270E58E2C90F" /> X++: <!-- ISSUE-2012-09-02-RAMESH: Revisit for production use --> <!-- ISSUE-2012-02-28-RAMESH: Does this even work for WebHttpBinding? Will this work correctly with authentication enabled? --> <serviceMetadata httpsGetEnabled="true" /> |
|
28.09.2016, 01:29 | #7 |
Участник
|
Цитата:
Сообщение от trud
AX7.update1 файл webconfig
X++: <!-- ISSUE-2012-02-09-RAMESH: What's the purpose of this? -->
<machineKey decryption="AES" decryptionKey="F7FA540B4DFD82E5BB196B95D15FF81FBA5D8619B270E58E2C90FAA683C5AA02"
validation="SHA1" validationKey="BA5D8619B270E58E2C90F" /> X++: <!-- ISSUE-2012-09-02-RAMESH: Revisit for production use --> <!-- ISSUE-2012-02-28-RAMESH: Does this even work for WebHttpBinding? Will this work correctly with authentication enabled? --> <serviceMetadata httpsGetEnabled="true" /> Но комменты, похоже, до сих пор остались |
|
29.09.2016, 10:31 | #8 |
Участник
|
Цитата:
Точнее, в Platform Update 3 их уже не будет Магия |
|
06.12.2016, 18:31 | #9 |
Участник
|
View не понимает FirstOnly
AX2012R3
Понадобилось сделать View, в котором должна отображаться одна запись с максимальным значением определенного поля. Делаю в АОТ Query, с одним источником данных, задаю сортировку по нужному полю, в параметрах источника пишу свойство FirstOnly = Yes. Делаю в АОТ View, на основании созданного query. Открываю посмотреть что получилось - и вижу все записи таблицы. В результате разбора выяснил, что View не обращает внимания на опцию FirstOnly в Query. Пришлось делать обходной маневр в виде двух view с получением max поля и потом отфильтровывать по нему данные.
__________________
Ален ноби, ностра алис. Что означает - если один человек построил, другой завсегда разобрать может. |
|
|
За это сообщение автора поблагодарили: S.Kuskov (2). |
09.12.2016, 09:45 | #10 |
Участник
|
Цитата:
__________________
Sergey Nefedov |
|
07.02.2017, 15:22 | #11 |
Молодой, подающий надежды
|
AX 2012 R2
Десериализация структуры Struct::create(_container) в CIL, которая была упакована методом pack() в обычном исполняемом коде. Разъезжаются пары Ключ-Значение Слева на скриншоте десериализация в обычном коде (ошибок нет), справа - выполненная в CIL. Как говорится, результат на лицо. Т.е. порядок значений в структуре остался прежним, а порядок ключей изменился.
__________________
Кононов Пётр |
|
|
За это сообщение автора поблагодарили: mazzy (5), macklakov (2), Logger (3). |
07.02.2017, 15:24 | #12 |
Участник
|
Цитата:
Сообщение от pedrozzz
AX 2012 R2
Десериализация структуры Struct::create(_container) в CIL, которая была упакована методом pack() в обычном исполняемом коде. Разъезжаются пары Ключ-Значение Слева на скриншоте десериализация в обычном коде (ошибок нет), справа - выполненная в CIL. Как говорится, результат на лицо. Т.е. порядок значений в структуре остался прежним, а порядок ключей изменился. Вложение 11188 1. спасибо 2. пожалуйста, зарегистрируйте багу. лучше от лица клиента. да, регистрация - это гемор. И очень сильный гемор. но эту - зарегистрируйте. пожалуйста. и еще одно: а можно попросить у вас еще и код, который у вас приводит к подобному "результату"? |
|
22.02.2017, 21:30 | #13 |
Читатель
|
AX2012 R3
RetailCDXSeedDataSubJob.createSubJob() - subjob.Enabled всегда Yes, хотя, если включить Retail Essentials, часть таблиц будет выключена конф. ключом, и в дальнейшем CDX будет падать при попытке их обработки. Можно было б инициировать из dictTable.enabled(), хотя бы... Но нет, да и сам этот флаг не особо проверяется. |
|
09.09.2016, 14:02 | #14 |
Мрачный тип
|
Все версии вплоть до 2009-й (в 2012 не смотрел, скорее всего та же ситуация), российский модуль ОС , класс создания строк журнала амортизации RAssetProposalDepriciation, метод createJournalLines().
В принципе отсутствует контроль на самортизированность ОС по текущей итерации обработки запроса на картотеку, и по всем самортизированным ОС впустую (результат нулевой) прогоняется полный цикл расчета амортизации с даты последней амортизации по заданную дату формирования, что приводит к монотонному возрастанию времени формирования строк журнала со временем. Исправляется добавлением в самую первую строку метода, перед инициализацией итератора, проверки в виде : X++: if(RAssetSumCalc_Trans::newAssetPeriod(rAssetTable.AccountNum, _assetStandardId, datestartmth(runDate) - 1).netBookValue() == 0) return;
__________________
Мы летаем, кружимся, нагоняем ужасы ... |
|
|
За это сообщение автора поблагодарили: gl00mie (3), S.Kuskov (5). |
13.09.2016, 22:47 | #15 |
Мрачный тип
|
Таки да, та же самая петрушка до 2012 R3
__________________
Мы летаем, кружимся, нагоняем ужасы ... |
|
25.11.2016, 11:55 | #16 |
Участник
|
Обратите внимание на очень неприятную особенность работы catch:
https://blogs.msdn.microsoft.com/mfp...4/x-the-catch/
__________________
Ален ноби, ностра алис. Что означает - если один человек построил, другой завсегда разобрать может. |
|
25.11.2016, 11:56 | #17 |
Участник
|
Это скорее неприятная особенность определенного способа обработки исключений, который практикуют некоторые отступники от Best Practices
|
|
02.02.2017, 07:58 | #18 |
Участник
|
Из индусского - типа все бест-практис соблюдены
X++: if (custInvoiceJour.company() == "@LIN103") { if(CustInvoiceJour.CurrencyCode == "@LIN63") { bankName = strfmt("%1 %2","@LIN73","@LIN104"); } |
|
|
За это сообщение автора поблагодарили: macklakov (1), Vadik (1), 6a6kin (1). |
05.02.2017, 12:42 | #19 |
Administrator
|
AX2012 R3 CU12 (6.3.5000.133)
(встречается начиная с AX2012 R3 RTM) \Data Dictionary\Tables\WHSWorkTable\Methods\lockUnlockWork X++: public static void lockUnlockWork(WHSWorkId _workId, WHSUserId _userId) { WHSWorkLine workLine; WHSDimTracking dimTracking; ... #localmacro.WorkLineFieldsToResetStatus WorkStatus = WHSWorkStatus::Open, UserId = '', WorkInProcessUTCDateTime = utcDateTimeNull(), AskForNewLicensePlate = NoYes::No #endmacro #localmacro.WorkLineStatusInProcessButNotStarted workLine.WorkId == _workId && workLine.WorkStatus == WHSWorkStatus::InProcess && workLine.QtyWork == workLine.QtyRemain #endmacro ... // If we already have some work finished, we only reset the InProcess work lines, // where no actual work has been performed so far update_recordset workLine setting #WorkLineFieldsToResetStatus where #WorkLineStatusInProcessButNotStarted; if (workTable.isWorkTransTypeOutbound()) { delete_from dimTracking exists join workLine where #WorkLineStatusInProcessButNotStarted && dimTracking.WorkId == workLine.WorkId && dimTracking.LineNum == workLine.LineNum && dimTracking.Processed == NoYes::No; } ... } Программиста явно подвело чрезмерное увлечение макросами. Если макросы развернуть, ошибка становится очевидной: X++: update_recordset workLine setting WorkStatus = WHSWorkStatus::Open, // <-- (1) UserId = '', WorkInProcessUTCDateTime = utcDateTimeNull(), AskForNewLicensePlate = NoYes::No where workLine.WorkId == _workId && workLine.WorkStatus == WHSWorkStatus::InProcess // <-- (2) && workLine.QtyWork == workLine.QtyRemain; if (workTable.isWorkTransTypeOutbound()) { delete_from dimTracking exists join workLine where workLine.WorkId == _workId && workLine.WorkStatus == WHSWorkStatus::InProcess // <-- (3) && workLine.QtyWork == workLine.QtyRemain && dimTracking.WorkId == workLine.WorkId && dimTracking.LineNum == workLine.LineNum && dimTracking.Processed == NoYes::No; }
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
|
За это сообщение автора поблагодарили: mazzy (2), kashperuk (5), gl00mie (3). |
06.02.2017, 15:33 | #20 |
Участник
|
Наткнулся на ошибку, полез смотреть откуда ноги растут, оказалось так всегда было, в смысле в SYS слое такой код.
AX 2009, EmplTable form, datasource EmplTable write(): X++: public void write() { ..... ttsbegin; ...... if (emplTable.PartyId && dirPartyTable.Name && !DirPartyTable::exist(emplTable.PartyId)) { ....... if (dirPartyTable.validateWrite()) { // Create a new DirPartyTable row. dirPartyTable.write(); lastNewUnusedId = ""; } else { // Abort the transaction. ttsabort; } } else if (emplTable.PartyId && dirPartyTable.Name && dirPartyTableChanged && DirPartyTable::exist(emplTable.PartyId)) { if (dirPartyTable.validateWrite()) { // Update the existing DirPartyTable row. dirPartyTable.write(); } else { // Abort the transaction. ttsabort; } } super(); ..... ttscommit; } Интересно, куда этот код разползся в следующих версиях и выжил ли в AX 7... |
|