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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 27.10.2018, 10:43   #1  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5788 (200) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
PurchTotals "переопределить" можно, другое дело, что это нужно делать "иногда". Подобные места все чаще приходится лечить с помощью Option 3. Disposable context, в данном случае: где-то вышле по стеку создать singleton-"флажок", а где-то ниже, скажем, в постобработчике создания PurchTotals, по флажку подпихивать класс-пустышку вместо реального класса расчета итогов. Но выглядит это все очень извратно на фоне нормальных ветвлений в коде, которые можно было делать прежде.
Старый 27.10.2018, 10:52   #2  
skuull is offline
skuull
Участник
Most Valuable Professional
Лучший по профессии 2014
 
699 / 752 (27) +++++++
Регистрация: 08.03.2013
Адрес: ХЗ
Там вообще все плохо с purchline, есть в ГЛ параметрах галка, обрабатывать сабледжер параллельно и из-за нее purchline на апдейте tax сама себя лочит...
За это сообщение автора поблагодарили: Logger (1).
Старый 20.11.2018, 15:34   #3  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
643 / 347 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
AX 2012 R3. В методе SysDictIndex.showDuplicates() неверно формируется список ORDER BY. Иначе говоря, если подсунуть индекс InventDim.DimIdx, у которого отключены некоторые поля, то неверно составленный запрос вызовет ошибку.
Вместо
X++:
stmtStr += int2str(enabledFields[i]+1);
необходимо указать непрерывную последовательность чисел:
X++:
stmtStr += int2str(i+1);
__________________
// no comments
За это сообщение автора поблагодарили: ax_mct (3).
Старый 21.11.2018, 09:44   #4  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
643 / 347 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Ну и такая же байда с ResultSet, если количество фактических полей не совпадает с описанным, выбирается getString(12) при том, что в SELECT-е участвовало всего 10 полей.
__________________
// no comments
Старый 20.12.2018, 22:07   #5  
AlexSD is offline
AlexSD
Microsoft Dynamics
Сотрудники Microsoft Dynamics
 
257 / 302 (11) ++++++
Регистрация: 14.10.2003
D365 FO
public class InventItemInventoryDimensionStorageDimConversionTaskInitiatorDelegateHandlers
{
}

В одном имени два раза использованы слова Inventory и Dimension... При Балмере такого не было...
Кто-нибудь натыкался на доку, по каким критериям оценивать таблицы с InventDimId, нужен им конвертер или нет?
За это сообщение автора поблагодарили: gl00mie (2).
Старый 14.01.2019, 10:55   #6  
axm2017 is offline
axm2017
Участник
 
1,772 / 293 (13) ++++++
Регистрация: 15.05.2017
Есть все таки в Ax какие то традиции переходящие имхо из поколение в поколения.
RunBase

X++:
public QueryRun queryRun()
    {
        return null;

    #if.never
        return QR;
    #endif
    }
И в 12 и в 365 соответственно
Старый 14.01.2019, 15:09   #7  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,283 / 3491 (123) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Хорошие традиции. Несут в себе документацию, что в этом методе надо возвращать переменную QR, определенную в ClassDeclaration наследника RunBase.
Т.е. это документирование того, как надо использовать фреймворк.
__________________
Возможно сделать все. Вопрос времени
Старый 14.01.2019, 16:36   #8  
axm2017 is offline
axm2017
Участник
 
1,772 / 293 (13) ++++++
Регистрация: 15.05.2017
Цитата:
Сообщение от sukhanchik Посмотреть сообщение
Хорошие традиции.
Хорошая традиция это писать документацию в комментариях.
Здесь же то, от чего так радуются разрабы с обычных проектов, не знающие о своем отдельном пути фреймворководства.
Старый 10.02.2019, 11:02   #9  
Stitch_MS is offline
Stitch_MS
Участник
Аватар для Stitch_MS
Соотечественники
 
396 / 478 (16) +++++++
Регистрация: 27.02.2006
Адрес: Дания
За это сообщение автора поблагодарили: mazzy (5), trud (3), db (5).
Старый 10.02.2019, 11:59   #10  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,882 / 3148 (112) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Этот код вывел 16?
Арифметика неверно считает?
Старый 10.02.2019, 12:43   #11  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Logger Посмотреть сообщение
Этот код вывел 16?
Арифметика неверно считает?
почему сразу "неверно"?
очевидно, что сейчас так записывается битовый сдвиг осьмерки влево на единицу.
__________________
полезное на axForum, github, vk, coub.
Старый 10.02.2019, 13:48   #12  
Stitch_MS is offline
Stitch_MS
Участник
Аватар для Stitch_MS
Соотечественники
 
396 / 478 (16) +++++++
Регистрация: 27.02.2006
Адрес: Дания
Цитата:
Сообщение от Logger Посмотреть сообщение
Этот код вывел 16?
Арифметика неверно считает?
При Балмере такого не было.
Старый 10.02.2019, 14:26   #13  
db is offline
db
Роман Долгополов (RDOL)
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
 
393 / 692 (24) +++++++
Регистрация: 01.04.2004
Адрес: Москва
Цитата:
Сообщение от Stitch_MS Посмотреть сообщение
При Балмере такого не было.
да ладно

вот хит на все времена Проверка на RecId
За это сообщение автора поблагодарили: trud (1), Stitch_MS (1).
Старый 10.02.2019, 14:16   #14  
db is offline
db
Роман Долгополов (RDOL)
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
 
