Тема: Ошибка SP3?
Показать сообщение отдельно
Старый 11.10.2004, 19:17   #1  
dirigente is offline
dirigente
Участник
 
50 / 10 (1) +
Регистрация: 19.11.2003
Адрес: Москва
? Ошибка SP3?
Если в параметрах Расчетов с клиентами установлена проверка кредитного лимита, то при попытке изменить (например, цену) свежесозданную строку выскакивает сообщение об ошибке:
Цитата:
Warning Сообщение (19:22:50) Значение, введенное в поле 'Оценка суммы' таблицы 'Заказы' ('1321,00') нельзя сохранить, поскольку оно изменено другим пользователем (новое значение - '1321,00'). Используйте функцию "Восстановить", чтобы подставить новое значение.
Error Сообщение (19:22:50) Невозможно отредактировать запись в 'Заказы' ('SalesTable').
Одно или более полей в записи изменено другим пользователем, или в форме выбраны не все поля. Воспользуйтесь функцией "Восстановить".
При этом если предварительно перечитать строку из таблицы (F5), то ошибки нет. Таким образом где-то после Insert в SalesLine происходит изменение значений полей estimateGross и estimateNet.
Сравнение dis и old dis слоев метода insert() класса SalesLineType:

PHP код:
public void  insert(boolean     dropInvent      false,
                    
boolean     findMarkup      true,
                    
Common      childBuffer     NULL )
{
    
InventUpd_Estimated     estimated;
    
NumberSeq               numberSeq;
    
SalesTable              salesTable;
    
container               salesEstimated;
    
AmountCur               estimate;
    ;

    if (
salesLine.inventTable().interCompanyBlockedSales() &&  salesLine.salesTable().isInterCompanyOrder())
        throw 
checkFailed(strFmt("@SYS74812"salesLine.itemId));

    
ttsbegin;

    if (
salesLine.creditNoteLine())
        
salesLine.transactionCode IntraStatParameters::find().defaultCreditNote;

    
numberSeq NumberSeq::newGetNum(InventParameters::numRefInventTransId());
    
salesLine.inventTransId numberSeq.num();

    if (!
salesLine.custAccount || !salesLine.custGroup)
    {
        
salesLine.custAccount  salesLine.salesTable().custAccount;
        
salesLine.custGroup    salesLine.salesTable().custGroup;
    }

    
salesLine.taxAutogenerated NoYes::Yes;

    
salesLine.setSalesStatus();

    if (!
salesLine.interCompanySkipUpdate  &&  salesLine.salesTable().isInterCompanyOrder())
        
this.interCompanyMirror(salesLine.salesTable());

    
this.updateSalesTable();

    if (
salesLine.salesStatus != salesLine.salesTable().salesStatus)
    {
        
salesTable salesLine.salesTable(true);
        
salesTable.salesStatus salesLine.salesStatus;
        
salesTable.update();
    }

    if (!
dropInvent)
    {
        
estimated = new InventUpd_Estimated(InventMovement::construct(salesLinefalsechildBuffer));
        
estimated.updateNow();
    }

//-> OLD DIS
   
salesLine.calcCreditEstimate();
//<- OLD DIS
   
salesLine.doInsert();
//-> DIS: Здесь ПОСЛЕ ВСТАВКИ происходит присвоение значений 
//             estimateGross и estimateNet в SalesLine!!!
//    salesLine.calcCreditEstimate();
//<- DIS

    
if (estimated)
        
estimated.updateReservation();

    if (
findMarkup)
        
salesLine.createMarkupTrans(salesLine.salesTable());

    
ttscommit;

Или дело в другом? По крайней мере в приведенном виде ошибка исчезла.

Кстати, может кто знает почему при установке/снятии 'Цена включает налог' в Заказе, эти самые estimateGross и estimateNet не пересчитываются? =0)
__________________
С уважением,
Dirigente