|
06.02.2017, 16:31 | #1 |
Участник
|
Цитата:
Сообщение от Slava Chernenko
Наткнулся на ошибку, полез смотреть откуда ноги растут, оказалось так всегда было, в смысле в 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... Может этот код где-то и существует, но я не имею ни малейшего представления, где это сейчас. |
|
09.02.2017, 17:29 | #2 |
Участник
|
Вместо утренней зарядки, перед первым запуском Аксапты, быстро удаляем кеш на компьтере. В командной строке Windows вводим:
del /s ax*.auc |
|
10.02.2017, 19:56 | #3 |
Участник
|
AX 2012 R3 \Classes\RetailTransactionServiceOrders\getCustomerOrder
AX 2012 R2 \Classes\RetailTransactionService\getCustomerOrder X++: select InventTransOrigin from inventTransOriginSalesLine where inventTransOriginSalesLine.SalesLineInventTransId == salesLine.InventTransId; |
|
|
За это сообщение автора поблагодарили: kashperuk (5). |
10.02.2017, 19:58 | #4 |
Участник
|
|
|
17.02.2017, 15:20 | #5 |
Участник
|
Табличка TMSRouteSegmentLoadLine
AX 2012 R3, к словам об игрушечной базе Отсутствие индекса и непонятный cross join к WHSLoadLine.
__________________
Sergey Nefedov Последний раз редактировалось SRF; 17.02.2017 в 15:57. |
|
17.02.2017, 18:09 | #6 |
Участник
|
Сергей, вы у себя это починили? Или это теоретическая находка?
|
|
17.02.2017, 18:23 | #7 |
Участник
|
Починили, добавили индекс по LoadLineRecId и код слегка поправили, не знаю уж какая в итоге была задумка начального запроса, но правили вот так:
X++: select count(RecId) from segmentLine //join line where segmentLine.LoadLineRecId == loadLine.RecId;
__________________
Sergey Nefedov |
|
|
За это сообщение автора поблагодарили: kashperuk (5). |
17.02.2017, 15:57 | #8 |
Участник
|
А почему там джойнится курсор с именем Line, а условие накладывается на курсор с именем loadLine? Или там по смыслу так и нужно чтобы полное декартово произведение получалось?
|
|
17.02.2017, 17:52 | #9 |
Участник
|
О том и речь, зачем.
__________________
Sergey Nefedov |
|
18.02.2017, 13:08 | #10 |
Читатель
|
RetailTransactionServiceOrders::updateCustomerOrder()
X++: salesLine.SalesQty = qty; salesLine.QtyOrdered = qty; |
|
18.02.2017, 13:20 | #11 |
Читатель
|
И еще прикольный косяк - в RetailOrderHistoryViewQuery на датасорсе RetailTransactionTable, присоединенном к SalesTable по notexists join, не хватает условия по EntryStatus != Voided, приводящий к тому, что если вы отменили транзакцию по какому-либо из Customer Order-ов, он пропадает из истории на POS.
Вообще, про это условие, похоже, не все помнят. Вот, например, в RetailTransactionServiceTransactions::addSalesOrderToResultMap() тоже забыли... |
|
18.02.2017, 23:01 | #12 |
Участник
|
Такого кода в 7ке нету в этом классе
|
|
18.02.2017, 23:04 | #13 |
Читатель
|
|
|
17.02.2017, 19:57 | #14 |
Участник
|
А сам способ проверки наличия в таблице записей через подсчёт их количества это же неаккуратненько как-то.
|
|
18.02.2017, 01:09 | #15 |
Участник
|
Цитата:
Retail запрос тоже пофиксил. |
|
|
За это сообщение автора поблагодарили: S.Kuskov (2), SRF (5). |
18.02.2017, 17:18 | #16 |
Участник
|
Я не работаю с DAX2012 и не специализируюсь на retail в предыдущих версиях.
Для собственного развития время от времени копаюсь в DAX2012. Такое впечатление, что куча мест, касающихся retail в DAX2012 это тема для daily Axapta WTF. Почему так? В предыдущих версиях для России в основе лежало решение от Коламбуся для конкретного клиента (могу ошибаться, но вроде бы для Перекрестка). В DAX2012 было заявлено, что решение для ритейла универсальное международное. Думаю, что "международное решение" это как-то выверенное на сотнях-тысячах клиентов. Что не так в "международном решении"? |
|
18.02.2017, 18:08 | #17 |
Участник
|
Это когда было решение коламбуса по ритейлу в стандарте?
А модуль ритейл, насколько я знаю, был куплен у международного партнера еще для 2009, а в 2012 его уже мс сам переписывал.
__________________
Ivanhoe as is.. |
|
18.02.2017, 22:40 | #18 |
Читатель
|
Да, верно, модуль был куплен у LS Retail для 2009-й версии
|
|
28.03.2017, 13:02 | #19 |
Участник
|
Оригинально подошли к проблеме переименования полей в D365. При переименовании поля в таблице и нажатии кнопки сохранить старое просто удаляется, а новое создается. Проблема ID наконец-то решена(о чем вроде как даже писали в what's new)
Правда данные при этом тоже удаляются, но кого это волнует. |
|
|
За это сообщение автора поблагодарили: gl00mie (2), AlGol (3), Logger (1). |
28.03.2017, 13:19 | #20 |
Модератор
|
Heavy is good. Heavy is reliable (c) Борис Бритва
Особенно удобно при рефакторинге, не правда ли ?
__________________
-ТСЯ или -ТЬСЯ ? |
|