Показать сообщение отдельно
Старый 10.03.2015, 17:30   #172  
pedrozzz is offline
pedrozzz
Молодой, подающий надежды
Аватар для pedrozzz
MCBMSS
Лучший по профессии 2015
 
164 / 218 (8) ++++++
Регистрация: 18.02.2010
Адрес: Краснодар
2012 R3 (думаю в прошлых версиях аналогично)
Если делать лукап по временной таблице на основе постоянной и при этом не вставить никаких записей во времянку, что-то типа
X++:
    InventTable                     inventTableTmp;
    SysTableLookup                  sysTableLookup  = SysTableLookup::newParameters(tableNum(InventTable), _ctrl);

    inventTableTmp.setTmp()
/*
заполняем времянку по какому-то алгоритму, но записей не нашли и ничего не вставили
*/
    sysTableLookup.addLookupfield(fieldNum(InventTable, ItemId));
    sysTableLookup.parmTmpBuffer(inventTableTmp);
    sysTableLookup.performFormLookup();
то вместо ожидаемого пустого лукапа увидим в гриде все записи постоянной таблицы
Берем напильник, чиним класс SysTableLookupBase. Заводим глобальную переменную boolean useTmpBuffer
X++:
Common parmTmpBuffer(Common _buffer = tmpBuffer)
{
    tmpBuffer = _buffer;

    //-->
    if (! prmisDefault(_buffer))
    {
        useTmpBuffer = true;
    }
    //<--

    return tmpBuffer;
}
protected FormRun formRun()
{
    //...строка 55
    //-->
    //if(useLookupValue && !tmpBuffer)
    if(useLookupValue && ! tmpBuffer && ! useTmpBuffer)
    //<--
    {
    }
    //...строка 117
    //-->
    //if (tmpBuffer)
    if (tmpBuffer || useTmpBuffer)
    //<--
}
__________________
Кононов Пётр
За это сообщение автора поблагодарили: gl00mie (5), Kabardian (4).