Добрый день.
Один из пользователей пожаловался на то, что на одной форме при открытии лукапа он сразу же закрывается. Проблема только у одного пользователя на одной форме. Только на одной терминалке.
Полезли разбираться, и нашли интересный лукап.
Дело происходит на форме накладных расходов (Расчеты с поставщиками/Обычный/Заказы на покупку/Вкладка "Покупка"/Управление накладными расходами. Поле "Код накладных расходов").
У нас лукап работает, но возник вопрос, а как? И чем думали разработчики.
Смущает, что это стандартный код.
\Forms\MarkupTrans\Data Sources\MarkupTrans\Fields\MarkupCode\Methods\lookup
X++:
public void lookup(FormControl _formControl, str _filterStr)
{
SysTableLookup sysTableLookup = SysTableLookup::newParameters(tableNum(MarkupTable), _formControl);
Query query = new Query();
QueryBuildDataSource queryBuildDataSource = query.addDataSource(tableNum(MarkupTable));
;
if (element.args().parm() != 'ReturnRecap'
&& markupTrans.ModuleType == MarkupModuleType::Cust
&& (mcrCallCenterInUse
|| tradeBrokerConfig))
{
MarkupTable::mcrLookupSalesCodes(_formControl); //Вызов лукапа 1.1
}
else
{
super(_formControl, _filterStr); //Вызов лукапа 1.2
}
sysTableLookup.addLookupfield(fieldNum(MarkupTable, MarkupCode));
sysTableLookup.addLookupfield(fieldNum(MarkupTable, Txt));
sysTableLookup.addLookupfield(fieldNum(MarkupTable, ModuleType));
queryBuildDataSource.addRange(fieldNum(MarkupTable, ModuleType)).value(enum2str(markupTrans.ModuleType));
queryBuildDataSource.addRange(fieldNum(MarkupTable, CustomPaymType_RU)).value(SysQuery::valueEmptyString());
sysTableLookup.parmQuery(query);
sysTableLookup.performFormLookup(); //Вызов лукапа 2
}
Переделали на следующий вариант:
X++:
public void lookup(FormControl _formControl, str _filterStr)
{
SysTableLookup sysTableLookup = SysTableLookup::newParameters(tableNum(MarkupTable), _formControl);
Query query = new Query();
QueryBuildDataSource queryBuildDataSource = query.addDataSource(tableNum(MarkupTable));
;
if (element.args().parm() != 'ReturnRecap'
&& markupTrans.ModuleType == MarkupModuleType::Cust
&& (mcrCallCenterInUse
|| tradeBrokerConfig))
{
MarkupTable::mcrLookupSalesCodes(_formControl);
return; // Abramov_ 11.02.2022 TSK0000129_01
}
//+ Abramov_ 11.02.2022 TSK0000129_01
/*
else
{
super(_formControl, _filterStr);
}
*/
//- Abramov_ 11.02.2022 TSK0000129_01
sysTableLookup.addLookupfield(fieldNum(MarkupTable, MarkupCode));
sysTableLookup.addLookupfield(fieldNum(MarkupTable, Txt));
sysTableLookup.addLookupfield(fieldNum(MarkupTable, ModuleType));
queryBuildDataSource.addRange(fieldNum(MarkupTable, ModuleType)).value(enum2str(markupTrans.ModuleType));
queryBuildDataSource.addRange(fieldNum(MarkupTable, CustomPaymType_RU)).value(SysQuery::valueEmptyString());
sysTableLookup.parmQuery(query);
sysTableLookup.performFormLookup();
}