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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 30.03.2017, 00:37   #1  
Link is offline
Link
Британский учённый
Аватар для Link
Соотечественники
 
568 / 513 (19) +++++++
Регистрация: 25.11.2005
Адрес: UK
Записей в блоге: 9
Цитата:
Сообщение от trud Посмотреть сообщение
Оригинально подошли к проблеме переименования полей в D365. При переименовании поля в таблице и нажатии кнопки сохранить старое просто удаляется, а новое создается. Проблема ID наконец-то решена(о чем вроде как даже писали в what's new)
Правда данные при этом тоже удаляются, но кого это волнует.
Логично же, если не жалко хранить все данные в облаке, то значит и данные в кастомном поле не критичны. А может это еще одно ограничение в кастомизации приложения, зачем вам новые поля - пользуйтесь стандартными... ну или если очень нужно, просите МС добавить в стандард
__________________
Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще.
За это сообщение автора поблагодарили: macklakov (1).
Старый 30.03.2017, 16:36   #2  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Вынес часть сообщений в отдельную ветку, Как жить без средств разработки и отладки в продуктиве
__________________
-ТСЯ или -ТЬСЯ ?
Старый 10.04.2017, 04:25   #3  
skuull is offline
skuull
Участник
Most Valuable Professional
Лучший по профессии 2014
 
699 / 752 (27) +++++++
Регистрация: 08.03.2013
Адрес: ХЗ
D365O 1611
X++:
driverLog = TMSDriverLog::find(appt.ApptId, true);
driverLog.ActualStartUTCDateTime = DateTimeUtil::utcNow();
driverLog.updateDates();
driverLog.update();
Зачем проверять что файнд что-то вернул ? Лучше покажем пользователю что запись никогда не была выбрана

И второй момент, на демо данных у LoadId и TMSApptId одна и та же номерная серия, поэтому вводя аппоинтмент АХ всегда находит сушествующий лоад который никакого отношения к делу не имееет, хотя хотелось бы аппоинтмент

X++:
case #CheckInOutId:
                if (mode == WHSWorkExecuteMode::DriverCheckIn || mode == WHSWorkExecuteMode::DriverCheckOut)
                {
                    if (WHSLoadTable::exist(_data))
                    {
                        fieldValues.insert(#CheckInOutId, _data);
                        fieldValues.insert(#LoadId, _data);
                    }
                    else if (WHSShipmentTable::exist(_data))
                    {
                        fieldValues.insert(#CheckInOutId, _data);
                        fieldValues.insert(#LoadId, WHSShipmentTable::find(_data).LoadId);
                    }
                    else if (TMSAppointment::exist(_data) && TMSAppointment::find(_data).ApptRefType == TMSApptRefType::Load)
                    {
                        fieldValues.insert(#CheckInOutId, _data);
                        fieldValues.insert(#LoadId, TMSAppointment::find(_data).ApptRefNum);
                    }
                    else
                    {
                        errorMessage = "@WAX1081";
                        hasError = true;
                        break;
                    }
                    
                    if (WHSLoadTable::exist(fieldValues.lookup(#LoadId)))
                    {
                        hasError = this.validateLoadIdCheckOut(fieldValues.lookup(#LoadId));
                    }
                    else
                    {
                        errorMessage = "@WAX3626";
                        hasError = true;
                    }
                }
                break;

Последний раз редактировалось skuull; 10.04.2017 в 04:35.
Старый 10.04.2017, 07:03   #4  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,882 / 3148 (112) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
А как быстро исправить этот баг с учетом что приложение залочено?
За это сообщение автора поблагодарили: AlGol (2).
Старый 11.04.2017, 19:54   #5  
Damn is offline
Damn
Участник
 
436 / 154 (6) ++++++
Регистрация: 28.05.2003
Адрес: в глуши
На подобные вопросы MS вроде обычно отвечает - "не делайте это". Ну то есть не используйте этот функционал.
__________________
Дмитрий
Старый 12.04.2017, 04:47   #6  
trud is offline
trud
Участник
Лучший по профессии 2017
 
1,038 / 1629 (57) ++++++++
Регистрация: 07.06.2003
Записей в блоге: 1
Вот еще из новинок D365 - когда создаете индекс по умолчанию он теперь уникальный -Allow duplicates = No. А чтобы так сказать преждевременно не спугнуть разработчика, новый движок синхронизации в целях оптимизации вообще не пытается синхронизировать таблицу в окружении разработки если менялись только индексы.
Т.е. создаете индекс(не меняя никаких сво-в), тестируете, все ОК. далее заливаете на LCS, отдаете клиенту и вуаля - получаете ошибку синхронизации.
Создал по этому поводу реквест на ideas
https://ideas.dynamics.com/ideas/dyn...ions/ID0001383
Старый 17.05.2017, 14:56   #7  
mayk is offline
mayk
Участник
Аватар для mayk
 
43 / 65 (3) ++++
Регистрация: 07.03.2008
Вчера вылезло нечто странное в 2012 аксапте.

Код шёл примерно так (очень упрощенная версия)
X++:
[record1] = map.lookup(#current); 
tmpTable.value = strfmt("%1", record1.(fieldnum(RealTable, dataAreaid)))
И несмотря на то, что RealTable record1 был положен в карту абсолютно нормальным(dataAreaId заполнен, никаких select crosscompany, всё как обычно)
это вылетало с "Внутренняя ошибка номер 25".

Научный метод тыка показал, что info(record1.dataAreaId); работает и показывает код компании. А вот info(record1.(fieldnum(RealTable, dataAreaid))) вылетает.

Веселье продолжилось, дальнейшее шаманство показало что
X++:
[recordTmp] = map.lookup(#current); 
record1.data(recordTmp); // <<< копируем полученное из map'а
info(record1.(fieldnum(RealTable, dataAreaid)))
tmpTable.value = record1.(fieldnum(RealTable, dataAreaid))
работает.

Я ничего не понял.
Старый 17.05.2017, 15:10   #8  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от mayk Посмотреть сообщение
Научный метод тыка показал, что info(record1.dataAreaId); работает и показывает код компании. А вот info(record1.(fieldnum(RealTable, dataAreaid))) вылетает.
Проверьте, не является ли map'ом ваш RealTable.
коды системных полей могут отличаться в map и в таблицах, которые реально находятся под мапом.
__________________
полезное на axForum, github, vk, coub.
Старый 17.05.2017, 15:50   #9  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Интересно если в первом случае сделать fieldNum(Common, DataAreaId)?

По-идее должны быть одинаковые идентификаторы системных полей, но вдруг
Старый 17.05.2017, 16:42   #10  
SRF is offline
SRF
Участник
MCBMSS
Axapta Retail User
 
365 / 542 (19) +++++++
Регистрация: 08.08.2007
Записей в блоге: 1
Думаю это глюк с наследованием таблиц, вот пример накидал в джобике
X++:
static void InhTab(Args _args)
{
    AgreementHeader         ah;
    SalesAgreementHeader    sah;
    container               buf;
    Common                  record;
    
    select firstOnly sah;
    
    buf = [sah];
    
    [record] = buf;
    
    info(record.(fieldNum(Common, dataAreaId)));
}
Если запустить на выполнение то ошибка будет, а если поменять sah на ah, то все ок, скорее всего нужно делать для курсора явное приведение к базовому типу, тогда проблем не будет.
билд 6.3.3000.617
__________________
Sergey Nefedov
За это сообщение автора поблагодарили: mazzy (2).
Старый 25.05.2017, 11:28   #11  
mnt_dx is offline
mnt_dx
Участник
Axapta Retail User
Лучший по профессии 2014
 
1,745 / 188 (10) ++++++
Регистрация: 17.02.2011
Адрес: К Северу через Северо-Запад
Нажмите на изображение для увеличения
Название: import.png
Просмотров: 310
Размер:	68.1 Кб
ID:	11426
За это сообщение автора поблагодарили: mazzy (2).
Старый 06.07.2017, 05:57   #12  
trud is offline
trud
Участник
Лучший по профессии 2017
 
1,038 / 1629 (57) ++++++++
Регистрация: 07.06.2003
Записей в блоге: 1
инфолог тоже не пережил дигитал трансформашн

такой код в ах2012 и ниже выдавал 502 сообщения с ошибками и 502 инфо(что и ожидалось). при этом можно было скопировать содержимое одним кликом
X++:
int i;
for( i =1; i <= 502; i++) error(strFmt("line error %1", i));
for( i =1; i <= 502; i++) info(strFmt("line info %1", i));
в новой АХ(апдейт8) выдаются только 500 инфо, простой возможности копирования нет
Миниатюры
Нажмите на изображение для увеличения
Название: Info500.jpg
Просмотров: 508
Размер:	53.4 Кб
ID:	11553  

Последний раз редактировалось trud; 06.07.2017 в 06:02.
Старый 06.07.2017, 08:08   #13  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от trud Посмотреть сообщение
инфолог тоже не пережил дигитал трансформашн

такой код в ах2012 и ниже выдавал 502 сообщения с ошибками и 502 инфо(что и ожидалось). при этом можно было скопировать содержимое одним кликом
X++:
int i;
for( i =1; i <= 502; i++) error(strFmt("line error %1", i));
for( i =1; i <= 502; i++) info(strFmt("line info %1", i));
в новой АХ(апдейт8) выдаются только 500 инфо, простой возможности копирования нет
Да, с инфологом действительно все очень печально
Старый 06.07.2017, 17:00   #14  
Damn is offline
Damn
Участник
 
436 / 154 (6) ++++++
Регистрация: 28.05.2003
Адрес: в глуши
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Да, с инфологом действительно все очень печально
Ну слава богу. А то мне уж начало казаться что мне одному мягко говоря неудобен новый инфолог.
__________________
Дмитрий
Старый 19.07.2017, 05:06   #15  
trud is offline
trud
Участник
Лучший по профессии 2017
 
1,038 / 1629 (57) ++++++++
Регистрация: 07.06.2003
Записей в блоге: 1
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Да, с инфологом действительно все очень печально
Зарегистрировал "идею", кому не лень проголосуйте
https://ideas.dynamics.com/ideas/dyn...ions/ID0002243
также чтобы добавили поддержку файлов в RunBase
https://ideas.dynamics.com/ideas/dyn...ions/ID0002242

Цитата:
Сообщение от VORP Посмотреть сообщение
Но опять же, не факт что команда MCR будет править код, ведь клиенты баги не репортят, а там мало ли что кому кажется.
Кстати удивительно точно подмечено, собственно на мой взгляд все текущие проблемы AX7 вызваны подобным подходом - изначально здравые идеи верхнего уровня(практически все "новинки" AX7 очень хороши) разбиваются о совершенно "формальную" реализацию с пропуском многих мелких деталей, что делает их во многом трудно используемым или вообще непригодным.
Интересно есть ли какие-нибудь методологии позволяющие как-то бороться с таким(типа если рабочий на конвейере увидел брак, то он должен остановить конвейер, а не просто забить, так как это не его дело).
Ведь не работают же так Apple и Google
За это сообщение автора поблагодарили: mazzy (2), Logger (3).
Старый 19.07.2017, 16:00   #16  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от trud Посмотреть сообщение
Ведь не работают же так Apple и Google
Еще как
Старый 17.07.2017, 12:23   #17  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
После изменения энума ModuleInventPurchSales чтоб он был Extensible, нашли такой код в классе MCRCatalogAreaAnalysisDP, так как стал валится Compiler Warning: ExtensibleEnumInNumericalAssignment

X++:
    AmountMST cost = this.itemPrice(ModuleInventPurchSales::Invent);
    AmountMST sales = this.itemPrice(ModuleInventPurchSales::Sales);
    ...

    //Avoid division by zero
    if (this.itemPrice(ModuleInventPurchSales::Sales == 0))
    {
        mcrCatalogAreaAnalysisTmp.CogsPercent = 0;
    }
    else
    {
        mcrCatalogAreaAnalysisTmp.CogsPercent = cost / Sales;
    }
А вот как наши доблестные девелоперы пофиксили это

Нажмите на изображение для увеличения
Название: ff.jpg
Просмотров: 424
Размер:	48.0 Кб
ID:	11566

Последний раз редактировалось kashperuk; 17.07.2017 в 12:26.
За это сообщение автора поблагодарили: Stitch_MS (2), gl00mie (2), skuull (2), macklakov (1).
Старый 17.07.2017, 14:52   #18  
Stitch_MS is offline
Stitch_MS
Участник
Аватар для Stitch_MS
Соотечественники
 
396 / 478 (16) +++++++
Регистрация: 27.02.2006
Адрес: Дания
Цитата:
Сообщение от kashperuk Посмотреть сообщение
А вот как наши доблестные девелоперы пофиксили это
Выглядит так, будто доблестные девелоперы умеют писать скрипты, но не любят проверять результаты их работы.
Старый 17.07.2017, 16:03   #19  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от Stitch_MS Посмотреть сообщение
Выглядит так, будто доблестные девелоперы умеют писать скрипты, но не любят проверять результаты их работы.
Если бы дело было только в этом.
Это изменение отревьюило 2 человека.. То есть втроем, с учетом того что сам девелопер тоже правил, они не смогли нормально скобочки сосчитать, и их никак не удивила эта странная констркция со сравнением двух энумов..
Старый 17.07.2017, 21:48   #20  
skuull is offline
skuull
Участник
Most Valuable Professional
Лучший по профессии 2014
 
699 / 752 (27) +++++++
Регистрация: 08.03.2013
Адрес: ХЗ
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Если бы дело было только в этом.
Это изменение отревьюило 2 человека.. То есть втроем, с учетом того что сам девелопер тоже правил, они не смогли нормально скобочки сосчитать, и их никак не удивила эта странная констркция со сравнением двух энумов..
А сколько ещё изменений было в этом ревью ? Там же есть зависимость между длинной изменения и качеством его ревью
Теги
axapta, cil, d365fo, guid, rasset, uuid, uuidv7, баг

 


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

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

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