Показать сообщение отдельно
Старый 13.11.2017, 16:28   #6  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,867 / 3123 (112) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Странно.
Глюк проявился на форме PurchAgreement в 2012-й аксапте при редактировании условий оплаты AgreementHeaderDefault.PaymentSchedule

Для обхода бага в write датасорса вместо super() приходится вызывать свой метод, передавая в него буфер датасорса.

X++:
// pkoz 13.11.2017
public server static void writeSafe_MRC(Common _common)
{
    Common      common4Save;
    
    DictTable   dictTable;
    ;
    
    dictTable = New DictTable(_common.TableId);
    
    if (!dictTable || (!dictTable.hasRecidIdx() && !dictTable.hasSurrogateKey()))
    {
        throw error(Error::wrongUseOfFunction(funcname()));
    }
    
    ttsBegin;
    
    common4Save = dictTable.makeRecord();
    
    if (_common.RecId)
    {
        select forupdate common4Save
            where   common4Save.RecId == _common.RecId;
    }
    else
    {
        common4Save.clear();
    }
    
    buf2Buf(_common, common4Save);
    common4Save.write();
    
    ttsCommit;
    
    _common.reread();
}
Причина проблем все та же. Портится orig() значение буфера.

Кто-нибудь встречал такое на формах ?