393 / 692 (24) +++++++
Регистрация: 01.04.2004
Адрес: Москва
арифметика не при чем. проблема в реализации case с множественными значениями. если в в такой ветке нет break, то код ветки выполняется столько раз, сколько значений в списке

вот так работает нормально
X++:
    public static void main(Args _args)
    {       
        int i = 1;
        int j = 0;
 
        switch (i)
        {
            case 1:
            case 2,3,4:
                Info("!!");
                j+=8;
                break;
        }
        Info(int2Str(j));
    }
а если убрать break, то выведет 24

а вот так вообще 32:
X++:
   public static void main(Args _args)
    {       
        int i = 1;
        int j = 0;
 
        switch (i)
        {
            case 1, 2,3,4:
                Info("!!");
                j+=8;
        }
        Info(int2Str(j));
    }
где то слышал (так что может и вру) что в IL то ли отсутствует, то ли какая то особенная реализация fall-through - исполнения в switch веток case друг за другом если нет break. Вероятно здесь пытались как то реализовать стандартное X++ поведение switch на особенностях IL и малость перестарались/недосарались в случае с множественными значениями
За это сообщение автора поблагодарили: Logger (5).
Старый 14.02.2019, 10:34   #15  
AlGol is offline
AlGol
Участник
 
277 / 93 (4) ++++
Регистрация: 24.12.2001
Адрес: Тверь.
DAX 2012 R3

При переименовании кода складского журнала через паспорт записи не меняется код журнала в InventTransOriginJournalTrans.InventJournalId и в InventTransOrigin.ReferenceId.

В результате, разнести нормально такой журнал не получается.
Плюс - удаление такого журнала оставляет складские проводки Заказано в базе, хотя строки журнала удаляются.
__________________
Ален ноби, ностра алис.
Что означает - если один человек построил, другой завсегда разобрать может.
Старый 14.02.2019, 10:52   #16  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2155 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Ну т.е. по факту WTF в данном случае, что эту функцию смены кода оставили. Реально ей пользоваться можно практически никогда.
__________________
Ivanhoe as is..
Старый 14.02.2019, 17:23   #17  
AlGol is offline
AlGol
Участник
 
277 / 93 (4) ++++
Регистрация: 24.12.2001
Адрес: Тверь.
Цитата:
Сообщение от Ivanhoe Посмотреть сообщение
Ну т.е. по факту WTF в данном случае, что эту функцию смены кода оставили. Реально ей пользоваться можно практически никогда.
Хорошая функция (была). Правильная. И пользовались ею часто, может не на этапе обычной эксплуатации а при первоначальном вводе данных или массовых перетасовках данных.
Но похоже, если взят курс на замену натуральных ключей суррогатными, то её время подходит к концу.
__________________
Ален ноби, ностра алис.
Что означает - если один человек построил, другой завсегда разобрать может.
Старый 27.02.2019, 17:27   #18  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Давным-давно, один мальчик установил KB4492562, и все инвойсы стали показывать 4.67. Никто так и не смог разобраться, правильно это было или нет
Миниатюры
Нажмите на изображение для увеличения
Название: KB4492562.GIF
Просмотров: 119
Размер:	11.5 Кб
ID:	12228  
__________________
-ТСЯ или -ТЬСЯ ?
За это сообщение автора поблагодарили: twilight (1).
Старый 12.03.2019, 15:50   #19  
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
Версия 8.1.3, метод SSRSReportRunController.CheckBatchJobStatus() содержит следующий замечательный код:
X++:
                UserConnection userConnection;
                try
                {
                    userConnection = new UserConnection();
                    userConnection.ttsbegin();
                    // Update teh batch job status to 'Waiting'
                    select pessimisticLock firstonly * from batchJobUpdate where batchJob.RecId == batchJobUpdate.RecId;

                    if (batchJobUpdate)
                    {
                        batchJobUpdate.Status = BatchStatus::Waiting;
                        batchJobUpdate.update();
                    }

                    userConnection.ttscommit();
                }
                finally
                {
                    userConnection.finalize();
                }
Где-то после 8.1.1, при любой печати отчета, система проверяет что в системе присутствует специальный батч, который там что-то очищает и каким-то hausekeeping занимается. Проблема в том, что если этот батч когда-то был создан, а потом ушел в ошибку или в canceled, то при любой попытке печати любого отчета вы получите сообщение о том что система не может обновить запись в BatchJob, поскольку она не была выбрана в рамках транзакции. (Просто авторы кода забыли написать batchJobUpdate.setConnection(userConnection)).
Лечится это достаточно простым путем: Надо найти в вашей системе батч с именем "Report Data Cleanup" и просто его удалить. При следущей печати отчета, система прокашляется и создаст нужный батч.
За это сообщение автора поблагодарили: Vadik (1), trud (5), gl00mie (5).
Старый 12.03.2019, 18:55   #20  
ax_mct is offline
ax_mct
Banned
 
2,548 / 1091 (0) ++++++++
Регистрация: 10.10.2005
Адрес: Westlands
Цитата:
Сообщение от fed Посмотреть сообщение
Версия 8.1.3, метод SSRSReportRunController.CheckBatchJobStatus()
...
поскольку она не была выбрана в рамках транзакции. (Просто авторы кода забыли написать batchJobUpdate.setConnection(userConnection)).
Дык update есть, а select for update - там нет. Разве не забыли "for update"?
Или там насквозь хитрый batchJobUpdate.update() который сам себе write() ?

если писать batchJobUpdate.setConnection(userConnection)) то это скроет ошибку за счет нового соединения. Так?
Теги
axapta, cil, d365fo, guid, rasset, uuid, uuidv7, баг

 


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

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

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