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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 16.07.2004, 22:59   #1  
maxsmirnov is offline
maxsmirnov
экс-модератор
 
268 / 25 (1) +++
Регистрация: 08.07.2003
Адрес: Москва
Глюки SP3. Журнал инвентаризации
История одного глюка

1. Глюк, каким он стал в Ах 3.0. SP3
2. История глюка в подробностях
3. Как лечить

1. При успешной разноске журнала инвентаризации, в котором есть более одной строки с одинаковой номенклатурой, эта номенклатура не разблокируется. В InventItemLocation остается выставленной галка CountingStarted, и в последствии при любых операциях с этой номенклатурой выдается ошибка "Номенклатура '%1' блокирована на складе '%2', так как она находится в процессе инвентаризации.", хотя в процессе инвентаризации она вовсе не находится.

Сразу оговорюсь, что мы ставили SP3 на SP1, минуя SP2, т.е. м.б этот глюк появился в SP2.

2. вот такой код и по сей день можно увидеть в слое sys таблицы InventItemLocation

PHP код:
static server void updateStopCountingJournal(InventJournalTrans inventJournalTrans)

...

while 
select otherTrans
where otherTrans
.journalId      == inventJournalTrans.journalId     &&
otherTrans.itemId         == inventJournalTrans.itemId        &&
otherTrans.recId          != otherTrans.recId
{
    
otherInventItemLocation  InventItemLocation::find(inventJournalTrans.itemIdotherTrans.inventDimId);
    if (
otherInventItemLocation.recId == inventItemLocation.recId)
    {
        
doStop false//не снимать галку CountingStarted
        
break;
    }

легко заметить в эту выборку никогда ничего не попадало, т.к условие otherTrans.recId != otherTrans.recId всегда ложно
но замысел был, видимо, такой:
если в журнале есть несколько строк одной номенклатуры и одинаковым inventDimId (важно: не просто одинаковым inventDimId, а таким inventDimId который есть в InventItemLocation для этой номенклатуры. Если в InventItemLocation как обычно одинокая строка с inventDimId == "Axapta", то это условие упрощается до "если в журнале есть несколько строк одной номенклатуры"), то снимать галочку (единственную на все строки) нужно только тогда, когда будет разнесена последняя из строк.

в SP3 (или SP2? см. выше) он перекрыт слоем syp:

PHP код:
while select otherTrans
where otherTrans
.journalId      == inventJournalTrans.journalId     &&
otherTrans.itemId         == inventJournalTrans.itemId        &&
otherTrans.recId          != inventJournalTrans.recId
{
    
otherInventItemLocation  InventItemLocation::find(inventJournalTrans.itemIdotherTrans.inventDimId);
    if (
otherInventItemLocation.recId == inventItemLocation.recId)
    {
        
doStop false;
        break;
    }

теперь глюк и приобрел свои современные свойства - галочка CountingStarted вообще не снимается, если в журнале инвентаризации две строки с одинаковой номенклатурой, а в inventItemLocation только одна строка

3. Как лечить.
Например, можно после разноски всего журнала проверять inventItemLocation.

в JournalCheckPost:

PHP код:
void run()
{
InventItemLocation  InventItemLocation;

... 
разноска

// и перед ttscommit:
if ( JournalTableData.journalTable().Posted == NoYes::Yes
    
&& InventJournalTable::find(this.parmJournalId()).JournalType == InventJournalType::Count)
{
    while 
select forupdate InventItemLocation
    where InventItemLocation
.CountingStarted == NoYes::Yes
       
&& InventItemLocation.CountingJournalId == this.parmJournalId()
    {
        
InventItemLocation.CountingStarted NoYes::No;
        
InventItemLocation.update();
    }
}

ttscommit
За это сообщение автора поблагодарили: Atar (1), shamanko (1).
Старый 19.04.2006, 16:45   #2  
Atar is offline
Atar
Консультант
 
287 / 101 (4) +++++
Регистрация: 10.03.2006
Адрес: Москва
Вот уж SP4 скоро канет в лету, SP5 кое где есть, а воз и ныне там...
Старый 19.04.2006, 21:35   #3  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Сообщение от Atar
Вот уж SP4 скоро канет в лету, SP5 кое где есть, а воз и ныне там...
В SP6 исправят (обещали). Партнеры в принципе могут пока с MBS заплатку стрясти, но самим исправить, как часто бывает, и быстрее и проще
__________________
-ТСЯ или -ТЬСЯ ?
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Номер документа в ГК. Журнал инвентаризации. DreamCreator DAX: Программирование 1 21.03.2005 16:07
Мультипользовательский ввод в журнал инвентаризации OliaM DAX: Функционал 11 01.12.2004 23:43
Ax3.0 SP3 CIS: Журнал накладных и российские договора (ошибка) mpa DAX: Функционал 2 11.10.2004 15:14
Журнал инвентаризации sk45 DAX: Функционал 4 03.06.2003 12:59
Журнал инвентаризации Gustow DAX: Программирование 4 06.03.2003 09:56

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

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

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