Показать сообщение отдельно
Старый 12.12.2006, 11:24   #1  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5803 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
! args.dataset() и args.record().tableid - могут ли отличаться?
В методе класса InventDimCtrl_Frm_Lookup.callerFormDatasource() обнаружил странный код:
X++:
FormDataSource callerFormDatasource()
{
    if (! fr.args())
        return null;

    // Don't check on 'fr.args().record()' alone
    // Try test for dataset instead
    if (! fr.args().dataset())
        return null;

    // Could be a buffer which isn't inserted yet
    if (! fr.args().record().tableId)
        return null;

    return fr.args().record().dataSource();
}
Что означают вторая и третья проверка? Из комментариев можно понять так, что для буфера (табличной переменной), который еще не вставлен в таблицу SQL, поле tableId может быть пустым, при этом args.dataset() откуда-то знает нужное значение этого поля. Это что, паранойя разработчиков, навеянная глюками в ранних версия Аксапты, или реально встречающаяся ситуация? Кто-нить с таким сталкивался?
PS. И почему вообще второй if раскрашен, как коментарий?..