Показать сообщение отдельно
Старый 05.02.2018, 08:52   #8  
TalgatAb is offline
TalgatAb
Участник
 
18 / 11 (1) +
Регистрация: 31.01.2018
Сам метод работает таким образом:

X++:
public void ALA_InitSerialNum()
{
    // <Talgat 22.02.2016 9:44>
    PurchParmLine        _purchParmLine;
    PurchLine            _purchLine;
    InventDim            _inventDim, _inventDimNew;

    InventSerialId       _inventSerialId;
    InventLocationId     _inventLocationId;
    InventDimGroupId     _dimGroupId;
    //ConfigId             _configId;
    // </Talgat>
    ;

    // <Talgat 22.02.2016 9:31>

    ttsBegin;

    while select forUpdate _purchParmLine
       where _purchParmLine.ParmId == PurchParmTable.ParmId
    {
        _dimGroupId = InventTable::find(_purchParmLine.ItemId).DimGroupId;

        if (ALA_DimGroupId::find(_dimGroupId).DimGroupId)
        {
            _inventDim = InventDim::find(_purchParmLine.InventDimId);
            if (_inventDim)
            {
                if (!_inventDim.inventSerialId)
                {
                    _inventLocationId = _inventDim.InventLocationId;
                    if (ALA_InventLocationId::find(_inventLocationId).InventLocationId)
                    {
                        _inventSerialId = InventSerial::findOrCreate(_purchParmLine.ItemId, _inventLocationId, PurchParmTable.TransDate).InventSerialId;

                        _inventDimNew = InventDim::find(_purchParmLine.InventDimId, true);
                        _inventDimNew.inventSerialId = _inventSerialId;
        //                if (!_inventDimNew.configId)
        //                {
        //                    _configId = PurchLine::findRecId(_purchParmLine.PurchLineRecId).Dimension[5];
        //                    _inventDimNew.configId = ConfigTable::findOrCreate(_purchParmLine.ItemId, _configId, PurchLine::findRecId(_purchParmLine.PurchLineRecId).PurchUnit).ConfigId;
        //                }

                        _purchParmLine.InventDimId = InventDim::findOrCreate(_inventDimNew).inventDimId;
                        _purchParmLine.update();

                        while select forUpdate _purchLine
                            where _purchLine.RecId == _purchParmLine.PurchLineRecId
                        {
                            _purchLine.InventDimId = _purchParmLine.InventDimId;
                            _purchLine.update();
                        }
                    }

                }
            }
        }
    }
    ttsCommit;

    // </Talgat>
}