Показать сообщение отдельно
Старый 04.03.2013, 08:40   #15  
Romb is offline
Romb
Участник
Аватар для Romb
 
79 / 22 (1) +++
Регистрация: 06.01.2004
Хм...
В общем, оказалось как всегда. Пока писал текст под чертой, параллельно проблему и решил.

Суть в том, что у нас был пересчет склада, в InventTrans записалась себестоимость.
Уж что, да как , да почему копейка в ней возникает - расследовать поздно.
Но оперативное решение - поправить InventTrans.CostAmountAdjustment у промаркированных проводок в InventTrans на одну копейку. (которые в синем квадрате)
Тогда все ошибки уходят.

Большое спасибо за участие. Надо было сразу лезть в InventTrans конечно




Снизу, что сначала хотел написать, но уже неактуально.
----------------------------------------------------------------------------------------------------
Вторичная валюта у нас отключена.

Проблема частично "решилась", но не до конца.
После безумной трассировки, решили выделить проблемные номенклатуры в другой журнал.
Включил дебаг (#if.never) отловил номенклатуры, строки с ними вынесли в отдельный журнал переноса.
В итоге исходный журнал без проблемных строк разнесся уже без ошибок.
А второй журнал с проблемными строками разнесся, но только с ошибкой "Критическая ошибка в функции LedgerBondServer_RU.addBondProrateAmountMSTSecond.".

Эту ошибку изучал, есть подозрение, что при корреспонденции "наш" метод InventTran. findBondInventTrans() отрабатывает некорректно (в случае, когда количество по складским проводкам "сопоставляется" по InventTrans.InventRefTransId не один в один, а разбивается. В нашем случае в журнале переноса в строке количество -24 , в InventTrans по InventTransId -16 и -8 (выделено на скрине снизу), а по InventRefTransId 3, 16 и 5. (выделено на скрине сверху). Вот тут то он с ума и сходит.

На очередном журнале, при повторении такого разбиения, ошибка "Не балансирует" осталась. И в логе видна эта копейка. Но теперь уже легче

X++:
public InventTrans findBondInventTrans(InventTransId _inventTransId = this.InventTransId)
{
    InventTrans             bondInventTrans;
    InventDim               bondInventDim;

    InventDim               thisInventDim = this.inventDim();

    container               dimFields = InventDimSearch::activeFields(this.inventTable().DimGroupId);
    int                     len, i;
    fieldId                 fieldId;

    boolean pastFieldId(fieldId _fieldId)
    {
        return (_fieldId == fieldnum(InventDim, InventLocationId)   ||
                _fieldId == fieldnum(InventDim, wMSLocationId)      ||
                _fieldId == fieldnum(InventDim, InventProfileId_RU) ||
                _fieldId == fieldnum(InventDim, InventRespPers)     ||
                _fieldId == fieldnum(InventDim, InventSiteId));
    }

    void findInventTrans(StatusReceipt    _StatusReceipt,
                         StatusIssue      _StatusIssue)
    {
        select firstonly bondInventTrans
            index hint TransIdIdx
            order by RecId desc
            where bondInventTrans.InventTransId         == _inventTransId               &&
                  bondInventTrans.TransType             == this.TransType               &&
                  bondInventTrans.StatusReceipt         == _StatusReceipt               &&
                  bondInventTrans.StatusIssue           == _StatusIssue
             join bondInventDim
                where bondInventDim.inventDimId         == bondInventTrans.inventDimId  &&
                      #InventDimMacros(thisInventDim, bondInventDim);
    }
    ;

    len = conlen(dimFields);
    for (i = 1; i <= len; i++)
    {
        fieldId = conpeek(dimFields, i);
        if(pastFieldId(fieldId))
        {
            thisInventDim.(fieldId) = null;
        }
    }

    switch (this.Direction)
    {
        case InventDirection::Issue:
            findInventTrans(StatusReceipt::Purchased,
                            StatusIssue::None);
            break;

        case InventDirection::Receipt:
            findInventTrans(StatusReceipt::None,
                            StatusIssue::Sold);
            break;
    }

    return bondInventTrans;
}
Миниатюры
Нажмите на изображение для увеличения
Название: Forum - ITrans - 04.03.2013.jpg
Просмотров: 428
Размер:	63.9 Кб
ID:	8099   Нажмите на изображение для увеличения
Название: Forum - ILog - 04.03.2013.jpg
Просмотров: 638
Размер:	153.3 Кб
ID:	8100  


Последний раз редактировалось Romb; 04.03.2013 в 10:08.