Я такого метода не знаю. Но если программировать, придется чуток покорежить парочку классов.
Можно сделать более "тактичнее", но если делать "в лоб", то примерно вот так.
1. В BaseEnum
SysPickListType добавить еще один элемент. Пусть он будет называться
FieldsLabels.
2. В классе
Global добавить еще один метод, почти такой же, как и метод
pickField
X++:
static int pickFieldLabel(tableId tableId)
{
Object formRun;
Args args;
;
args = new Args(formstr(SysPick));
args.parm(strRFix(int2str(SysPickListType::FieldsLabels),2)+int2str(tableId));
formRun = classfactory.formRunClass(args);
formRun.init();
formRun.run();
formRun.wait();
if (formRun.selection())
return formRun.selection();
return 0;
}
3. В класс
sysPickList, по аналогии с методом
fillFieldsMap, добавить еще один метод:
X++:
public static client container fillFieldsLabelsMap(str _argsParm)
{
TmpSysTableField tmpSysTableField;
DictTable dictTable = new DictTable(str2int(_argsParm));
Map map = new Map(Types::Integer, Types::String);
;
if (dictTable &&
dictTable.rights() > AccessType::NoAccess)
{
tmpSysTableField = TmpSysTableField::findTableFields(tmpSysTableField, dictTable.id());
while select tmpSysTableField
{
map.insert(tmpSysTableField.ExtendedFieldId, tmpSysTableField.FieldLabel);
}
}
return map.pack();
}
4. В методе
init этого же класса добавить примерно такие строки (в блоке
switch(sysPickListType)):
X++:
//-------------
case SysPickListType::FieldsLabels :
imageRes = #imageField;
caption = "@SYS3852";
designWidth = #designLargeWidth;
if (!map)
{
map = Map::create(sysPickList::fillFieldsLabelsMap(parmTxt));
}
break;
//-------------
5. Теперь можно попробовать вызвать наш новый метод:
X++:
Global::pickFieldLabel(tableNum(InventTable));