AXForum  
Go Back   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Forgotten Your Password?
Register Forum Rules FAQ Members List Today's Posts Search

 
 
Thread Tools Search this Thread Display Modes
Old 27.03.2013, 14:17   #1  
NNB is offline
NNB
Участник
 
103 / 12 (1) ++
Join Date: 31.08.2006
Висящие проводки
Добрый день
Изредка, в результате непонятно каких действий пользователей создается след. ситуация:
в InventTrans появляются проводки у которых StatusIssue - 'Физ. зарезервировано' и TransRefId ссылаются на некий журнал переноса.
В журнале переноса соответствующие строчки были удалены.
Методы на таблицах не менялись, да и, в любом случае, ошибка появляется только изредка.
Перезагрузок не было.
У кого есть какие мысли?
Заранее спасибо
Old 27.03.2013, 15:10   #2  
andrewK is offline
andrewK
Участник
 
45 / 22 (1) +++
Join Date: 03.11.2005
Может быть строки журнала не удаляются, а происходит переименование кода журнала?
Ссылка на обсуждение
Old 27.03.2013, 19:55   #3  
ashu is offline
ashu
MCTS
MCBMSS
 
255 / 78 (3) ++++
Join Date: 24.06.2008
Кстати, довольно частая проблема. Причем начиная с версии 3.0 и вплоть до 5 встречался с разными ее вариациями.
Воспроизвести (и понять полностью) в чем причина, ни как не удавалось (хотя особо и не старались), кроме двух вариантов (которые не всегда срабатывали, только если было определенное сочетание фазы луны, давления, делал это пользователь или конс ,а не программист в дебагере и тд):
1. при удалении строк складского журнала, прерывать процедуру.
2. удаление шапки складского журнала

кроме ситуации когда реально нет строк журнала, но есть запись в инвенттранс, наиболее часто встречалась когда нет самого журнала (шапки), а есть записи строк, и соответственно инветтрансы, что тоже не гуд.

на эти случаи были простенькие джобики, которые такие случаи находили и/или исправляли, потому с такими моментами особого не парились и не уделяли внимание

Last edited by ashu; 27.03.2013 at 19:57.
Old 28.03.2013, 08:30   #4  
NNB is offline
NNB
Участник
 
103 / 12 (1) ++
Join Date: 31.08.2006
Вис пров
Особой проблемы конечно нет, но интересно
Old 28.03.2013, 10:30   #5  
Ace of Database is offline
Ace of Database
Участник
Ace of Database's Avatar
 
877 / 649 (23) +++++++
Join Date: 14.10.2004
Попробуйте следующие варианты:
1) Включите в журнале базы данных логирование удаления, обновления и переименования складских журналов. Потом, когда обнаружите зависшую проводку, из поля TransRefId проводки возьмите номер журнала. Найдите историю изменений этого журнала в журнале базе данных. Для анализа истории изменений полезно сделать небольшую модифу, которая при вставке записи в таблицу SysDatabaseLog заполняет созданное вами строковое поле стеком вызова, из которого произошло удаление или переименование журнала. Это чтобы понять, каким образом журнал исчез. В методе insert() таблицы SysDatabaseLog вставьте строку
X++:
this.Callstack = this.stackTraceStr(xSession::xppCallStack());
где Callstack - добавленное новое поле длиной 1000 символов.

На форму отображения истории журнала базы данных SysDatabaseLog выведете это текстовое поле.

2) Проверьте, не модифицирован ли у вас класс InventUpd_DeleteMovement, который отвечает за удаление складских проводок. Сравните изменения в слоях для этого класса. Проверьте, заполнены ли у зависших проводок поля TransChildType, TransChildRefId. Если поля заполнены, то это тоже подозрительно.

3) Проверьте метод delete в таблице InventJournaltrans. Он должен содержать такие строки для AX2009:
X++:
    InventUpd_DeleteMovement::newMovement(InventMovement::construct(this)).updateNow();
    if (this.JournalType == InventJournalType::Transfer && this.ToInventTransId && this.ToInventTransId != this.InventTransId)
    {        InventUpd_DeleteMovement::newMovement(InventMovement::construct(this,InventMovSubType::TransferReceipt)).updateNow();
    }
4) Через SQL Managemet Studio прямым запросом SQL проверьте, не остались ли в базе строки по журналу. Строки могут быть не видны на форме в Аксапте (например, удалили InventDim, на который ссылается строка журнала)
X++:
select * from InventJournalTrans where JournalId like '%10021234'
like нужен, если для journalId включено выравнивание вправо

5) Запросом SQL проверьте, не остался ли в базе сам журнал. Журнал может быть не виден на форме по разным причинам.
X++:
select * from InventJournalTable where JournalId like '%10021234'

Last edited by Ace of Database; 28.03.2013 at 10:38.
Old 28.03.2013, 10:37   #6  
Ace of Database is offline
Ace of Database
Участник
Ace of Database's Avatar
 
877 / 649 (23) +++++++
Join Date: 14.10.2004
Ну и на InventJournaltrans поставьте логирование изменений и удалений.
Old 28.03.2013, 10:52   #7  
Ace of Database is offline
Ace of Database
Участник
Ace of Database's Avatar
 
877 / 649 (23) +++++++
Join Date: 14.10.2004
Quote:
Originally Posted by ashu View Post
наиболее часто встречалась когда нет самого журнала (шапки), а есть записи строк, и соответственно инветтрансы, что тоже не гуд.
Проверьте, что у вас на таблице InventJournalTable в узле DeleteActions добавлена таблица InventJournalTrans, и для нее включен каскад. В стандарте по умолчанию все включено.
Old 28.03.2013, 11:04   #8  
Ace of Database is offline
Ace of Database
Участник
Ace of Database's Avatar
 
877 / 649 (23) +++++++
Join Date: 14.10.2004
Анализ истории удаления журнала или строк журнала нужен, чтобы определить, не удаляются ли где-то строки или сам журнал через вызов doDelete()
Old 28.03.2013, 11:14   #9  
Ace of Database is offline
Ace of Database
Участник
Ace of Database's Avatar
 
877 / 649 (23) +++++++
Join Date: 14.10.2004
Еще можно проверить, не менялся ли InventTransId в строке журнала в процессе ее жизни до удаления. Это совсем параноидальная проверка, но если зависают проводки, то почему бы и нет.
В стандарте изменения уже присвоенного InventTransId нигде нет. Но если у вас работало много программистов на большом навороченном проекте, то все может быть
 

Similar Threads
Thread Thread Starter Forum Replies Last Post
Складские проводки по накладным расходам. Ax 2009 Dolores DAX: Функционал 8 22.05.2012 19:42
Проводки с типом SummedUp при закрытии склада в DAX 2009 ansoft DAX: Функционал 15 20.09.2010 08:28
Заказы на перемещения и проводки в ГК в DAX2009 Starling DAX: Функционал 16 10.06.2009 11:43
Закрывающие/открывающие проводки KatyN DAX: Функционал 11 24.07.2006 16:15
Знак в форме ГК/Бухгалтерские проводки chel DAX: Функционал 7 11.03.2005 04:28

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Рейтинг@Mail.ru
All times are GMT +3. The time now is 04:27.
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Contacts E-mail, Advertising.