AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 13.05.2013, 10:38   #1  
Romb is offline
Romb
Участник
Аватар для Romb
 
79 / 22 (1) +++
Регистрация: 06.01.2004
Простановка нового (замена старого) кода аналитики InventDimId в InventTrans
Добрый день!

AX 2009
Kernel 5.0.1500.3761
Appl 5.0.1500.2985
Solution RU HRP5 5.0.1500.2116.1

Есть некоторое количество записей в InventTrans (ура, их немного) у которых стоит несуществующий InventDimId, т.е. таблица InventDim не содержит записи с таким кодом. Не могу предположить точно все множество причин такой ситуации и ее последствий, но, как минимум, во многих формах из которых можно смотреть "Проводки лота" в этом случае проводки лота и не отображаются (обычно в запросах таких форм стоит Range на InventDimId) и отчеты тоже не всегда берут такие записи.

В основном это проводки от заказов на продажу (от накладных).

Вопрос простой - что нужно сделать, чтобы правильно проставить в InventTrans новый код аналитики?

Можно ли просто:
1. из CustInvoiceTrans взять InventDim()
2. потом inventDimNew = InventDim::findOrCreate(CustInvoiceTrans.inventDim())
3. потом InventTrans.InventDimId = inventDimNew.InventDimId
4. потом InventTrans.update() (или doUpdate())

Или вообще просто скопировать CustInvoiceTrans.InventDimId -> InventTrans.InventDimId?


Благодарю.
Старый 13.05.2013, 10:45   #2  
Мартынов Дмитрий is offline
Мартынов Дмитрий
Участник
 
236 / 66 (3) ++++
Регистрация: 02.02.2004
Адрес: г. Москва
Цитата:
Сообщение от Romb Посмотреть сообщение
Добрый день!

4. потом InventTrans.update() (или doUpdate())
Конечно update()
Тогда система при этом учтет проводку в InventSum в этой аналитике.

Но судя по всему вам надо бы пересчитать InventSum заново. Ведь не известно на каких аналитиках сейчас лежат остатки по испорченным проводкам.

Это в администрировании есть механизм проверки и исправления целостности данных.
За это сообщение автора поблагодарили: Romb (1).
Старый 13.05.2013, 11:16   #3  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,437 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от Romb Посмотреть сообщение
из CustInvoiceTrans взять InventDim()
А CustInvoiceTrans ссылается на существующую комбинацию аналитик? Тогда да: "просто скопировать CustInvoiceTrans.InventDimId -> InventTrans.InventDimId"
Старый 13.05.2013, 11:28   #4  
Starling is offline
Starling
Участник
Дети Юза
 
530 / 76 (4) ++++
Регистрация: 20.10.2005
Адрес: Kiev
Цитата:
Сообщение от Romb Посмотреть сообщение

....
Можно ли просто:
1. из CustInvoiceTrans взять InventDim()
....
Будьте осторожны с таким подходом, он будет работать не всегда. Например, в случае если у вас активна партия или серийный номе, то вполне может быть:
- InventDim из CustInvoiceTrans партию не содержит.
- InventDim из InventTrans партию содержит, так как она была выбрана например при резервировании.
Используя описанный вами подход вы получите InventDim в InventTrans без партии, что может быть не корректно.

А вот придумать альтернативу я не могу. Может у вас есть первичка, в которой был номер партии напечатан, тогда его нужно будет оттуда получить и прописать в InventTrans.

З.Ы.: У меня в 2009 тоже периодически (за два года раза 2 или 3) возникали
InventTrans со ссылкой на несуществующий InventDim. Было это в переносах, причину установить так и не удалось. Решалось просто, так как вся нужная аналитика была в строке переноса.
За это сообщение автора поблагодарили: Romb (1), Logger (1).
Старый 14.05.2013, 02:26   #5  
Romb is offline
Romb
Участник
Аватар для Romb
 
79 / 22 (1) +++
Регистрация: 06.01.2004
Благодарю за ответы!
Сделал копированием кода аналитики из CustInvoiceTrans с проверкой на то, что код корректный (комбинация аналитик требуемая).
Старый 14.05.2013, 12:40   #6  
Starling is offline
Starling
Участник
Дети Юза
 
530 / 76 (4) ++++
Регистрация: 20.10.2005
Адрес: Kiev
Цитата:
Сообщение от Romb Посмотреть сообщение
Благодарю за ответы!
Сделал копированием кода аналитики из CustInvoiceTrans с проверкой на то, что код корректный (комбинация аналитик требуемая).
Это тоже не 100% гарантия, так как при резервировании вы можете указать партию отличную от той, которая привязана к CustInvoiceTrans.

Я бы добавил к этой проверке следующее:
1. Не возникает ли у вас отрицательного остатка по выбранной аналитике после того как вы ее к InventTrans привяжете. Это поможет если у вас отрицательный склад запрещен. В вашей ситуации это вполне может быть.
Старый 14.05.2013, 13:35   #7  
Daiver is offline
Daiver
Участник
Самостоятельные клиенты AX
 
177 / 44 (2) +++
Регистрация: 19.07.2005
Адрес: Москва
Также может быть ситуация когда на один CustInvoiceTrans будет несколько InventTrans, например были разные партии.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Связь WMSOrderTrans и inventTrans IKA DAX: Программирование 4 09.04.2013 20:03
Замена inventDimId во всех таблицах fialka DAX: База знаний и проекты 7 20.08.2007 16:29
Создание нового запроса на основе старого matew DAX: Программирование 1 23.07.2007 13:52
Связь таблиц InventTrans и PurchLine Pustik DAX: Программирование 2 25.11.2004 12:23
Автоподстановка номенклатуры при создании новой аналитики JohNick DAX: Функционал 0 02.06.2004 13:49

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 02:02.