17.02.2017, 17:52 | #221 |
Участник
|
О том и речь, зачем.
__________________
Sergey Nefedov |
|
17.02.2017, 18:09 | #222 |
Участник
|
Сергей, вы у себя это починили? Или это теоретическая находка?
|
|
17.02.2017, 18:23 | #223 |
Участник
|
Починили, добавили индекс по LoadLineRecId и код слегка поправили, не знаю уж какая в итоге была задумка начального запроса, но правили вот так:
X++: select count(RecId) from segmentLine //join line where segmentLine.LoadLineRecId == loadLine.RecId;
__________________
Sergey Nefedov |
|
|
За это сообщение автора поблагодарили: kashperuk (5). |
17.02.2017, 19:57 | #224 |
Участник
|
А сам способ проверки наличия в таблице записей через подсчёт их количества это же неаккуратненько как-то.
|
|
18.02.2017, 01:09 | #225 |
Участник
|
Цитата:
Retail запрос тоже пофиксил. |
|
|
За это сообщение автора поблагодарили: S.Kuskov (2), SRF (5). |
18.02.2017, 13:08 | #226 |
Читатель
|
RetailTransactionServiceOrders::updateCustomerOrder()
X++: salesLine.SalesQty = qty; salesLine.QtyOrdered = qty; |
|
18.02.2017, 13:20 | #227 |
Читатель
|
И еще прикольный косяк - в RetailOrderHistoryViewQuery на датасорсе RetailTransactionTable, присоединенном к SalesTable по notexists join, не хватает условия по EntryStatus != Voided, приводящий к тому, что если вы отменили транзакцию по какому-либо из Customer Order-ов, он пропадает из истории на POS.
Вообще, про это условие, похоже, не все помнят. Вот, например, в RetailTransactionServiceTransactions::addSalesOrderToResultMap() тоже забыли... |
|
18.02.2017, 17:18 | #228 |
Участник
|
Я не работаю с DAX2012 и не специализируюсь на retail в предыдущих версиях.
Для собственного развития время от времени копаюсь в DAX2012. Такое впечатление, что куча мест, касающихся retail в DAX2012 это тема для daily Axapta WTF. Почему так? В предыдущих версиях для России в основе лежало решение от Коламбуся для конкретного клиента (могу ошибаться, но вроде бы для Перекрестка). В DAX2012 было заявлено, что решение для ритейла универсальное международное. Думаю, что "международное решение" это как-то выверенное на сотнях-тысячах клиентов. Что не так в "международном решении"? |
|
18.02.2017, 18:08 | #229 |
Участник
|
Это когда было решение коламбуса по ритейлу в стандарте?
А модуль ритейл, насколько я знаю, был куплен у международного партнера еще для 2009, а в 2012 его уже мс сам переписывал.
__________________
Ivanhoe as is.. |
|
18.02.2017, 22:40 | #230 |
Читатель
|
Да, верно, модуль был куплен у LS Retail для 2009-й версии
|
|
18.02.2017, 23:01 | #231 |
Участник
|
Такого кода в 7ке нету в этом классе
|
|
18.02.2017, 23:04 | #232 |
Читатель
|
|
|
22.02.2017, 21:30 | #233 |
Читатель
|
AX2012 R3
RetailCDXSeedDataSubJob.createSubJob() - subjob.Enabled всегда Yes, хотя, если включить Retail Essentials, часть таблиц будет выключена конф. ключом, и в дальнейшем CDX будет падать при попытке их обработки. Можно было б инициировать из dictTable.enabled(), хотя бы... Но нет, да и сам этот флаг не особо проверяется. |
|
28.03.2017, 13:02 | #234 |
Участник
|
Оригинально подошли к проблеме переименования полей в D365. При переименовании поля в таблице и нажатии кнопки сохранить старое просто удаляется, а новое создается. Проблема ID наконец-то решена(о чем вроде как даже писали в what's new)
Правда данные при этом тоже удаляются, но кого это волнует. |
|
|
За это сообщение автора поблагодарили: gl00mie (2), AlGol (3), Logger (1). |
28.03.2017, 13:19 | #235 |
Модератор
|
Heavy is good. Heavy is reliable (c) Борис Бритва
Особенно удобно при рефакторинге, не правда ли ?
__________________
-ТСЯ или -ТЬСЯ ? |
|
30.03.2017, 00:37 | #236 |
Британский учённый
|
Цитата:
Сообщение от trud
Оригинально подошли к проблеме переименования полей в D365. При переименовании поля в таблице и нажатии кнопки сохранить старое просто удаляется, а новое создается. Проблема ID наконец-то решена(о чем вроде как даже писали в what's new)
Правда данные при этом тоже удаляются, но кого это волнует.
__________________
Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще. |
|
|
За это сообщение автора поблагодарили: macklakov (1). |
30.03.2017, 16:36 | #237 |
Модератор
|
Вынес часть сообщений в отдельную ветку, Как жить без средств разработки и отладки в продуктиве
__________________
-ТСЯ или -ТЬСЯ ? |
|
10.04.2017, 04:25 | #238 |
Участник
|
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 | #239 |
Участник
|
А как быстро исправить этот баг с учетом что приложение залочено?
|
|
|
За это сообщение автора поблагодарили: AlGol (2). |
11.04.2017, 19:54 | #240 |
Участник
|
На подобные вопросы MS вроде обычно отвечает - "не делайте это". Ну то есть не используйте этот функционал.
__________________
Дмитрий |
|